This commit is contained in:
2021-05-31 19:18:12 +00:00
parent d0a60b6a06
commit c234a08127

View File

@@ -55,6 +55,12 @@ todo: workorders - need to set billing and service address from customers on mig
## CLIENT MISC ITEMS
todo: Seeding UI keep track of timing and later down the road when firmed up, provide estimate (average server will take):
2021-05-31 10:26:45.4801|INFO|Seeder|Small level sample data seeded in 27 seconds
2021-05-31 10:47:07.3417|INFO|Seeder|MEDIUM level sample data seeded in 2 minutes and 13 seconds
2021-05-31 10:56:04.9450|INFO|Seeder|LARGE level sample data seeded in 4 minutes and 17 seconds
HUGE:???
todo: need to track fetched keys vs used keys so can tell if fetched a key that I don't need or stopped using due to code change
todo: need to track fetched keys that don't exists, should bomb immediately so I can remove them, they will eat up traffic for no useful purpose!!
@@ -149,6 +155,10 @@ todo: after post to server check if this still happens:
Ayanova requires javascript is showing now all of a sudden on requests as if it's trying to serve app stuff from the server !?
refresh login and first response is the raw html page with noscript showing
maybe not even an issue, it does need that page after all
TODO: if keep seeing slowdown typing in large text fields maybe check if it's running rules endlessly and slowing things down that way
profile?
a timer that delays processing until typing stops??
...................................................................................................................................................................
todo: reportClientMetaData in gzapi has DefaultLocale property in it which is just part of the language, can it be removed?
@@ -342,47 +352,18 @@ todo: many biz objects are not using new PUT methodology
CURRENTLY DOING: RELEASE TESTING - try on all devices
CURRENTLY DOING: workorder round two electric boogaloo
state of things, re-prioritize
TODO: Seed huge bombing after seed large on devops, testing adding Command Timeout=90 to connection string:
8 21:54:26.8532|INFO|AyaNova.Api.Controllers.LicenseController|Database erase completed
2021-05-28 21:54:32.2582|INFO|Seeder|Seeding data, level Large, time zone offset -7
2021-05-28 21:54:32.2626|INFO|Seeder|Erasing Database "AyaNova"
2021-05-28 21:54:32.3971|INFO|Seeder|Database erase completed
2021-05-28 21:54:36.6075|INFO|Seeder|Seeding LARGE sample data....
2021-05-28 22:02:56.6949|INFO|Seeder|LARGE level sample data seeded in 8 minutes and 20 seconds
2021-05-28 22:02:56.7065|INFO|Seeder|Seeding completed successfully
2021-05-28 22:02:56.7065|INFO|Seeder|Seeder: setting server state back to Open
2021-05-28 22:14:29.1470|INFO|AyaNova.Api.Controllers.AuthController|User "AyaNova SuperUser" logged in from "::ffff:172.18.0.1" ok
2021-05-28 22:15:40.5695|INFO|AyaNova.Api.Controllers.AuthController|User "Mac Strosin - SalesLimited" logged in from "::ffff:172.18.0.1" ok
2021-05-28 22:52:25.7845|INFO|AyaNova.Api.Controllers.AuthController|User "AyaNova SuperUser" logged in from "::ffff:172.18.0.1" ok
2021-05-28 22:52:41.1257|INFO|AyaNova.Api.Controllers.LicenseController|Erasing Database "AyaNova"
2021-05-28 22:53:16.7618|ERROR|SERVER|Error=>Npgsql.NpgsqlException (0x80004005): Exception while reading from stream
---> System.TimeoutException: Timeout during reading attempt
at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
at AyaNova.Util.DbUtil.EraseTableAsync(String sTable, NpgsqlConnection conn, Boolean tableHasNoSequence) in C:\data\code\raven\server\AyaNova\util\DbUtil.cs:line 498
at AyaNova.Util.DbUtil.EmptyBizDataFromDatabaseForSeedingOrImportingAsync(ILogger _log) in C:\data\code\raven\server\AyaNova\util\DbUtil.cs:line 474
at AyaNova.Api.Controllers.LicenseController.RemoveAllData(String acceptCode) in C:\data\code\raven\server\AyaNova\Controllers\LicenseController.cs:line 268
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2021-05-28 23:05:05.2347|INFO|BOOT|AYANOVA SERVER 8.0.0-alpha.109 BOOTING
OTHER TODOs
todo: read only mode (login as limited role) can add task list, maybe other stuff
todo: workorderitemlabor new record stop date sb +1 hour
todo: implement name cache for populateviz with type and id so it can work from memory where possible
e.g. taxcodes likely get reused all over the place so querying for them constantly is wasted time and overhead
todo: stop hiding one line tables in wo form, need them for the extra ui stuff they bring
show as a line where the table would be??
But..then why not just show one line table instead??
todo: mark for deletion with ONE record and no table?? how does that work?
keeping a single row as for above would help with this
todo: seeder stock data / translations: loanunit "Units" have extraneous "rate" in them, i.e. "Hourly rate", sb just "Hourly"
todo: LoanUnit edit form add "*Cost" fields to UI
todo: part request
link to open po, delete button in grid? both?
@@ -390,70 +371,38 @@ todo: part request
delete / undelete
po opener
todo: viz fields display in edit part of form when only one record, but hide when multiple as they show in the table instead??
show as a line where the table would be??
But..then why not just show one line table instead??
todo: strip all *viz fields from object before sending over the wire from client to server
Setting their value to undefined stops them being sent so do that, but remember they then need to be updated on the return record
See the header save for working example, others will be easier since they set *all* fields on return unlike header which is a bastardized one
todo: why does server send isdirty to client, isn't that just a client thing?
Client can set it on initial fetch
todo: bugbug read only mode (login as limited role) can add task list, maybe other stuff
todo: seeder stock data / translations: loanunit "Units" have extraneous "rate" in them, i.e. "Hourly rate", sb just "Hourly"
todo: workorder main data lists, flesh out, finish links from related objects
todo: "DispatchFull" and "DispatchLimited" roles MUST be renamed to "ServiceFull" and "ServiceLimited" to match other roles and intent
dispatch is a subset of a service manager job
Rename at both ends and all translations and docs as well.
todo: strip all *viz fields from object before sending over the wire from client to server
Setting their value to undefined stops them being sent so do that, but remember they then need to be updated on the return record
See the header save for working example, others will be easier since they set *all* fields on return unlike header which is a bastardized one
todo: biz rules like date precedence etc
mirrored at server end too
todo: mark for deletion with ONE record and no table?? how does that work?
keeping a single row as for above would help with this
todo: test and confirm can duplicate workorder and it works properly
TODO: test new from scratch wo regularly
todo: subrights test
todo: Need a preset default for the workorder customization, right now it's just barfing up all fields
however this may be more related to the sample data generation because by default it maybe should show all fields
for my testing purposes but once ready to add the complexity setting feature to the data generation this could
also be used to carry over to when they go to use it, i.e. it *doesn't* erase the form field customizations or reset them
todo: is it really feasible to duplicate a workorder? What about all the side effects?
maybe if not actually saved yet just returned as copy??
todo: should be able to create a new workorder for a customer from that customers menu (same with other objects that have an identifiable customer)
this was in v7 (from main grid not inside object but can't replicate that so this instead)
todo: New wo link from related objects like Customer, Unit etc replicates v7 feature from grid
todo: r4eporting - need to add pre-caching code (for the few ENUM lists there are) and populate *Viz throughout graph to workorder before testing printing code.
OVERALL
- then full in front end and flow out to back end as required, remove any backend that was a defunct evolutionary path so no cruft left around
many UI affecting cases, some bigger than others, almost none though are deal breakers in terms of just putting all the controls on first then refining
so can go whole hog on adding controls and stuff, but make sure that they are all dealt with as hideable wherever possible and in some cases need to add
a hideable for entire collection object (i.e. can hide all of outside service so it never shows etc)
Don't forget Viz fields as well
- Keep working on front and back responds to front needs as I go
- load and stress test on client
This one really needs a e2e test that works and will hammer it so we can run that from multiple locations
todo: subcontractor not seeing prices but still able to make workorder case (not determined how this would work yet as do not want user being able to look at network traffic and see costs etc)
HOLD off on this until hit the cases where it's mentioned so working with exact specs not speculation (HA!)
leaning toward a different model perhaps as it may only be a particular subset???
(Or, if it's just hiding cost fields then just don't populate viz them. Viz fields can be safely set to anything really)
#####################################################################
=================== WORKORDER TODO / ON HOLD ========================
todo: workorderitemlabor new record stop date sb +1 hour
todo: remember, some users should not even have data sent from the server / scrubbed and not affect updating.
for example a user may not be able to see part costs so that should not even be sent over the wire
workorder will have to handle that as necessary and expect sometimes data is not forthcoming
system to handle contractor who isn't supposed to see costs it's easy to hide them in the ui but they must
not be sent over the wire either otherwise any savvy person could just view the prices and costs easily by going to developer mode and watching the traffic
todo: make sure all rules are mirrored at both ends (like date precedence etc)
todo: signature: report helper display signature and form ui control to capture /display signature
TODO: Test address / units select alternate when have units working
TODO: Sequence field sb hidden by default, most won't want it I'm guessing
@@ -461,9 +410,16 @@ TODO: Sequence field sb hidden by default, most won't want it I'm guessing
it's got an overwhelming number of fields in it,
really will need that simple or complex mode trial data seeding feature talked about
TODO: if keep seeing slowdown typing in large text fields maybe check if it's running rules endlessly and slowing things down that way
profile?
a timer that delays processing until typing stops??
TODO: Need stress test for client that can generate workorders in parallel for load testing
CASES TODO:
Some initial workorder cases to do
583 - add unit address fields to viz populate but only show them when reportdata selected as UI doesn't consume them
1362 - convert scheduled user to labor (case is to do en-masse but also I need to implement this individually as well)
1465 - several subcontractor / tech limited restriction features in this case
1467 - text1,text2 etc to show in "Warranty" area of Unit display info (however I have not coded or even thought of / decided on any v7 style warranty info section yet so double case here)
1746 - Turn a Part on a workorder into a Unit for the customer on that same workorder