Files
solution-erp/.claude/workflows/runs/2026-07-27-S155-pe-delete-approver/run.md
2026-07-27 09:03:41 +07:00

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>.md củ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ạithiế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

  1. invest BE: entity/state-machine/endpoint-xóa/authz/lũy-kế/changelog + git-khảo-cổ "chỗ cho huy"
  2. 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ỡ