# Gantt flagship · round 2 · 2026-10-18

Frank chose **G1 Ledger** (all of G1a–G1f + G1p), then asked: *"Does G1 give me the countdown for factories? Do I still get all of the dashboard content? The Gantt pop-up is very small — the dialog box isn't big enough."*
Answer in boards: yes, yes, and the pop-up is now a 960px peek that holds every real field.

- Sheet: https://gantt.pina-brand-006-rj-laravel-admin.pages.dev/ · artboards `/canvas/` · round 1 kept at `/r1/` + `/r1/canvas/`
- Source: `r2/src/` (`r2data.py` per-order detail + today's dashboard data · `peek.py` hover preview + large peek · `dash.py` dashboard · `r2pages.py` views · `r2boards.py` · `r2_build.py` · `contact.py`), re-using the round-1 renderers in `src/` unchanged. Shots `r2/shots/` (28), canvas `r2/canvas/`, `r2/contact-sheet.png`.
- Truth: `phase-2/truth/TRUTH-GANTT-DASHBOARD.md` (new) + TRUTH-ORDERS §5–§6.
- **Dashboard boards live in `gantt/r2/` (D1–D3), not `flagships/dashboard/`**: one build, one deploy, and the dashboard's countdown and load widgets are the same components as the Gantt views they link to. Move them if the dashboard becomes its own flagship.

## 1. Truth summary (read, not guessed)
- The old gantt has **no hover at all**. A cell click opens a modal: per piece, every step with **Action Date · Due Date**, an expanded **component table (Component · Bought + source · Expected or reason · Status · Arrived)** under INCOMING COMPONENTS ARRIVAL, and live courier tracking on SHIPMENT-IN-PROGRESS (`gantt-order-details.blade.php:428-579`).
- **36 real field groups per order** (≈ 60 scalar fields) across gantt-grid, gantt-detail, phase-summary(.all, include=phases), orders/due, the component timeline, fabric-overdue alerts, tickets, notes, special handling, hand-finish assignments and QC photos. The r1 hover card showed 8 of them.
- The old grid **hides lateness**: 0.2 cells stop at the factory due (prod 4496: coloured to 14 Oct, blank after).
- The dashboard today has **five blocks**: W1 Quick Order Search (collapsed) · W2 Queue Health (super admin, collapsed) · W3 Order Countdown & Staff Needed (open; 5 day columns → factories → grouped pills, Copy all + per factory, 订单/逾期 badges) · W4 OVERDUE COMPONENTS (supplier cards, Contacted) · W5 STAFF NEEDED (4 tiles + Copy). No charts, no KPIs.
- Prod today (Mon 19 Oct, Shanghai day): 24 订单 · 15 逾期; staff 0·0·0·0; queue 0 pending · 22 failed; 1 overdue component (SVBCHK #4521).

## 2. What changed from r1
| | r1 | r2 |
|---|---|---|
| Gantt page | G1 + G2 + G3 as three directions | **one page, three views**: Orders (G1, all states) · Factories (G2) · Countdown (G3), same toolbar and URL state |
| Hover | 11-line card | **4-line preview**: id · customer · factory · EXPRESS / step + since / factory due + days / pieces + fabric |
| Click / Space | pin the card | **large peek, side sheet `--sheet-w-xl` 960px**, grid live on the left, J/K walk rows |
| Peek content | — | header (id, customer, status, EXPRESS, R, retailer, combo, paid, in manufacturing) · actions (Open order · Raise issue · Cloud print · Copy for WeChat · ⋯ 4 prints, send phase summary, send hand-finishing slip, Cloud order, phase summary link, QC photos, copy countdown line) · status band (now + since + day N · factory due + lateness, per group when groups differ · next step · factory / hand-finish house) · the order's bar · **Pieces** (piece, group, garment, fabric code + name, factory, due, hand finish, now) · **Steps** (every step, action time + due; one column per garment group, per piece when pieces diverge) · **Components** (5 old-modal columns, reasons in words) · rail: fabric overdue (Contacted) · issues · special handling · notes · tracking |
| Long data | — | K3/K4: 4 pieces, 2 groups with different dues, 6 components, alert, 2 tickets, 2 special handling, 3 notes — body scrolls, header + status stay; nothing clipped |
| Countdown copy | approximate | **byte-true**: `逾期：↵FRR↵5 Days --- 4496-1-2-3`, `今天要发：`, `周X要交货：`; a toast replaces `alert()` |
| Staff needed | example values | prod values (0·0·0·0) |
| Dashboard | not drawn | **D1–D3**: W1–W5 with today's prod data + **Factory countdown** (days → factories → counts, links Countdown view) + **Factory load** (14-day heat, links Factories view); stale > 30-day pills grey |

Peek size: **960 × full height** (1440 hero: 960 × 852). Checked zoomed: K1 holds 4496's full record with no scrolling; K3/K4 (long) and K5 (hand finishing) scroll inside the body with every cell unclipped.

## 3. Open questions (labelled options)
1. **Peek width** — A: 960 (`--sheet-w-xl`, drawn; two-column body, no scroll for a normal order) · B: 760 (`--sheet-w-lg`, one column, always scrolls) · C: centered dialog 1100 (hides the grid).
2. **Dashboard collapse defaults** — A: keep today's (Quick Search + Queue Health collapsed) · B: inline search input + queue numbers in the header bar (drawn, same height as collapsed).
3. **Stale overdue on the dashboard** (pieces 118–740 days over at FRR, C, WZ, W, FX) — A: show grey, keep in Copy (drawn) · B: collapse behind "N stale" · C: exclude from Copy all.
4. **Hand-finish house** — F3.5 drawn as the house in `order_assigned_hand_finish_factories.factory_id`; confirm which factory codes are hand-finish houses.
5. **Factory load numbers** — the heat uses the r1 fixture's prod-shaped volumes; live numbers need `order_assigned_factories` start/end per piece (no capacity field exists; heat is relative to each factory's own peak).
6. **One peek read** — the peek is 4 reads today; add `admin.orders.gantt-peek` (needs backend) or accept a staged load (header + status first).

## 4. Needs backend (unchanged from r1, plus one)
gantt-grid rows: factory_due_at, current_step, is_express · from/to window · `/orders/due` horizon > 3 · factory capacity · **new:** one gantt-peek read (fields 1–36).

## 5. Truth notes
People invented (customers, note authors, retailer brand names). Order ids, factory codes, supplier codes, fabric codes, step titles, ticket subcategory, special-handling text and countdown/staff/queue numbers are prod shapes (MCP 2026-10-18). 4503's second garment group and its long-data extras (late lining, reasons, extra tickets/notes) are a stress fixture on a real shape.
