docs: add Texan roster (real names + LUP employee ids), login person picker, optional profile identity fields; update plan + protocol order

This commit is contained in:
Satyam Rastogi
2026-05-29 02:53:51 +05:30
parent eb0f600ee0
commit 670b33c69b
3 changed files with 140 additions and 24 deletions
@@ -14,8 +14,32 @@
**Problem (audit):** the same people exist under three incompatible ID schemes; cross-module lookups silently fail; Owner #2 has two names; admins have placeholder names; subcontractor tasks reference non-existent ids (`owner_001`, `ADM01`).
**Decision:** unify on the `MOCK_USERS` scheme (auth + `projects` already use it):
- Owners `own_001` (Justin Johnson), `own_002` (Diana Reeves); Admins `a1` (Adam Admin), `a2` (Amanda Manager), `a3` (Arthur Director); Field agents `e1``e5`; Sales/personnel `p1` (Jesus Gonzales), `p2` (Sarah Sales); Contractor `con_001`; Subcontractors `sub_001``sub_005`.
**Decision:** unify on the `MOCK_USERS` id scheme (auth + `projects` already use it), with **realistic Texan names**, a **unified `LUP-####` employee-ID scheme**, and a shared demo password (`password`). Canonical roster (single source of truth):
| id | Role | Name | empId | Login type | Login id | Password |
|----|------|------|-------|-----------|----------|----------|
| own_001 | OWNER | Justin Johnson | LUP-1001 | owner | justin | password |
| own_002 | OWNER | Diana Reeves | LUP-1002 | owner | diana | password |
| a1 | ADMIN | Wade Hollis | LUP-1010 | employee | LUP-1010 | password |
| a2 | ADMIN | Darlene Brooks | LUP-1011 | employee | LUP-1011 | password |
| a3 | ADMIN | Roy Schaefer | LUP-1012 | employee | LUP-1012 | password |
| p1 | SALES_REP | Jesus Gonzales | LUP-1030 | employee | LUP-1030 | password |
| p2 | SALES_REP | Sarah Calloway | LUP-1031 | employee | LUP-1031 | password |
| e1 | FIELD_AGENT | Cody Tatum | LUP-1040 | employee | LUP-1040 | password |
| e2 | FIELD_AGENT | Hannah Reyes | LUP-1041 | employee | LUP-1041 | password |
| e3 | FIELD_AGENT | Travis Boone | LUP-1042 | employee | LUP-1042 | password |
| e4 | FIELD_AGENT | Shelby Greer | LUP-1043 | employee | LUP-1043 | password |
| e5 | FIELD_AGENT | Dalton Pruitt | LUP-1044 | employee | LUP-1044 | password |
| con_001 | CONTRACTOR | Mike Brennan | LUP-3001 | contractor | mike | password |
| sub_001 | SUBCONTRACTOR | Carlos Mendoza | LUP-2001 | subcontractor | carlos | password |
| sub_002 | SUBCONTRACTOR | Maya Patel | LUP-2002 | subcontractor | maya | password |
| sub_003 | SUBCONTRACTOR | Dwayne Boudreaux | LUP-2003 | subcontractor | dwayne | password |
| sub_004 | SUBCONTRACTOR | Jennifer Castillo | LUP-2004 | subcontractor | jennifer | password |
| sub_005 | SUBCONTRACTOR | Greg Alston | LUP-2005 | subcontractor | greg | password |
Names are **denormalized** across the store (teamMembers, tasks, kanban activity, DISPATCH_REPS) and some components, so the rename is a **repo-wide string replace** of each old name → new (old names are distinctive), plus setting names/empIds on the source people records. `resolvePerson(id)` is the go-forward single source.
**Login page:** the "Quick Demo Access" row becomes a **per-role person picker** — clicking a role (Admin/Agent/Sub-Con) expands the list of people in that role; clicking a person auto-fills the correct login id + password (and can sign in). Single-person roles (Owner) stay one-click.
**Changes:** remap `orgMembers[].userId` and all subcontractor-task references (`assignedBy`/`actorId`/`senderId`) to canonical ids; reconcile names/emails (Owner #2 = Diana Reeves everywhere; real admin names; consistent Justin email); add a `resolvePerson(id)` selector returning `{ id, name, email, role }` from a single merged index.
@@ -126,7 +150,7 @@ Status set (replaces flat Assigned/In Progress/…), **each transition carries a
Every person (employee **and** subcontractor) gets a two-layer `profile`, surfaced through a self-service **User Details** page (all roles, including owners) and an owner-facing **Employee/Subcontractor Details** view.
**① Self section** (person edits; owner can view): preferred name, photo, phone, alt contact, address, emergency contact; short bio, years of experience/since-date, languages; self-declared specialties + **equipment carried** (e.g., tarp, ladder rack, drone); availability/service areas. Subcontractors also: company name, license #, insurance/COI + expiry, W-9 status.
**① Self section** (person edits; owner can view): preferred name, photo, phone, alt contact, address, emergency contact; **optional identity fields — nickname, pronouns, gender, sex (all optional)**; short bio, years of experience/since-date, languages; self-declared specialties + **equipment carried** (e.g., tarp, ladder rack, drone); availability/service areas. Subcontractors also: company name, license #, insurance/COI + expiry, W-9 status.
**② Company section** (owner/admin edits; **private to owner/admin — not shown to the person**): company bio / internal notes ("reliable in storms, keeps a tarp on the truck"); internal status/tags (preferred / probation / do-not-use); **skill scores** (see below); pay/commission terms; hire date; manager.