[CLAUDE] PurchaseEvaluation: notify "cần duyệt" loại người tạo phiếu (anh Kiệt FDC UAT)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m57s

Người TẠO phiếu (drafter) không còn nhận chuông "Phiếu cần bạn duyệt" cho
phiếu mình tạo — kể cả khi được cấu hình làm approver ở một Cấp. Chỉ approver
KHÁC người tạo ở Cấp hiện tại mới nhận. Drafter vẫn nhận chuông KẾT-QUẢ
(đã duyệt / trả lại) như cũ (block :1060 giữ nguyên).

- PurchaseEvaluationWorkflowService.LogTransitionAsync: thêm filter
  `l.ApproverUserId != evaluation.DrafterUserId` (in-memory LINQ, nullable-safe).
- test-specialist: +3 regression PeApproverNotifyExcludesDrafterTests
  (drafter-excluded · co-approver-vẫn-nhận · result-notify-intact; RED-on-old
  đã chứng minh). Test 374 -> 377.
- docs/STATUS.md: re-ground canonical (S85-closeout sót: test 356->377,
  gotcha 71->73, bundle #341) + dòng S86 +3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-06-23 16:37:22 +07:00
parent de2d1fab64
commit ae4f106fd7
4 changed files with 330 additions and 5 deletions

View File

@ -1105,7 +1105,13 @@ public class PurchaseEvaluationWorkflowService(
var approverIds = stepsOrdered[notifyCsi].Levels
.Where(l => l.Order == notifyLvl
&& l.ApproverUserId != Guid.Empty
&& l.ApproverUserId != actorUserId)
&& l.ApproverUserId != actorUserId
// UAT S86 (anh Kiệt Zalo 16:05): người TẠO phiếu KHÔNG nhận
// chuông "cần bạn duyệt" cho phiếu mình tạo — kể cả khi được
// cấu hình làm approver 1 Cấp (họ đã thấy phiếu ở "Phiếu của
// tôi"). Chỉ approver-KHÁC-người-tạo nhận. Drafter VẪN nhận
// chuông KẾT-QUẢ (đã duyệt / trả lại) ở block trên (:1060).
&& l.ApproverUserId != evaluation.DrafterUserId)
.Select(l => l.ApproverUserId)
.Distinct()
.ToList();