From 55494ad477b7c7fc6cb0ec9fdc5c9787d57be70b Mon Sep 17 00:00:00 2001 From: pqhuy1987 Date: Fri, 26 Jun 2026 10:53:25 +0700 Subject: [PATCH] =?UTF-8?q?[CLAUDE]=20Infra:=20gate=20SeedDemoMasterData?= =?UTF-8?q?=20sau=20DemoSeed:Disabled=20(ch=E1=BB=91ng=20resurrect=20NCC?= =?UTF-8?q?=20demo=20go-live)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sau wipe 18 NCC demo (scripts/s91-wipe-golive.sql, go-live anh Kiệt FDC 26/06), phát hiện SeedDemoMasterDataAsync chạy UNGATED + per-code idempotent (skip-if-code-exists else Add) -> mỗi restart / IIS recycle TỰ ADD lại 18 NCC demo (NCC-VLXD / CDT-VIN / Sun Group ...) -> undo danh sách NCC sạch anh Kiệt vừa chốt. Fix: gate SeedDemoMasterDataAsync (Supplier + Project DEMO) sau cờ DemoSeed:Disabled, mirror cách Contracts/PE/Workflow demo đã gated. Prod hiệu lực Disabled=true (appsettings.json deployed; appsettings.Production.json render từ .example KHÔNG có DemoSeed -> fallback appsettings.json=true, đúng fallback đã giữ contracts/PE gated nhiều tháng). -> SKIP -> wipe BỀN qua restart. Dev Disabled=false -> vẫn seed demo local. Master data THẬT (SeedRealMasterDataAsync: 62 dự án + 71 hạng mục + 3 NCC) ungated -> KHÔNG ảnh hưởng. User test (38) đã an toàn từ S89 (gỡ khỏi mảng SeedDemoUsers). Build slnx OK 0 warn / 0 err. Co-Authored-By: Claude Opus 4.8 --- .../Persistence/DbInitializer.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs b/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs index f0ead47..f401a25 100644 --- a/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs +++ b/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs @@ -71,11 +71,11 @@ public static class DbInitializer // - SeedDemoPurchaseEvaluationsAsync ([DEMO] PE 4 sample) // - SeedSampleApprovalWorkflowsV2Async (V2 sample mẫu UAT cho type B) // - SeedSampleContractWorkflowV2Async (V2 sample mẫu UAT cho Contract — Mig 32 Plan B Chunk A2) - // GIỮ: SeedRoles, SeedAdmin, SeedDepartments, SeedDemoUsers (30 user UAT), - // SeedMenuTree, SeedAdminPermissions, SeedDemoMasterData (Supplier/Project - // master), SeedContractTemplates (file template), SeedCatalogs, backfill - // helpers. Production UAT clean slate: bro toàn quyền setup workflow mới - // qua Designer. + // GIỮ (ungated): SeedRoles, SeedAdmin, SeedDepartments, SeedDemoUsers (chỉ user THẬT + // — S89 đã gỡ user test khỏi mảng), SeedMenuTree, SeedAdminPermissions, + // SeedContractTemplates (file template), SeedCatalogs, SeedRealMasterData (62 dự án + + // 71 hạng mục + 3 NCC thật). [S91 2026-06-26] SeedDemoMasterData (Supplier/Project + // DEMO) ĐÃ chuyển sang GATED — prod skip để không resurrect 18 NCC demo đã wipe go-live. var config = sp.GetRequiredService(); var demoSeedDisabled = config.GetValue("DemoSeed:Disabled"); if (demoSeedDisabled) @@ -108,7 +108,14 @@ public static class DbInitializer await SeedMeetingRoomsAsync(db, logger); await SeedMenuTreeAsync(db, logger); await SeedAdminPermissionsAsync(db, roleManager, logger); - await SeedDemoMasterDataAsync(db, logger); + // [S91 2026-06-26 — anh Kiệt FDC go-live] GATE demo master (Supplier/Project demo) + // sau cờ DemoSeed:Disabled. Trước đây ungated → SeedDemoMasterDataAsync per-code + // idempotent RESURRECT 18 NCC demo (NCC-VLXD/CDT-VIN/Sun Group…) mỗi restart sau khi + // đã wipe (scripts/s91-wipe-golive.sql). Prod Disabled=true → SKIP → giữ wipe BỀN; + // Dev Disabled=false → vẫn seed demo local. Master data THẬT (62 dự án + 71 hạng mục + // + 3 NCC) đến từ SeedRealMasterDataAsync (ungated, dưới) — KHÔNG ảnh hưởng. + if (!demoSeedDisabled) + await SeedDemoMasterDataAsync(db, logger); await SeedContractTemplatesAsync(db, logger); if (!demoSeedDisabled) {