parity(docs): record D13 — retail storefront preserved but out of scope
The owner ruled that the reference also ran a retail storefront (B2C
single-customer shop) and that the wallet, cashback and
ConfigStatic['percent'] belong to it. These are preserved exactly as they
are: nothing deleted or disabled on either side, no parity work, listed in
the matrices with status "preserved — out of current scope" and no gap or
work row. Shared surfaces (product, variant, price, order, customer) need
the owner's approval before a change that could reach the storefront.
Classifying the endpoints for that split surfaced a counting error in the
Phase 0 inventory: routes/admin.php has 151 live explicit routes, not the
117 recorded, so the reference total is 412 and not 369 (logged DOC-01).
get-analytics-tak reads SingleCustomerOrders, so it is a storefront route
despite its neutral name (logged DOC-02).
Of the 412 reference endpoints, 109 are retail storefront, 15 are web.php
dev/ops closures, and 288 remain in scope (218 admin + 70 B2B app).
[ref: henza_server/routes/{admin,api,customer,site,web}.php]
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
024e3dd045
commit
c71574b1d2
@@ -73,17 +73,50 @@ the *target* has something bank-like, it is an intentional addition, not a gap.
|
||||
|
||||
| Metric | `henza_server` | `apps/api` |
|
||||
|---|---|---|
|
||||
| Routes / endpoints | **369** (admin 215, api 70, customer 44, site 30, web 10) | **179** |
|
||||
| Routes / endpoints | **412** (admin 249, api 70, customer 48, site 30, web 15) — corrected, see below | **179** |
|
||||
| Controllers | 46 | 25 |
|
||||
| Models | 57 files (34 migrated tables + ~28 legacy Django-era tables) | 29 Prisma models |
|
||||
| Enums | PHP static arrays | 14 Prisma enums |
|
||||
| DTO / validation | **zero FormRequests**, all inline, several endpoints unvalidated | 8 DTO classes; most admin bodies untyped `Record<string, unknown>` |
|
||||
| Seeders | 1, **empty** | `prisma/seed.ts` — user types, 144 rids, admins |
|
||||
|
||||
The 369 → 179 drop is expected, not automatically a gap: the reference counts
|
||||
The 412 → 179 drop is expected, not automatically a gap: the reference counts
|
||||
`Route::resource` expansions, ~28 dead legacy tables, a `site.php` storefront and
|
||||
a `web.php` that the monorepo replaces with its own apps. **Which of the 369 are
|
||||
genuinely unmapped is Phase 1 / Phase 2 matrix work**, per route group.
|
||||
a `web.php` that the monorepo replaces with its own apps. **Which of the in-scope
|
||||
routes are genuinely unmapped is Phase 1 / Phase 2 matrix work**, per route group.
|
||||
|
||||
**⚠️ Count correction (2026-09-22).** The **369** reported throughout Phase 0 is
|
||||
**wrong**; the real total is **412**. Recounting the
|
||||
live routes (excluding the 6 commented-out ones, expanding `Route::resource` ×7
|
||||
and `Route::match(['get','post'])` ×2) gives **412**. The error was in
|
||||
`admin.php`: §3.6 of `_inv-ref-server.md` recorded 117 explicit routes where the
|
||||
file actually has **151**, so admin is **249**, not 215. Verified with
|
||||
`grep -E "^\s*Route::(get|post|…)" | grep -v "^\s*//"` per file.
|
||||
|
||||
| File | Explicit | `match` ×2 | `resource` ×7 | Total |
|
||||
|---|---|---|---|---|
|
||||
| `admin.php` | 151 | 0 | 14 → 98 | **249** |
|
||||
| `api.php` | 61 | 1 → 2 | 1 → 7 | **70** |
|
||||
| `customer.php` | 18 | 1 → 2 | 4 → 28 | **48** |
|
||||
| `site.php` | 30 | 0 | 0 | **30** |
|
||||
| `web.php` | 13 | 1 → 2 | 0 | **15** |
|
||||
| **Total** | | | | **412** |
|
||||
|
||||
**Scope split (D13, 2026-09-22).** The retail storefront is preserved but out of
|
||||
scope, so the 412 divide as follows:
|
||||
|
||||
| Group | Endpoints | Scope |
|
||||
|---|---|---|
|
||||
| Admin panel — B2B | 218 | ✅ Phase 1 |
|
||||
| B2B mobile app (`api.php`) | 70 | ✅ Phase 2 |
|
||||
| Retail storefront — customer API (`customer.php`) | 48 | ⏸️ preserved, out of scope |
|
||||
| Retail storefront — public site API (`site.php`) | 30 | ⏸️ preserved, out of scope |
|
||||
| Retail storefront — admin management (wallet 6, `single` 15, `comment` 9, `get-analytics-tak` 1) | 31 | ⏸️ preserved, out of scope |
|
||||
| `web.php` dev/ops closures, price cron, redirects | 15 | ⏸️ out of scope (dead/dev) |
|
||||
| **Total** | **412** | **288 in scope · 124 out** |
|
||||
|
||||
**109 of the 412 are retail storefront**; 15 more are `web.php` dev/ops. Full
|
||||
classification with evidence: `DECISIONS.md` § D13.
|
||||
|
||||
### 2.2 Core business logic — where each rule lives
|
||||
|
||||
@@ -238,7 +271,7 @@ in `HomeView` and `DashboardView` only.
|
||||
|
||||
## 5. What Phase 0 did NOT determine (goes to Phase 1 / Phase 2)
|
||||
|
||||
- Route-by-route mapping of the reference's 369 backend routes onto the target's 179.
|
||||
- Route-by-route mapping of the reference's 412 backend routes (288 in scope after D13) onto the target's 179.
|
||||
- Field-by-field comparison of request/response shapes per endpoint.
|
||||
- Per-view form/validation/table comparison for the ~69 live admin views.
|
||||
- Whether the target's gold-price implementation matches `ProductVariant.php:183-190`
|
||||
|
||||
Reference in New Issue
Block a user