[CLAUDE] FE-User: tab strip 4 giai doan tren phieu PE + menu 4-GD + danh so 01-07 nhom HD (UAT anh Kiet)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m44s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 5m44s
- PePipelineStrip moi (mirror x2 app md5-identical): Duyet NCC | Ke hoach ky ket HD | Duyet hop dong | Hop dong cung — chen dau PeDetailTabs (GD1 active) - Menu 4-GD: rename 2 root (PurchaseEvaluations->Duyet NCC, Contracts->Duyet hop dong) + 2 root placeholder KeHoachKyKet/HopDongCung (ngoai MenuKeys.All, staticMap -> /dashboard) — prod da SQL truc tiep cung ngay, seeder+labelBackfill giu hoi tu (gotcha #11) - Danh so 01.-07. nhom HD: prod prepend-only 0-VN-over-wire (renamed=7), seeder typeLabels + labelBackfill 7 entry - Dong bo nhan 4-GD tren dashboard (3 title + 3 group aria) - reviewKeys += 2 placeholder CanRead-only; test 562 PASS; build fe x2 PASS Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@ -1736,15 +1736,19 @@ public static class DbInitializer
|
||||
|
||||
private static async Task SeedMenuTreeAsync(ApplicationDbContext db, ILogger logger)
|
||||
{
|
||||
// [S159 2026-07-29] UAT anh Kiệt: "cho đánh số thứ tự phía trước giúp anh — 01. HĐ thầu phụ"
|
||||
// ⇒ prefix 01.-07. theo THỨ TỰ hiển thị (= thứ tự ContractTypeCodes). Prod đã UPDATE
|
||||
// trực tiếp cùng ngày (prepend-only, 0 ký tự VN qua wire); labelBackfill dưới giữ
|
||||
// các env khác hội tụ (gotcha #11 — sửa tree.Add một mình là vô tác dụng trên DB đang chạy).
|
||||
var typeLabels = new Dictionary<string, string>
|
||||
{
|
||||
["ThauPhu"] = "HĐ Thầu phụ",
|
||||
["GiaoKhoan"] = "HĐ Giao khoán",
|
||||
["NhaCungCap"] = "HĐ Nhà cung cấp",
|
||||
["DichVu"] = "HĐ Dịch vụ",
|
||||
["MuaBan"] = "HĐ Mua bán",
|
||||
["NguyenTacNcc"] = "HĐ Nguyên tắc NCC",
|
||||
["NguyenTacDv"] = "HĐ Nguyên tắc Dịch vụ",
|
||||
["ThauPhu"] = "01. HĐ Thầu phụ",
|
||||
["GiaoKhoan"] = "02. HĐ Giao khoán",
|
||||
["NhaCungCap"] = "03. HĐ Nhà cung cấp",
|
||||
["DichVu"] = "04. HĐ Dịch vụ",
|
||||
["MuaBan"] = "05. HĐ Mua bán",
|
||||
["NguyenTacNcc"] = "06. HĐ Nguyên tắc NCC",
|
||||
["NguyenTacDv"] = "07. HĐ Nguyên tắc Dịch vụ",
|
||||
};
|
||||
|
||||
var tree = new List<(string Key, string Label, string? Parent, int Order, string Icon)>
|
||||
@ -1764,7 +1768,11 @@ public static class DbInitializer
|
||||
(MenuKeys.CatalogServices, "Dịch vụ", MenuKeys.Catalogs, 3, "Wrench"),
|
||||
(MenuKeys.CatalogWorkItems,"Hạng mục công việc", MenuKeys.Catalogs, 4, "ListChecks"),
|
||||
// [S57] Order 30→31: nhường slot 30 cho nhóm "Cá nhân" (đứng ngay sau Văn phòng số = 29, mirror Puro).
|
||||
(MenuKeys.Contracts, "Hợp đồng", null, 31, "FileText"),
|
||||
(MenuKeys.Contracts, "Duyệt hợp đồng", null, 31, "FileText"), // [S159] rename theo 4-GĐ (owner tab strip)
|
||||
// [S159] 2 root PLACEHOLDER GĐ2/GĐ4 — menu = 4 giai đoạn (owner). Ngoài MenuKeys.All,
|
||||
// FE staticMap trỏ /dashboard. Prod đã INSERT trực tiếp cùng ngày (idempotent ở đây).
|
||||
(MenuKeys.KeHoachKyKet, "Kế hoạch ký kết HĐ", null, 26, "FileSignature"),
|
||||
(MenuKeys.HopDongCung, "Hợp đồng cứng", null, 32, "Stamp"),
|
||||
(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"),
|
||||
@ -1774,7 +1782,7 @@ public static class DbInitializer
|
||||
(MenuKeys.MenuVisibility, "Menu eOffice", MenuKeys.System, 94, "Eye"),
|
||||
(MenuKeys.Workflows, "Quy trình HĐ", MenuKeys.System, 95, "GitBranch"),
|
||||
// Module Duyệt NCC (tiền-HĐ)
|
||||
(MenuKeys.PurchaseEvaluations, "Quy trình chọn Thầu phụ - NCC", null, 25, "ClipboardCheck"),
|
||||
(MenuKeys.PurchaseEvaluations, "Duyệt NCC", null, 25, "ClipboardCheck"), // [S159] rename theo 4-GĐ
|
||||
(MenuKeys.PeWorkflows, "Quy trình Duyệt NCC", MenuKeys.System, 95, "GitCompareArrows"),
|
||||
// Quy trình duyệt MỚI (Mig 22 — Session 17, 2026-05-08): schema riêng
|
||||
// UAT trước khi migrate hoàn toàn. Cấu trúc: Quy trình > Bước (Phòng) > Cấp (NV cụ thể).
|
||||
@ -1932,6 +1940,19 @@ public static class DbInitializer
|
||||
// chạy vì upsert `:1893-1905` chỉ update `Order` cho key đã tồn tại.
|
||||
[MenuKeys.PurchaseEvaluationPending("DuyetNcc")] = "Đang duyệt",
|
||||
[MenuKeys.PurchaseEvaluationPending("DuyetNccPhuongAn")] = "Đang duyệt",
|
||||
// [S159] 🔴 UAT anh Kiệt: đánh số 01.-07. nhóm HĐ (verbatim "01 . HĐ thầu phụ").
|
||||
// Prod đã prepend trực tiếp cùng ngày ⇒ trên prod các entry này NO-OP (equal);
|
||||
// dev/fresh-DB hội tụ qua đây. Nguồn số = thứ tự ContractTypeCodes (= [Order]).
|
||||
// [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",
|
||||
[MenuKeys.ContractTypeGroup("ThauPhu")] = "01. HĐ Thầu phụ",
|
||||
[MenuKeys.ContractTypeGroup("GiaoKhoan")] = "02. HĐ Giao khoán",
|
||||
[MenuKeys.ContractTypeGroup("NhaCungCap")] = "03. HĐ Nhà cung cấp",
|
||||
[MenuKeys.ContractTypeGroup("DichVu")] = "04. HĐ Dịch vụ",
|
||||
[MenuKeys.ContractTypeGroup("MuaBan")] = "05. HĐ Mua bán",
|
||||
[MenuKeys.ContractTypeGroup("NguyenTacNcc")] = "06. HĐ Nguyên tắc NCC",
|
||||
[MenuKeys.ContractTypeGroup("NguyenTacDv")] = "07. HĐ Nguyên tắc Dịch vụ",
|
||||
};
|
||||
var updatedLabels = 0;
|
||||
foreach (var (key, expectedLabel) in labelBackfill)
|
||||
@ -2113,6 +2134,9 @@ public static class DbInitializer
|
||||
|
||||
var reviewKeys = MenuKeys.All.Where(InReviewScope)
|
||||
.Concat(peKeys)
|
||||
// [S159] 2 root placeholder GĐ2/GĐ4 — CanRead-only mọi role (IsPeKey=false
|
||||
// ⇒ nhánh read-only). Prod đã INSERT trực tiếp; đây giữ fresh-DB hội tụ.
|
||||
.Concat(new[] { MenuKeys.KeHoachKyKet, MenuKeys.HopDongCung })
|
||||
.Distinct()
|
||||
.ToArray();
|
||||
var roles = await roleManager.Roles.ToListAsync();
|
||||
|
||||
Reference in New Issue
Block a user