[CLAUDE] Contract+FE-User: dot-5 menu 6-leaf y-chang-Duyet-NCC + GET /contracts/deleted + bo hero + "Tong quan quy trinh"
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m38s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m38s
- BE: ListDeletedContractsQuery (IgnoreQueryFilters + Where(IsDeleted) + IDOR mirror; LUAT thay so-dem theo reviewer FLAG-10) + GET /contracts/deleted [Contracts.Read] - Seeder: Ct x7 +3 leaf (WfView/Approved/Deleted) + labelBackfill "Dang duyet" x7 + Khkk 6 leaf + Dashboard -> "Tong quan quy trinh" + reviewKeys +23 key - FE user: matrix +type=3 (HD chung 1 bo V2) + route /contracts/workflow-matrix + Ct regex +3 action + MyContractsPage (phase/deleted + banner + an nut Tao + FLAG-2 guard selectContract khi deleted) + MenuLeaf depth-0 UPPERCASE + UserDashboardPage BO HERO (owner: "bo cai tren di, cai duoi OK") + title "Tong quan quy trinh" - fe-admin: staticMap +2 Khkk (FLAG-1); leaf Ct_ moi van an theo isAdminHidden (da kiem CLEAN) - reviewer PASS_WITH_FLAGS 10 FLAG (0H/4M/6L): fix 4M, park 6L co ghi (FLAG-4 dinh nghia "Da duyet" HD -> cho owner) - build fe x2 + BE PASS; test 562 PASS Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@ -1753,7 +1753,7 @@ public static class DbInitializer
|
||||
|
||||
var tree = new List<(string Key, string Label, string? Parent, int Order, string Icon)>
|
||||
{
|
||||
(MenuKeys.Dashboard, "Tổng quan", null, 10, "LayoutDashboard"),
|
||||
(MenuKeys.Dashboard, "Tổng quan quy trình", null, 10, "LayoutDashboard"), // [S159-đợt5] owner: "đổi thành gì dễ hình dung? Tổng quan quy trình"
|
||||
// [S58 2026-06-11] "Danh mục" 20→80: anh yêu cầu đưa xuống CUỐI sidebar
|
||||
// (sau Reports 50, trước vùng System 90 admin). Main upsert tự re-set
|
||||
// Order trên DB cũ. Con (21-25) giữ nguyên — order chỉ so trong siblings.
|
||||
@ -1777,10 +1777,13 @@ public static class DbInitializer
|
||||
// Duyệt NCC" / "thêm Sub đánh số như Duyệt Hợp đồng"). Root CÓ CON ⇒ render
|
||||
// MenuGroup uppercase tự động. Leaves → /coming-soon (staticMap ×2 app).
|
||||
("Khkk_G1", "1. Kế hoạch ký kết HĐ (NCC-TP)", MenuKeys.KeHoachKyKet, 1, "FileCheck"),
|
||||
("Khkk_List", "Danh sách", "Khkk_G1", 1, "List"),
|
||||
("Khkk_Create", "Thao tác", "Khkk_G1", 2, "Plus"),
|
||||
("Khkk_Pending", "Đang duyệt", "Khkk_G1", 3, "CheckCircle2"),
|
||||
("Khkk_Approved", "Đã duyệt", "Khkk_G1", 4, "CheckCheck"),
|
||||
// [S159-đợt5 owner] đủ 6 leaf "y chang Duyệt NCC" (WfView đầu + Deleted cuối).
|
||||
("Khkk_WfView", "Luồng duyệt", "Khkk_G1", 1, "Network"),
|
||||
("Khkk_List", "Danh sách", "Khkk_G1", 2, "List"),
|
||||
("Khkk_Create", "Thao tác", "Khkk_G1", 3, "Plus"),
|
||||
("Khkk_Pending", "Đang duyệt", "Khkk_G1", 4, "CheckCircle2"),
|
||||
("Khkk_Approved", "Đã duyệt", "Khkk_G1", 5, "CheckCheck"),
|
||||
("Khkk_Deleted", "Đã xóa", "Khkk_G1", 6, "Trash2"),
|
||||
(MenuKeys.Forms, "Biểu mẫu", null, 40, "FileSpreadsheet"),
|
||||
(MenuKeys.Reports, "Báo cáo", null, 50, "BarChart3"),
|
||||
(MenuKeys.System, "Hệ thống", null, 90, "Settings"),
|
||||
@ -1863,9 +1866,14 @@ public static class DbInitializer
|
||||
// đúng nhãn đã đánh số 01.-07. (leaf → /coming-soon?stage=4).
|
||||
tree.Add(("Hdc_" + code, label + " - Bảng cứng", MenuKeys.HopDongCung, hdcOrder++, "FileText")); // [S159-đợt4] owner vẽ: "01. HĐ Thầu phụ - Bảng cứng"
|
||||
tree.Add((MenuKeys.ContractTypeGroup(code), label, MenuKeys.Contracts, order++, "FileText"));
|
||||
// [S159-đợt5 owner "y chang Duyệt NCC"] mỗi loại HĐ đủ 6 leaf. Label "Đang duyệt"
|
||||
// cho key CŨ đi qua labelBackfill (gotcha #11 — sửa chữ ở đây vô tác dụng DB đang chạy).
|
||||
tree.Add(("Ct_" + code + "_WfView", "Luồng duyệt", MenuKeys.ContractTypeGroup(code), order++, "Network"));
|
||||
tree.Add((MenuKeys.ContractTypeList(code), "Danh sách", MenuKeys.ContractTypeGroup(code), order++, "List"));
|
||||
tree.Add((MenuKeys.ContractTypeCreate(code), "Thao tác", MenuKeys.ContractTypeGroup(code), order++, "Plus"));
|
||||
tree.Add((MenuKeys.ContractTypePending(code),"Duyệt", MenuKeys.ContractTypeGroup(code), order++, "CheckCircle2"));
|
||||
tree.Add((MenuKeys.ContractTypePending(code),"Đang duyệt", MenuKeys.ContractTypeGroup(code), order++, "CheckCircle2"));
|
||||
tree.Add(("Ct_" + code + "_Approved","Đã duyệt", MenuKeys.ContractTypeGroup(code), order++, "CheckCheck"));
|
||||
tree.Add(("Ct_" + code + "_Deleted", "Đã xóa", MenuKeys.ContractTypeGroup(code), order++, "Trash2"));
|
||||
}
|
||||
|
||||
// Per-type workflow admin leaves dưới `Workflows` — mỗi loại là 1
|
||||
@ -1958,6 +1966,16 @@ public static class DbInitializer
|
||||
// [S159] 2 root rename theo 4-GĐ (prod đã SQL cùng ngày ⇒ NO-OP trên prod).
|
||||
[MenuKeys.PurchaseEvaluations] = "Duyệt NCC",
|
||||
[MenuKeys.Contracts] = "Duyệt hợp đồng",
|
||||
// [S159-đợt5] Sidebar "Tổng quan" → "Tổng quan quy trình" (owner đề tên, lead lấy).
|
||||
[MenuKeys.Dashboard] = "Tổng quan quy trình",
|
||||
// [S159-đợt5] 7 leaf Ct_X_Pending "Duyệt" → "Đang duyệt" (đồng khuôn PE — gotcha #11).
|
||||
[MenuKeys.ContractTypePending("ThauPhu")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("GiaoKhoan")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("NhaCungCap")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("DichVu")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("MuaBan")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("NguyenTacNcc")] = "Đang duyệt",
|
||||
[MenuKeys.ContractTypePending("NguyenTacDv")] = "Đang duyệt",
|
||||
// [S159-đợt4] 7 leaf Hdc_ thêm hậu tố " - Bảng cứng" (owner vẽ; prod SQL cùng ngày).
|
||||
["Hdc_ThauPhu"] = "01. HĐ Thầu phụ - Bảng cứng",
|
||||
["Hdc_GiaoKhoan"] = "02. HĐ Giao khoán - Bảng cứng",
|
||||
@ -2142,9 +2160,12 @@ public static class DbInitializer
|
||||
foreach (var c in MenuKeys.ContractTypeCodes)
|
||||
{
|
||||
yield return MenuKeys.ContractTypeGroup(c);
|
||||
yield return "Ct_" + c + "_WfView"; // [S159-đợt5]
|
||||
yield return MenuKeys.ContractTypeList(c);
|
||||
yield return MenuKeys.ContractTypeCreate(c);
|
||||
yield return MenuKeys.ContractTypePending(c);
|
||||
yield return "Ct_" + c + "_Approved"; // [S159-đợt5]
|
||||
yield return "Ct_" + c + "_Deleted"; // [S159-đợt5]
|
||||
}
|
||||
}
|
||||
static IEnumerable<string> MasterMenuKeys() => new[]
|
||||
@ -2155,7 +2176,8 @@ public static class DbInitializer
|
||||
};
|
||||
static IEnumerable<string> KhkkKeys() => new[]
|
||||
{
|
||||
"Khkk_G1", "Khkk_List", "Khkk_Create", "Khkk_Pending", "Khkk_Approved",
|
||||
"Khkk_G1", "Khkk_WfView", "Khkk_List", "Khkk_Create", "Khkk_Pending",
|
||||
"Khkk_Approved", "Khkk_Deleted",
|
||||
};
|
||||
static IEnumerable<string> HdcKeys()
|
||||
=> MenuKeys.ContractTypeCodes.Select(c => "Hdc_" + c);
|
||||
|
||||
Reference in New Issue
Block a user