diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 3eaa6cf7..f78ffc4e 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -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"