[CLAUDE] Docs: S76 closeout — PE ngan sach ma tran 3 cot + bang luoi + badge quyen-NS
STATUS/HANDOFF (Mig 55->56, test 339->344, gotcha 69->70, bundle jOqxW4-p/DbsznVvR Run #319, Phase +S76, In Progress->Recently Done) + gotcha #70 (FE absolute-set echo stale-echo data-loss -> useIsFetching gate) + ef-core skill Mig 56 row + session log 2026-06-19-S76 + agent-memory harvest (impl-FE stray->canonical + 4 sub diary). Curate-debt carry: reviewer 45KB + inv-codebase 35KB keep-floor-hit manual-condense. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -1218,6 +1218,20 @@ for h in resp.points: # ← .points không phải iterable trực tiếp
|
||||
|
||||
---
|
||||
|
||||
### 70. FE absolute-set form echo field anh-em từ server-snapshot + `invalidate()` fire-and-forget → cửa-sổ STALE-ECHO mất dữ-liệu khi lưu 2 ô liên-tiếp (Session 76)
|
||||
|
||||
**Triệu chứng:** Form ngân sách PE — 2 ô cùng cột PRO (ban hành + hiệu chỉnh) lưu qua CÙNG `proMut`, mỗi save echo field anh-em từ `bs` (server snapshot). Lưu ô A (proInitial) → `invalidate()` refetch BẤT-ĐỒNG-BỘ; TRƯỚC khi refetch về, `bs.proInitial` còn CŨ → lưu ô B (proAdjust) echo `bs.proInitial` cũ → **đè mất giá-trị A**. Workflow review (reviewer) bắt — implementer self-review SÓT.
|
||||
|
||||
**Cơ chế:** BE handler absolute-set (set thẳng cả 3 field, thiếu=null=CLEAR) → FE PHẢI echo field không-đổi. Echo lấy từ `bs` (props từ query) — STALE trong cửa-sổ [mutate-resolve → refetch-land]. `mut.isPending` chỉ true trong HTTP mutate, KHÔNG cover refetch → nút Lưu re-enable khi `bs` vẫn cũ.
|
||||
|
||||
**Guard:** Gate nút Lưu = `mut.isPending || useIsFetching({queryKey:['pe-detail',ev.id]}) > 0` — khoá save tới khi refetch land (`bs` fresh). Đóng cửa-sổ stale-echo. Áp CẢ PRO+CCM cells + notes. (Pattern absolute-set-echo có từ CCM Mig 50/55 prod chưa-báo-lỗi nhưng PRO nhân-đôi bề-mặt → vá trước go-live tài-chính.)
|
||||
|
||||
**Credit:** reviewer S76 (2-lane workflow review Part 2/3) escalate MAJOR data-loss; em-main vá `useIsFetching` ×2 app trước deploy.
|
||||
|
||||
**References:** `fe-*/src/components/pe/PeDetailTabs.tsx` (PeBudgetSummaryTable `peFetching`) · gotcha #44 (silent issue self-review bias).
|
||||
|
||||
---
|
||||
|
||||
## Checklist debug bug mới
|
||||
|
||||
1. Build pass không? → fail → check using + package version compat
|
||||
|
||||
Reference in New Issue
Block a user