76 lines
4.4 KiB
Markdown
76 lines
4.4 KiB
Markdown
# PROGRESS — Reference Parity Project
|
||||
|
|
|
|||
|
|
> Read this file FIRST at the start of every session and after every `/compact`.
|
|||
|
|
> Rules live in `CLAUDE.md` (workspace root). Method lives in the `reference-parity-audit` skill.
|
|||
|
|
|
|||
|
|
## Current state
|
|||
|
|
|
|||
|
|
| Field | Value |
|
|||
|
|
|---|---|
|
|||
|
|
| **Phase** | Phase 0 — Inventory (read-only) |
|
|||
|
|
| **Branch** | `parity/phase-0` |
|
|||
|
|
| **Status** | ✅ COMPLETE — **at the gate, waiting for user confirmation** |
|
|||
|
|
| **Next step** | User answers Q1–Q5 below → finalise `PROTECTED.md` → branch `parity/phase-1-admin` → build `01-ADMIN-MATRIX.md` |
|
|||
|
|
| **Blocked on** | user answers to Q1–Q5 |
|
|||
|
|
| **Last updated** | 2026-09-21 |
|
|||
|
|
|
|||
|
|
## Phase checklist
|
|||
|
|
|
|||
|
|
- [x] P0.1 — All 3 reference folders readable (`henza_server`, `henza_admin`, `henza_pwa`)
|
|||
|
|
- [x] P0.2 — Branch `parity/phase-0` + `docs/parity/` created
|
|||
|
|
- [x] P0.3 — Inventory all 7 projects → `_inv-*.md` (8111 lines total) → consolidated in `00-INVENTORY.md`
|
|||
|
|
- [x] P0.4 — Mapping tables, missing list, extra list (`00-INVENTORY.md` §2–4)
|
|||
|
|
- [x] P0.5 — Draft `PROTECTED.md`
|
|||
|
|
- [ ] **P0.6 — GATE: user confirms PROTECTED list + answers Q1–Q5** ← HERE
|
|||
|
|
- [ ] Phase 1 — Admin parity (branch `parity/phase-1-admin`, `01-ADMIN-MATRIX.md`)
|
|||
|
|
- [ ] **GATE:** "Admin parity is complete and tested. Shall we move on to the apps (user-app & user-app-v2)?"
|
|||
|
|
- [ ] Phase 2 — Apps parity (`02-APPS-MATRIX.md`, both user apps)
|
|||
|
|
- [ ] Phase 3 — Work through `ISSUES.md` (only when user asks)
|
|||
|
|
|
|||
|
|
## Open questions blocking Phase 1
|
|||
|
|
|
|||
|
|
| # | Question | Proposed answer |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Q1 | Reference leaves all ~215 admin routes unauthenticated (`henza_server/routes/admin.php:12,272`). Target enforces JWT + 144 rids. Strict parity = remove auth. | Keep target's stricter auth as an accepted deviation (`PROTECTED.md` §D) |
|
|||
|
|
| Q2 | The brief's gold-banking checklist (buy/sell, deposit/withdraw, transfer, KYC levels, sockets, payment callbacks) does not exist in the reference — it's a jewellery e-commerce system. | Audit the domain the reference actually has (`00-INVENTORY.md` §0) |
|
|||
|
|
| Q3 | 5 reference user-app routes missing from BOTH target apps: `/report`, `/report/detail`, `/ChildOrder`, `/customerChoice`, `/complete_profile`. ~5 screens × 2 designs + backend. | In scope for Phase 2, or deferred? |
|
|||
|
|
| Q4 | 20 defects in `henza_pwa` + 18 in `henza_admin`. Replicate or log? | Log, don't replicate the broken/destructive ones (`PROTECTED.md` §F) |
|
|||
|
|
| Q5 | Stray `gold-banking-monorepo/user-app-v2/` at repo root (only `package.json` + outdated `vite.config.ts`, ignored by pnpm-workspace). | Delete, or leave? |
|
|||
|
|
|
|||
|
|
## Key context (survives context loss)
|
|||
|
|
|
|||
|
|
- **Domain correction:** the reference is a **gold-jewellery B2B/B2C e-commerce**
|
|||
|
|
system, not a gold bank. No buy/sell order book, no spread, no deposit/withdraw,
|
|||
|
|
no P2P transfer, no KYC levels, no daily limits (only `gram_level`), no payment
|
|||
|
|
callback route, no cron, no websockets. See `00-INVENTORY.md` §0.
|
|||
|
|
- **The gold price formula** (Phase 1 row #1) —
|
|||
|
|
`henza_server/app/Models/ProductVariant.php:183-190`: `+extra%` → `+7%` margin →
|
|||
|
|
`+9%` VAT **on the non-metal portion only** → `×grams` → `floor(/1000)*1000`.
|
|||
|
|
Three superseded commented-out variants above it apply VAT to the whole price —
|
|||
|
|
do **not** port those.
|
|||
|
|
- **A large prior port already happened** — see `docs/ADMIN-PORT-PLAN.md` and
|
|||
|
|
`docs/CHANGELOG-PORT-HISTORY.md` (80 views, 25 Nest modules, 29 Prisma models,
|
|||
|
|
154 admin routes, 144/144 rids). Prior port notes **no view was ever visually
|
|||
|
|
verified in a browser**.
|
|||
|
|
- **Stack changed across the port:** Laravel→NestJS/Prisma, Vue2/Vuesax→Vue3/antd.
|
|||
|
|
Port behaviour, not code style.
|
|||
|
|
- **Reference scale is inflated:** 541 admin `.vue` files but only ~69 reachable
|
|||
|
|
(rest are Vuexy template demos); 9 reference router files are dead (not imported);
|
|||
|
|
~28 legacy Django-era DB tables have no migrations.
|
|||
|
|
- **v1 ⇄ v2 logic gaps** (5, all v2 behind v1) are parity work, not design:
|
|||
|
|
`ISSUES.md` MON-01, V2-01..05.
|
|||
|
|
|
|||
|
|
## Inventory files (Phase 0 working files)
|
|||
|
|
|
|||
|
|
| File | Scope | Lines |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `_inv-ref-server.md` | henza_server | 1313 |
|
|||
|
|
| `_inv-tgt-api.md` | apps/api | 1179 |
|
|||
|
|
| `_inv-ref-admin.md` | henza_admin | 1705 |
|
|||
|
|
| `_inv-tgt-admin.md` | apps/admin-panel | 1261 |
|
|||
|
|
| `_inv-ref-pwa.md` | henza_pwa | 1178 |
|
|||
|
|
| `_inv-tgt-userapp.md` | apps/user-app | 612 |
|
|||
|
|
| `_inv-tgt-userappv2.md` | apps/user-app-v2 | 700 |
|
|||
|
|
|
|||
|
|
Consolidated into `00-INVENTORY.md`. Issues found: `ISSUES.md` (26 entries).
|