[CLAUDE] Infra: Plan CA Chunk D — Seed demo user catalog.manager + role CatalogManager

DbInitializer.cs SeedDemoUsersAsync array thêm 1 entry:
- Email: catalog.manager@solutions.com.vn (password default User@123456 per SeedDemoUsersAsync logic)
- FullName: "NV Quản lý Danh mục"
- Dept: PRO (Cung ứng)
- Position: "Nhân viên Quản lý Danh mục Dùng chung"
- Roles: [AppRoles.CatalogManager]

Cấp 1 demo user mặc định để bro UAT login fe-user verify 9 menu danh mục
(Master + Suppliers + Projects + Departments + Catalogs + 4 sub-catalogs).
Admin có thể tạo thêm user gán role CatalogManager qua /system/users +
/system/permissions Matrix tự reflect 9 menu key.

Verify:
- dotnet build SolutionErp.slnx PASS 0 err, 2 pre-existing DocxRenderer warn
- Idempotent: SeedDemoUsersAsync skip nếu user existing email
- DbInitializer chạy mỗi lần API startup → demo user auto-seed lên prod sau deploy

Plan CA wrap (4 chunk):
- A 80d39a0 BE Role + Seed permissions (em main solo)
- B 06a441c FE move 4 master pages 948 LOC (Implementer Case 2)
- C c995f42 Sidebar filter 2 app (em main solo)
- D (this) Seed demo user (em main solo)

Total LOC: +1,034 / -2 (BE 67 + FE 962 + sidebar 14 - 2 unused)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-05-22 11:02:21 +07:00
parent c995f42e0d
commit 4a592cfadb

View File

@ -1258,6 +1258,13 @@ public static class DbInitializer
// CEO — Tổng Giám đốc (1 user, dept BOD)
("truong.nguyen@solutions.com.vn", "Nguyễn Văn Trường", "BOD", "Tổng Giám đốc (CEO)", new[] { AppRoles.Director }),
// [Plan CA S29 2026-05-22] Demo user role CatalogManager — quản lý
// danh mục dùng chung (Suppliers/Projects/Departments/Catalogs)
// ở fe-user/eoffice. Admin có thể tạo thêm user gán role này qua
// /system/users + /system/permissions. Dept PRO (Cung ứng) — vai trò
// thường xuyên cập nhật NCC/vật tư/dịch vụ.
("catalog.manager@solutions.com.vn", "NV Quản lý Danh mục", "PRO", "Nhân viên Quản lý Danh mục Dùng chung", new[] { AppRoles.CatalogManager }),
};
int created = 0, fixedExisting = 0, failed = 0;