This commit is contained in:
2021-07-22 19:17:06 +00:00
parent e7ce4f98fc
commit db0c931937

View File

@@ -7,11 +7,31 @@
## BIG PICTURE TO RELEASE
June
Workorder*, quote*, pm* implementations
Big outstanding things by time:
Joyce needs early access as possible to quotes pm etc for reporting
schedule has no new reporting implications or at least no regular ones
migrate early and often also important as need a lot of testing and feedback early on this one, at least need to find huge stuff that alters design of wo etc
Misc blizzard of things that came up
Schedule form
Quote
PM
Reports
Docs
Add-ons
Installer
Rockfish / licensing good to go level
July
quote*, pm* implementations
migrate
Customer UI / CSR techs ui accept to wo etc
Schedule form
Review all v8 cases top to bottom and triage / implement
V8Migrate completion
All stock reports (and schedule ones)
@@ -21,7 +41,7 @@ Aug
Load testing
Beta testing
Rockfish / Back end infrastructure
Biz decisions about hosting etc
Biz decisions about pricing, licensing, hosting etc
Sept 1st
Release!
@@ -38,10 +58,28 @@ Coded by importance
3 means nice to have but not sure or not urgent may even remove
## E2E TESTING
todo:1 cypress testing for load testing etc
has to be done manually, there is a good idea in the comment here:
https://stackoverflow.com/a/51197403/8939
basically, init a new vue ui project, commit it, then add e2e plugin then recommit to see what all changed so can then manually remove that from main project
Look at moving to a standalone Cypress setup, why bother with the one built into vue ui, it doesn't seem to offer any benefits to doing it alone
this way can be fully up to date etc
https://www.cypress.io/
Remove from vue ui project but make copy of tests first
then make new project folder for this and put the tests there
install standalone cypress and go it without vue stuff
TODO: Need stress test for client that can generate workorders in parallel for load testing
## V8MIGRATE
todo:1 IMPORT workorders FROM V7 needs to be coded once the cases are completed so it can be tested thoroughly and ongoing
note that v7 wostatus needs to be dual imported into both new wostate and new woitemstatus separately
Joyce suggested making it optional to have the import-v7 tag
think it over and the pros and cons of having it, maybe some notes are there on it
I might have been thinking it's a quick way to mass delete any old stuff no longer wanted in the new version for users
or maybe to know an item was imported in case of support maybe or issue?
todo:1 Add a "tag with" field that defaults to v7-import in the migrator UI selections so that users can set what they want or clear it entirely
todo:1 Need a way to diagnose fail to migrate for remote user's db, there will be a lot of initial issues importing for people until we hit all the edge cases so...
@@ -70,7 +108,6 @@ todo:1 workorders - need to set billing and service address from customers on mi
## CLIENT MISC ITEMS
-3 case 3864 Joyce misc item - Layout improvement:
Summary (workorder overall) - looks like now can enter unlimited amount of text..... BUT if only using for four or five words, its still showing ALL this blank space across the entire screen
Tags - takes up entire row even though none or only one tag.
@@ -255,80 +292,71 @@ todo:2 ability to turn off attachments for every form it's on via customize ui
todo:2 ability to turn off the wiki for every form via customize ui
TODO: if keep seeing slowdown typing in large text fields maybe check if it's running rules endlessly and slowing things down that way
TODO:3 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?
todo:3 reportClientMetaData in gzapi has DefaultLocale property in it which is just part of the language, can it be removed?
it might be buggy if there is no dash in the language? Is that a thing?
check at server how it's used
todo: confirm erase database should reset all id values if they aren't reset already so that future data doesn't result in a new PO starting at 29000 due to huge db trial seed prior
todo: Popup notes now AlertNotes - a whole section of important notes at the top that shows *all* notes combined like customer popup and contract notes
that shows all the time in the workorder UI with an option to minimize maybe or something
This would be better than popup as it's always visible not dismissed and less ui fuckery to boot.
See case 3855
todo: use trans key "AlertNotes" in place of any popup notes variation
todo: poitem edit form currency fields when updated by server on save lose currency format and show as raw decimal number
todo:2 confirm erase database should reset all id values if they aren't reset already so that future data doesn't result in a new PO starting at 29000 due to huge db trial seed prior
todo:2 use trans key "AlertNotes" in place of any popup notes variation
todo:1 poitem edit form currency fields when updated by server on save lose currency format and show as raw decimal number
maybe currency control does not respond to underlying data changes it didn't initiate?
seems maybe it's ok in main form but that's maybe just because it doesn't change values automatically
todo: datatable single select mode, is this even a thing?
if not then I should remove that code, it's just taking up space and complicating shit for no reason
todo: many stock reports could be made now for most objects
todo: Whats new in this release popup or link tied into the update process of the client??
todo: it's a bit hard to click on a single digit or character link in a data table
todo:3 datatable single select mode, is this even a thing?
if not then I should remove that code, it's just taking up space and complicating shit for no reason
todo: Whats new in this release popup or link tied into the update process of the client??
how about a link in the About page to the change long on our web server instead?
todo:2 it's a bit hard to click on a single digit or character link in a data table
e.g. serial number 1 of a po
can the region be expanded with invisible text or something?
todo: WHEN HAVE WORKORDER FORM customer alert notes
todo: remove widget now? Back and front (comment out obvs not remove entirely)
todo: cypress testing for load testing etc
has to be done manually, there is a good idea in the comment here:
https://stackoverflow.com/a/51197403/8939
basically, init a new vue ui project, commit it, then add e2e plugin then recommit to see what all changed so can then manually remove that from main project
Look at moving to a standalone Cypress setup, why bother with the one built into vue ui, it doesn't seem to offer any benefits to doing it alone
this way can be fully up to date etc
https://www.cypress.io/
Remove from vue ui project but make copy of tests first
then make new project folder for this and put the tests there
install standalone cypress and go it without vue stuff
todo:2 remove widget now? Back and front (comment out obvs not remove entirely)
## SERVER MISC ITEMS
todo: Joyce was having trouble getting a license request email response from rockfish when trialing
todo:1 Joyce was having trouble getting a license request email response from rockfish when trialing
it appeared it was not sending the confirmation check email, double check what the fuck
todo: seeder is putting customer users in as techs in sample workorders (on scheduled user for sure at least)
todo: seeder customer and head office accounts now login show "No features have been enabled for your account"
todo: notify on server boot?? (general notify to admin user or whatever?)
todo:1 seeder customer and head office accounts now login show "No features have been enabled for your account"
todo:1 notify on server boot?? (general notify to admin user or whatever?)
or on shutdown?
todo: start testing with real licensing scheme ("notfound")
todo:1 start testing with real licensing scheme ("notfound")
make sure automatic license updates work properly
todo: notify on user login?
todo:3 notify on user login?
todo: report template NAME uniqueness validation rule: can this be unique by ayatype only?
todo:1 report template NAME uniqueness validation rule: can this be unique by ayatype only?
seems weird that no two reports of any kind can have same name
also the default comes up as "report" sb blank with pre-broken rule saying name is required or at least uniquify it with a timestamp or something
todo: tag based notifications need to be rechecked if tags change, not just the field(s) in question for that notification
todo:1 tag based notifications need to be rechecked if tags change, not just the field(s) in question for that notification
for example, user makes a workorder with closeby date and tags but tags don't match when saves
user realizes missed a critical tag, adds it and saves; notification should then check again if can apply whatever it was
Use SameTags = NotifyEventHelper.TwoObjectsHaveSameTags(proposedObj.Tags, currentObj.Tags); to make it easy (workorder complete by)
todo: //TODO: Iterate all notification tagged items, use the one with the MOST matching tags
todo:1 //TODO: Iterate all notification tagged items, use the one with the MOST matching tags
see how contract labor done in workorder, idea is it iterate from the subscription with the most numerous amount of tags to least in order to ensure that the most specfic tag set is matched first
todo: custom required rules only apply to new records!!
todo:1 custom required rules only apply to new records!!
todo: Contract Duplicate throws exception at server (id attempted to be set, probably forgot to set copy to null id)
todo:1 Contract Duplicate throws exception at server (id attempted to be set, probably forgot to set copy to null id)
probably not an issue anymore
todo: Reports need to generate under a file name that is informative (this applies to every object)
todo:1 Reports need to generate under a file name that is informative (this applies to every object)
This is because it will be a common case to need to email them to customers or other users or whatever and it is very helpful to know what it is by name alone.
i.e. a workorder should generate a report that can be saved as "Workorder_1" or whatever,
perhaps uses localized name of object but then processed to strip out spaces and case etc (file-name-ify it)
@@ -336,25 +364,25 @@ todo: Reports need to generate under a file name that is informative (this appli
Although, if you think of it, doing the same workorder again *should* just overwrite the existing one as it will be identical or at least more up to date so
perhaps no need for a nonce
todo: server log needs to indicate time zone it's logging in at boot so can understand the log entry times vs real world times
todo:1 server log needs to indicate time zone it's logging in at boot so can understand the log entry times vs real world times
todo: update to latest postgres portable and document how to do it as well or a link to how to do it
todo:1 update to latest postgres portable and document how to do it as well or a link to how to do it
todo: errors are inconsistent some use "error" some use "code" to mean the same thing
todo:2 errors are inconsistent some use "error" some use "code" to mean the same thing
this is likely becuase "code" is used in the outer wrapper and "error" is used in the individual "details" validation errors
however it would be much cleaner if it was the same thing at all levels
Settle on "Code" only, change "error" to "code"
some things are producing {message:"blah",target:"blah",error:"blah"}
controller apierror
and validation errors are : {message:"blah", target:"blah", code:"blah"}
todo: server boot log should show exact .net framework version in use, currently shows nothing so if there is a bug fix release or something we'd not know for support
todo:1 server boot log should show exact .net framework version in use, currently shows nothing so if there is a bug fix release or something we'd not know for support
NOW
....
todo: Error at the devops server just looking at gold contract:
todo:1 Error at the devops server just looking at gold contract:
2021-03-26 18:21:36.8769|ERROR|SERVER|Error=>System.NullReferenceException: Object reference not set to an instance of an object.
at AyaNova.Biz.ContractBiz.PopulateVizFields(Contract o, List`1 contractOverrideTypeEnumList, Dictionary`2 preTrans) in C:\data\code\raven\server\AyaNova\biz\ContractBiz.cs:line 531
@@ -403,17 +431,19 @@ What up with this and can it be blocked from logging / something simpler logged
at AyaNova.Biz.JobsBiz.ProcessJobsAsync() in C:\data\code\raven\server\AyaNova\biz\JobsBiz.cs:line 178
todo: is there a way to tell if other connections are being used to AyaNova db
todo:3 is there a way to tell if other connections are being used to AyaNova db
like a utility or they are fucking around and it's affecting performance etc
Yes: The following query returns the active connections:https://www.postgresqltutorial.com/postgresql-copy-database/
SELECT pid, usename, client_addr
FROM pg_stat_activity
WHERE datname ='dvdrental';
Maybe this is a periodic housekeeping job??
LATER
......
todo: Changes to allow in place updates of server without erasing data:
todo:1 Changes to allow in place updates of server without erasing data:
(Note: this is a 1 due to probbaly needing some stuff in place (source language) *before* release or it will become a nightmare after release)
Needs to be supporting this early as possible so that upon release we can easily make changes without breaking existing setups or forcing complex actions
how to add locale keys in future after release without erasing all data?
Ideally I'd like to continue on to just edit the json translation files and the server looks for missing items and adds them automatically
@@ -423,12 +453,12 @@ todo: Changes to allow in place updates of server without erasing data:
Stock locales can just be completely replaced at any time, custom ones need a fixup,
Custom locales should include where they came from (which language) so can more easily add new keys
Schema updates in place not require full delete
todo: figure out method to determine all translation keys actually used and remove unused ones entirely as they will show in the Translation ui and don't want to confuse people
todo:1 figure out method to determine all translation keys actually used and remove unused ones entirely as they will show in the Translation ui and don't want to confuse people
Note: can do a search in Code editor at client for ay.t( and it will show all the translation keys fetched in code for the most part other than grid columns
can click in results and copy all to text which could then be processed to find all unique values??
Or, just exercise the whole app and all lists and then can pull from the local cache in the browser!!!
todo: NOTIFICATION after the fact
todo:3 NOTIFICATION after the fact (PROBABLY JUST DOCUMENT THIS IS HOW IT WORKS)
what happens when a user subscribes to a notification after an object was created
for example if a unit has a contract and they subscribe to contract expiring they won't get notified about units unless they are edited and saved
*after* the user subscribed
@@ -439,24 +469,24 @@ todo: NOTIFICATION after the fact
It might have to run through those and subscribe in the user, maybe a static op on a *Biz object that you call and say "subscribe this user to all subs" and it iterates
the biz objects one by one and sets as appropriate??
todo: GetWorkorderSerial/name from leaf nodes
todo:2 GetWorkorderSerial/name from leaf nodes
traverse up the tree and fetch the serial number
once coded fixup in purchaseorderbiz::getasync MIGRATE_OUTSTANDING bit
todo: tag search in picklist, does it support more than one tag? I forget
todo:1 tag search in picklist, does it support more than one tag? I forget
no, no it doesn't. Hmmm... fuck
maybe they can enter unlimited tags as long as they have a ..before each one?
Users may need to "triangulate" on to an item by multiple tags
todo: unit meter reading event?
todo:2 unit meter reading event?
TODO: //MIGRATE_OUTSTANDING comment tag
TODO:2 //MIGRATE_OUTSTANDING comment tag
search for this comment tag as it will contain items that could not be done until other items were migrated first
The tag will contain the description for each
todo: many biz objects are not using new PUT methodology
todo:2 many biz objects are not using new PUT methodology
Might be because new methodology assumes complete PUT object as a entire replacement not a partial update
some of these objects (User) do partial updates so....
might be that they don't need it but for consistency should check into it
@@ -504,16 +534,9 @@ CURRENTLY DOING:
AFTER ABOVE ITEMS AND HAVE SUBSTANTIALLY COMPLETED WO
todo: IMPORT workorders FROM V7 needs to be coded once the cases are completed so it can be tested thoroughly and ongoing
note that v7 wostatus needs to be dual imported into both new wostate and new woitemstatus separately
Joyce suggested making it optional to have the import-v7 tag
think it over and the pros and cons of having it, maybe some notes are there on it
I might have been thinking it's a quick way to mass delete any old stuff no longer wanted in the new version for users
or maybe to know an item was imported in case of support maybe or issue?
todo: circle back to big list of discovred misc items above and fix them (arghh, but nice to have been completed)
TODO: Need stress test for client that can generate workorders in parallel for load testing
------------------------------------------
@@ -916,9 +939,7 @@ todo: CYPRESS TEST DATE / TIME / DATE_TIME controls switched back to vuetify one
https://github.com/cypress-io/cypress/issues/7404
https://github.com/vuetifyjs/vuetify/issues/10988#issuecomment-726089949
TODO: //MIGRATE_OUTSTANDING comment tag
search for this comment tag as it will contain items that could not be done until other items were migrated first
The tag will contain the description for each
todo: Schedule form
- This one is big but requires the data to be there so as soon as implement enough things that are scheduleable then do this
@@ -934,74 +955,6 @@ todo: can beta test at this point
todo: Document in user manual all form controls with instruction on how to use the various controls etc
- "Anatomy of a AyaNova Form"
WORKORDER UI
todo: Investigate Workorder structure and datagrid see case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3768
Likely that workorder grids inside will not be full blown custom datagrid I wrote but just a vanilla v-data-table control since there is likely no need for the full customization shit
todo: workorder UI layout stuff (TTM!! Don't re-invent the wheel!)
There's been a lot of ideas about wo floating around and considered, but at the end of the day what I have works so maybe try to meld
into what I have the new concepts and see what comes out. Support a rich wo UI on big screens and scroll around UI on phone maybe.
some notes:
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
Basically (based on RI) it boils down to don't make the user go up to the workorder item level when they can go sideways directly to an alternate child of woitem
i.e. going from parts to labor shouldn't require going up a level
All workorder in one document and just really really tall? (people bitch about RI requiring too many navigation steps to get to shit)
Header and items in one document then bottom in seperate pages?
Is it going to be far easier to code this bitch if I have all the workorder data at hand or..?
How does WBI handle all this because it's kind of the poster child for RAVEN
Workorder is one of those things that may require different views for phone and tablet and laptop etc
Kind of like two views, tiny phone and anything larger
On a PC people will want and expect it to look as much like v7 workorder as possible, maybe that's still a valid layout
just tweaked to work better as a web app a bit but theoretically I could almost duplicate that layout with the tools I have
Consider UI in this as well, will need to decide at least what is visible when
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
How to add items, like new woitem?
send to server get back new object?
lots of biz rules and stuff need to happen, want to minimize load at client
but lots of data back and forth is not ideal
maybe request a woitem and get it back?
what exactly needs to be processed in the wo when items are added / removed?
math / totalling?
simple calcs sb client doable
this will drive what has to happen.
Need to go over all wo features and factor them into this decision properly
The whole idea of a completed section of a wo and stuff, is that dropped due to TTM or still viable?
maybe can pick out the best new features of that which can be integrated into existing design rather than re-inventing the wheel
Here is an overview: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3412
How best to be able to service LoanUnits on a workorder? [UPDATE: added shadow units feature]
Just make them Units with extra properties exposed if type of loaner?
This seems simplest, but what will it effect?
Hard to make them serviceable if they are an alternate table of source for what's being repaired as that breaks a lot of other code or adds exceptions
Customer is then who exactly because it's fundamental to a lot of wo functionality?
from a biz perspective isn't it like you are your own customer when you service your own equipment that you loan out?
Does Serial field need to be numeric, could it be text instead?
prompted by case 3428 saying that it's hard to deal with constant conversion to text for UI etc
plus, I'm thinking it opens door to textual scheme like appending -A or whatever to a wo.
or, is that a display issue?
Calling something "serial" implies it's unique but it isn't, maybe I should call it "number" instead or "ID" or something?
INFO: did a test workorder with ALL fields filled out heavily and one woitem, exported from db entire graph based on detailed report so every line was every item repeated
still only 84kb and it's a lot bigger than any typical wo in v8 would be as it will be far more efficient without having to repeat lines flatly
so I think size of object is a non-issue really from a practical standpoint.
UI
idea: UI reflects tentativeness state of object:
The UI doesn't imply something is done by changing it fully until the save is completed.
This serves two purposes:
1) user knows at a glance what isn't saved yet and will know it's waiting for save clearly, hopefully leading them to save more often,
2) client doesn't need to track invisible shit behind the scenes, can more easily do patch updates right off UI source
e.g.:
if deleted a row in parts, that row doesn't disappear but rather shows crossed out, maybe grayed out but still there until save to indicate it's tentative status
if added a row, shows green or something or bold or asterisk, (can style with css based on state) until saved
problems:
how to handle regular fields that are changed (that's a lot of field data to track for changes)?
Maybe client keeps a virgin copy of the original wo for comparison
periodically does a compare and flags differences on updates?
(this would also help to serve as an Undo maybe?)
todo: Documentation POST "REALITY"