[CLAUDE] Docs: chốt Session phase 2 wrap-up — B12-B14 PE detail polish iterate
Tổng hợp 3 commit từ `378c993` → `d2306b8` (B12-B14) sau wrap-up `6e7a6db`.
KHÔNG cắt narrative cũ — thêm row STATUS, TL;DR HANDOFF, block migration-todos,
append session log (rule §6.5).
Files:
~ docs/STATUS.md
- Last updated phase 2 + Phase summary cập nhật 8→9 PE phase enum
+ Recently Done: 1 row B12-B14 polish (commit SHA + chi tiết narrative
đầy đủ context)
~ docs/HANDOFF.md
- Last updated phase 2 + TL;DR Session phase 2 prepend với 3 batch
+ 4 cảnh báo Session 12+ bổ sung (8-11): isSelected per-quote BE field
legacy, winner column logic, loading overlay scope, useEffect deps risk
~ docs/changelog/migration-todos.md
+ Session phase 2 done block với 3 task tick (B12-B14 commit SHA)
~ docs/changelog/sessions/2026-05-07-2359-pe-workspace-ux-overhaul.md
+ Append "Session phase 2" section với 3 batch chi tiết (B12-B14) + bug
log + stats cumulative phase 2
Skill: KHÔNG update (no skill-relevant changes — pure FE polish).
Memory: KHÔNG add mới (rule UAT skip-verify đã update mid-session).
Tests: 83 pass (no test changes — UAT iter mode rule §7).
Verify: dotnet test 83 pass · git status clean · push pending.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -1,6 +1,40 @@
|
||||
# HANDOFF — Brief 5 phút cho session tiếp theo
|
||||
|
||||
**Last updated:** 2026-05-07 23:59 (Session S10-11+++++++ wrap-up — **PE Workspace UX overhaul đầy đủ. 23 commit. 83 test pass. UAT iteration mode active từ S11.**)
|
||||
**Last updated:** 2026-05-08 00:30 (Session phase 2 wrap-up — **B12-B14 PE detail polish iterate. 3 commit FE-only. 26 commit total session 2026-05-07. 83 test pass. UAT iter mode active.**)
|
||||
|
||||
## TL;DR Session phase 2 (08/05 — B12-B14 polish iterate sau wrap-up `6e7a6db`)
|
||||
|
||||
User UAT live tiếp tục, áp rule strict verify khi rename/remove (lesson hotfix CI 0ae3fe2).
|
||||
|
||||
- **B12 (`378c993`)** PE detail polish 5 changes:
|
||||
- "Lưu" no-close (chỉ toast + invalidate sync, KHÔNG đóng workspace)
|
||||
- "Xóa phiếu" red bottom button CHỈ Bản nháp (soft-delete IsDeleted=true)
|
||||
- Bỏ header bar workspace mode "Sửa header"/"Xóa"/"Đóng" (chuyển hết xuống bottom action bar)
|
||||
- Section 4 column header: `s.supplierName` (master NCC name) thay `displayName`
|
||||
- Section 3 row chặn xóa NCC khi đã có quotes + tooltip "xóa báo giá trước"
|
||||
- **B13 (`e320027`)** InfoTab auto re-edit + pencil active visual:
|
||||
- useEffect watch `[autoEdit, canEdit, ev.id, ...]` → re-trigger edit khi pencil click phiếu khác
|
||||
- Sync values từ ev mới (tránh stale state)
|
||||
- Pencil "sáng lên" active state (`bg-brand-100 + ring`) khi `editingRowId === p.id`
|
||||
- **B14 (`d2306b8`)** QuoteDialog + winner column highlight + loading feedback:
|
||||
- Bỏ checkbox "Chọn NCC này cho hạng mục" (consolidate winner ở Section 2.a)
|
||||
- Winner column Section 4 matrix LUÔN xanh emerald (header `✓ ` prefix + cells full column)
|
||||
- QuoteDialog full overlay loading + spinner khi save có delay
|
||||
- NccSelectorRow inline spinner "Đang chọn NCC + sync cột giá Section 4…"
|
||||
|
||||
**Verify:** `npm run build` × 2 app pass · `dotnet test` 83 pass (KHÔNG regression). Push gitea OK.
|
||||
|
||||
## ⚠️ CẢNH BÁO Session 12+ (cập nhật)
|
||||
|
||||
Bổ sung từ wrap-up trước (xem TL;DR S10-11+++++++ phía dưới):
|
||||
|
||||
8. **`isSelected` per-quote BE field** — vẫn còn trong API payload nhưng UI ẩn. Nếu sau này muốn cho user chọn winner per-item (khác với winner per-phiếu) → re-enable checkbox QuoteDialog. Hiện tại chỉ gửi `existing?.isSelected ?? false` để giữ legacy data nếu có.
|
||||
|
||||
9. **Section 4 cell winner highlight** dùng `ev.selectedSupplierId === s.supplierId` (per-supplier check). Nếu BE workflow có multi-winner per-item (ít khả năng), cần điều chỉnh logic.
|
||||
|
||||
10. **Loading overlay QuoteDialog** chỉ áp QuoteDialog. Các dialog khác (AddSupplierDialog/EditSupplierDialog/DetailDialog) chỉ có button text feedback. Nếu UAT thấy delay → mở rộng pattern overlay sang các dialog khác.
|
||||
|
||||
11. **InfoTab re-edit useEffect deps** include 4 ev fields (tenGoiThau/diaDiem/moTa/paymentTerms). Có thể trigger re-set values nếu BE cập nhật ev (vd auto-save từ chỗ khác). Trade-off: chấp nhận để sync state. Nếu UAT thấy "values mất" → debug deps.
|
||||
|
||||
## TL;DR Session S10-11+++++++ (07/05 — PE Workspace UX overhaul đầy đủ)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user