p00002/PseudoCode.txt
2024-09-07 07:52:09 -04:00

72 lines
6.2 KiB
Plaintext

Alpha 0.01 Create couchdb/pouchdb databases as well as redux flow and access to django authentication/user management API (Status - WIP)
start
load index.html automatically into a login page
After login is succesful use security token to pull list of access and permissions information
From this point on to load to pouchdb any new database use project access id + user access token
Each project has an id which is required to find it in the couchdb and unexpired access id requried to read it
# I am not sure how I am going to synchronize security per project information with django server which has all the security
# information - most probably every 15 minutes django will contact couchdb and update the access tokens for each project
# since they are just certificates it should be pretty quick
# I will also investigate use of a common authenticator like oauth
Now user has their security paradigm loaded we need to load what they can see based on their clearance
play intro animation
While playing intro animation initiate pouchdb from couchdb and throw connection error if cannot pull from couchdb
From pouchdb initialize state and load redux
Check length of companies array in projects registry
This is a sanity check as each user should be part of at least one company and this list should not be empty
Else exit program and let user know that their security information could not be pulled (contact admin)
From redux check length of projects array in projects registry with filter for currentSelectedCompanyId
This is a sanity check as each user should be part of at least one project and this list should not be empty
Else exit program and let user know that their security information could not be pulled (contact admin)
Open project document using currentSelectedProjectId in dashboard
Load security tokens from API for project/company/tenant management django cloud app
Dashboard should contain a pull down for current company
Dashboard should contain a pull down for current project filtered based on company
Dashboard should have a new company button if they are cleared to created companies (otherwise don't show button)
Dashboard should contain a new project button based on company selected if they are cleared to create projects (otherwise don't show button)
Dashboard should contain a button for managing/viewing selected project
Dashboard should contain a button to manage company security if cleared (othewise no button)
Dashboard should contain a botton to manage PMO security if cleared (otherwise no button)
This concludes initial load - At this point user have following options
-Can select company or add a new company and activate it as selected company (if companyAdmin - otherwise new company is greyed out )
-Can select project or add a new project into company project registry for the company (if companyAdmin - otherwise new project is greyed out)
-If has permissions can initiate roles and responsibilties module for tenant adminitration to exit dasboard to go to tenant security module
-If has permissions can initiate roles and responsibilities module for company administration to exit dashboard to go to company security module
-Can chose to manage selected project and exits to that projects management module
Project Management Modules are dynamically created as each project has a different management
paradigm associated with project management model template. Each project has two different databases
meta-data database with contains relations based project management model as well as security. And another
unstructured document for each "leaf" in WBS structure. This allows flexibility to be managed on
schema created in metadata. That is to say each atomic work package at end of of WBS tree is a free form
document that can contain many data types including attachments, pictures,...
-Once in project management module we have different layout and options loaded based on management module template chosen during creation
-All KPIs and reporting of relations is built dynamically as each "object" of WBS tree only contains parents. Reason for multiple parents is that
an object can be related multiple objects. Objects are created based on project management model chosen.
Alpha 0.02 Use user profile model to load company/project dashboard as per user profile
Instead of writing to console, write to logs
Load with new project window a selector for template
Template will contain project schema for NoSQL for data that will be captured - Template will be versioned
Template will contain task definitions, relation definition, methodology and reporting framework
Template will also be mother of project specific workers, actioners, collectors and other artifacts
Create default template which is "DITSWBS instance configuration" project
Proces expected as follows:
-Since we don't have cloud instantiation defined yet user logs into dev DITSWBS environment
-User logs in
-If no company defined default admin will create the first company
-If no project is defined it will default to initial project which is configuration of DITSWBS
-If both company and project is defined user will default to last used company/project combination or to the default
-User presented with project dashboard defined as per template used
-User continues to work through drilling down this dashboard or selects different company/project pair (if user pulls down company change selector, upon selection project selector pops up. If user selects another project in same company this is only one step of selecting project. Cannot commit selections without both company and project being defined as selection)
Alpha 0.03 Create default project management model (PMP6) and couchdb database for PModels
Alpha 0.04 Synch django with couchdb for list of projects and security paradigm
Alpha 0.05 Create company form with upward sync
Alpha 0.06 Project creation form using PMP6 model as default with upward sync
Alpha 0.07 Create initial project management pages for a project created using PMP6 model
At this point admin can create users in django and projects created with PMP6 model will appear django as well as new database in couchdb (user has full rights to do everything)
...
Alpha 0.49 Create production build for react WBS app container
Alpha 0.50 Create container deployment scripts for kubernetes
Alpha 0.51 Create cton