3.4 KiB
run — PE: nút XÓA phiếu ở màn DUYỆT (approver-side)
- run-id:
2026-07-27-S155-pe-delete-approver - phiên: S155 (phiên-LOGIC L7, window 2)
- pipeline anh lệnh: 2 Invest → file-chi-tiết + checklist → review spec → hmw Opus 5 MAX
- mode: RUN-TRACE (≥3 task) — sub ghi full-detail vào CHỈ
sub-<role>-<i>.mdcủa mình
Nguồn yêu cầu (ảnh chat anh gửi — UAT thật, không phải giả định)
Phiếu mẫu: PE/2026/A/046 · Duyệt NCC · dự án FLOCK03 · hạng mục MAT-16 "16 Mat Khác" · gói thầu "16 Mat - Băng cản nước" · trạng thái Đã gửi duyệt · có cờ GẤP (PRO).
Workflow đang chạy: Bước 1 (Phòng Cung ứng) — Cấp 2, NV duyệt Bùi Lê Thủy Trà, "Đến lượt bạn duyệt". Bước 2 có Cấp 2 "Duyệt thay CEO". Bước 3 Ban Giám đốc, kết thúc tại Cấp 2. Lịch sử duyệt (1).
Khối HÀNH ĐỘNG hiện chỉ có: ✓ Duyệt · ← Trả lại — thiếu Xóa.
Banner đang hiện: "Bạn được phép chỉnh sửa Hạng mục / NCC / Báo giá (workflow bật mode Approver edit)".
Lời user verbatim (Tra Sol):
- "@Kenny Chỗ duyệt - tạo giúp em nút xóa với"
- "Vì mấy bạn bắt sai cái gói thầu" → "nên phải cho quyền xóa cái phiếu đó luôn"
- "chứ lỡ bấm sai cái gói thầu / quay lại không được / phải xóa thì nó mới ko có lũy kế lên"
Lời anh (owner) verbatim: "Hic hôm trước có cái chỗ cho huy / mọi người nói là ko cần cái đó / giờ lại cần" ⇒ 🔴 giả-thuyết cần KIỂM: đường xóa/thu-hồi đã từng tồn tại rồi bị gỡ. Nếu đúng → khôi phục rẻ hơn dựng mới, và phải tìm ra lý do gỡ để không tái phạm.
Vì sao đây là lỗi SỐ LIỆU, không phải UX
CLAUDE.md S134: ComputePendingAsync complementary — phiếu ChoDuyet có winner được tính vào lũy kế TẠM TÍNH. Phiếu bấm sai gói thầu đang treo ở bước duyệt ⇒ đang ăn ngân sách hạng mục sai. "Trả lại" đẩy về TraLai=98 chứ không triệt tiêu ⇒ số tạm tính vẫn lệch. Đó chính là điều Tra Sol mô tả bằng chữ "lũy kế lên".
Stages
- S1 — 2 Invest song song (BE-slice + FE/authz-slice) →
sub-invest-be-1.md·sub-invest-fe-2.md - S2 — file chi tiết + checklist (lead tổng hợp) →
spec-pe-delete-approver.md - S3 — review spec (reviewer, adversarial)
- S4 — hmw Opus 5 MAX thực thi
Ràng buộc mang theo mọi stage
- Governance L7 vẫn treo 22 FLAG chờ (42)(43)(44) — việc này song song, KHÔNG đóng thay.
- Soft delete là quy ước sẵn có (
AuditableEntity:IsDeleted/DeletedAt/DeletedBy) — spec phải nói rõ dùng cái này hay thu-hồi-về-Nháp. - Quyền = 2 tầng độc lập (bài học S118 / gotcha #82): display-layer menu
CanRead⟂ API-authz[Authorize(Policy)]. Ẩn nút ≠ đóng API. - Xóa phải có vết (changelog/audit) — phiếu đã có
Lịch sử duyệt (1).
taskList snapshot
- invest BE: entity/state-machine/endpoint-xóa/authz/lũy-kế/changelog + git-khảo-cổ "chỗ cho huy"
- invest FE: màn duyệt (component khối HÀNH ĐỘNG) + permission matrix
Pe_*+ nơi PE đang xóa được (nếu có) + dấu vết UI đã gỡ