Merged
Merge Request #3 · created by 朱子纯


chore: add Flyway V3 seed migration, unify password to 666666

在初始种子数据合并后,补充以下两项改动:

  1. sql/seed_test_data.sql 移入 backend/src/main/resources/db/migration/V3__seed_test_data.sql,Spring Boot 启动时 Flyway 自动执行,无需手动导入。
  2. 统一所有测试账号密码为 666666(BCrypt 哈希),原 Admin@123 / Test@123 / Mgr@123 三种密码已移除。

From chore/seed-test-data into master

Merged by 朱子纯

1 participants
backend/src/main/resources/db/migration/V3__seed_test_data.sql 0 → 100644
  1 +-- Flyway migration V3 — seed test / demo data
  2 +-- Generated: 2026-05-08
  3 +-- 所有账号默认密码: 666666
  4 +-- 账号速查:
  5 +-- 品牌 BR001 超管: admin 密码 666666
  6 +-- 品牌 BR001 普通: zhangwei 密码 666666 (有 usr:create + usr:view)
  7 +-- 品牌 BR001 普通: lina 密码 666666 (有 usr:view)
  8 +-- 品牌 BR001 普通: wanglei 密码 666666 (有 usr:view + doc:edit,bCanEditDoc=1)
  9 +-- 品牌 BR001 普通: locked_user 密码 666666 (已禁用 bIsDisabled=1)
  10 +-- 品牌 BR002 超管: admin 密码 666666 (同名不同品牌,跨租户隔离验证)
  11 +-- 品牌 BR002 普通: chenhao 密码 666666 (繁体语言)
  12 +
  13 +SET NAMES utf8mb4;
  14 +SET foreign_key_checks = 0;
  15 +
  16 +-- ------------------------------------------------------------
  17 +-- 1. brand(公司/品牌)
  18 +-- ------------------------------------------------------------
  19 +INSERT IGNORE INTO `brand`
  20 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sName`, `sShortName`, `sNo`)
  21 +VALUES
  22 + ('BR001', 'BR001', NULL, '2026-01-01 09:00:00', '小羚羊科技有限公司', '小羚羊科技', 'BR001'),
  23 + ('BR002', 'BR002', NULL, '2026-01-01 09:00:00', '羚羊贸易有限公司', '羚贸', 'BR002');
  24 +
  25 +-- ------------------------------------------------------------
  26 +-- 2. tStaff(职员)
  27 +-- ------------------------------------------------------------
  28 +INSERT IGNORE INTO `tStaff`
  29 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sStaffNo`, `sStaffName`, `sDepartment`, `sCreatedBy`, `bDeleted`)
  30 +VALUES
  31 + ('STAFF-001', 'BR001', NULL, '2026-01-01 09:00:00', 'E001', '张伟', '管理部', 'admin', 0),
  32 + ('STAFF-002', 'BR001', NULL, '2026-01-01 09:00:00', 'E002', '李娜', '销售部', 'admin', 0),
  33 + ('STAFF-003', 'BR001', NULL, '2026-01-01 09:00:00', 'E003', '王磊', '财务部', 'admin', 0),
  34 + ('STAFF-004', 'BR001', NULL, '2026-01-01 09:00:00', 'E004', '刘洋', '仓储部', 'admin', 0),
  35 + ('STAFF-005', 'BR002', NULL, '2026-01-01 09:00:00', 'E005', '陈浩', '管理部', 'admin', 0),
  36 + ('STAFF-006', 'BR002', NULL, '2026-01-01 09:00:00', 'E006', '赵敏', '运营部', 'admin', 0);
  37 +
  38 +-- ------------------------------------------------------------
  39 +-- 3. usr_permission_group(权限组)
  40 +-- ------------------------------------------------------------
  41 +INSERT IGNORE INTO `usr_permission_group`
  42 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sGroupCode`, `sGroupName`, `sCategory`)
  43 +VALUES
  44 + ('PG-B1-001', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),
  45 + ('PG-B1-002', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),
  46 + ('PG-B1-003', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理'),
  47 + ('PG-B1-004', 'BR001', NULL, '2026-01-01 09:00:00', 'doc:edit', '单据修改', '单据管理'),
  48 + ('PG-B2-001', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),
  49 + ('PG-B2-002', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),
  50 + ('PG-B2-003', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理');
  51 +
  52 +-- ------------------------------------------------------------
  53 +-- 4. usr_user(用户)
  54 +-- 密码 666666 的 BCrypt 哈希(strength=10):
  55 +-- $2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy
  56 +-- ------------------------------------------------------------
  57 +INSERT IGNORE INTO `usr_user`
  58 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserCode`, `sUsername`,
  59 + `sPasswordHash`,
  60 + `sUserType`, `sLanguage`, `bCanEditDoc`, `bIsDisabled`, `sEmployeeId`, `sCreatorUsername`,
  61 + `tLastLoginDate`, `iLoginFailCount`, `tLockUntil`)
  62 +VALUES
  63 + -- 品牌 BR001 — 超级管理员
  64 + ('USR-B1-001', 'BR001', NULL, '2026-01-01 09:00:00', 'UC001', 'admin',
  65 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  66 + '超级管理员', '中文', 0, 0, NULL, 'system',
  67 + NULL, 0, NULL),
  68 +
  69 + -- 品牌 BR001 — 普通用户,关联张伟,有 usr:create + usr:view
  70 + ('USR-B1-002', 'BR001', NULL, '2026-01-02 10:00:00', 'UC002', 'zhangwei',
  71 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  72 + '普通用户', '中文', 0, 0, 'STAFF-001', 'admin',
  73 + NULL, 0, NULL),
  74 +
  75 + -- 品牌 BR001 — 普通用户,关联李娜,有 usr:view
  76 + ('USR-B1-003', 'BR001', NULL, '2026-01-02 10:30:00', 'UC003', 'lina',
  77 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  78 + '普通用户', '英文', 0, 0, 'STAFF-002', 'admin',
  79 + NULL, 0, NULL),
  80 +
  81 + -- 品牌 BR001 — 普通用户,关联王磊,有 usr:view + doc:edit,bCanEditDoc=1
  82 + ('USR-B1-004', 'BR001', NULL, '2026-01-03 09:00:00', 'UC004', 'wanglei',
  83 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  84 + '普通用户', '中文', 1, 0, 'STAFF-003', 'admin',
  85 + NULL, 0, NULL),
  86 +
  87 + -- 品牌 BR001 — 已禁用账号,测试禁用登录场景
  88 + ('USR-B1-005', 'BR001', NULL, '2026-01-04 09:00:00', 'UC005', 'locked_user',
  89 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  90 + '普通用户', '中文', 0, 1, NULL, 'admin',
  91 + NULL, 0, NULL),
  92 +
  93 + -- 品牌 BR002 — 超级管理员,同名 admin 跨品牌隔离验证
  94 + ('USR-B2-001', 'BR002', NULL, '2026-01-01 09:00:00', 'UC101', 'admin',
  95 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  96 + '超级管理员', '中文', 0, 0, NULL, 'system',
  97 + NULL, 0, NULL),
  98 +
  99 + -- 品牌 BR002 — 普通用户,关联陈浩,繁体语言
  100 + ('USR-B2-002', 'BR002', NULL, '2026-01-02 09:00:00', 'UC102', 'chenhao',
  101 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  102 + '普通用户', '繁体', 0, 0, 'STAFF-005', 'admin',
  103 + NULL, 0, NULL);
  104 +
  105 +-- ------------------------------------------------------------
  106 +-- 5. usr_user_permission(用户权限关联)
  107 +-- ------------------------------------------------------------
  108 +INSERT IGNORE INTO `usr_user_permission`
  109 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserId`, `sPermGroupId`)
  110 +VALUES
  111 + ('UPM-001', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-001'),
  112 + ('UPM-002', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-003'),
  113 + ('UPM-003', 'BR001', NULL, '2026-01-02 10:30:00', 'USR-B1-003', 'PG-B1-003'),
  114 + ('UPM-004', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-003'),
  115 + ('UPM-005', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-004'),
  116 + ('UPM-006', 'BR002', NULL, '2026-01-02 09:00:00', 'USR-B2-002', 'PG-B2-003');
  117 +
  118 +SET foreign_key_checks = 1;
sql/seed_test_data.sql
1 --- ============================================================  
2 --- 测试数据集 — 小羚羊 ERP  
3 --- 适用环境: 开发 / 演示 / 手工测试  
4 --- 执行方式: mysql -h<host> -P<port> -u<user> -p<pass> <schema> < sql/seed_test_data.sql  
5 --- 幂等: 全部使用 INSERT IGNORE,可重复执行  
6 --- ============================================================ 1 +-- Flyway migration V3 — seed test / demo data
  2 +-- Generated: 2026-05-08
  3 +-- 所有账号默认密码: 666666
7 -- 账号速查: 4 -- 账号速查:
8 --- 品牌 BR001 超管: admin 密码 Admin@123  
9 --- 品牌 BR001 普通: zhangwei 密码 Test@123 (有 usr:create + usr:view)  
10 --- 品牌 BR001 普通: lina 密码 Test@123 (有 usr:view)  
11 --- 品牌 BR001 普通: wanglei 密码 Test@123 (有 usr:view + doc:edit,可改单据)  
12 --- 品牌 BR001 普通: locked_user 密码 Test@123 (已禁用)  
13 --- 品牌 BR002 超管: admin 密码 Admin@123 (同名但不同品牌)  
14 --- 品牌 BR002 普通: chenhao 密码 Mgr@123  
15 --- ============================================================ 5 +-- 品牌 BR001 超管: admin 密码 666666
  6 +-- 品牌 BR001 普通: zhangwei 密码 666666 (有 usr:create + usr:view)
  7 +-- 品牌 BR001 普通: lina 密码 666666 (有 usr:view)
  8 +-- 品牌 BR001 普通: wanglei 密码 666666 (有 usr:view + doc:edit,bCanEditDoc=1)
  9 +-- 品牌 BR001 普通: locked_user 密码 666666 (已禁用 bIsDisabled=1)
  10 +-- 品牌 BR002 超管: admin 密码 666666 (同名不同品牌,跨租户隔离验证)
  11 +-- 品牌 BR002 普通: chenhao 密码 666666 (繁体语言)
16 12
17 SET NAMES utf8mb4; 13 SET NAMES utf8mb4;
18 SET foreign_key_checks = 0; 14 SET foreign_key_checks = 0;
@@ -21,102 +17,102 @@ SET foreign_key_checks = 0; @@ -21,102 +17,102 @@ SET foreign_key_checks = 0;
21 -- 1. brand(公司/品牌) 17 -- 1. brand(公司/品牌)
22 -- ------------------------------------------------------------ 18 -- ------------------------------------------------------------
23 INSERT IGNORE INTO `brand` 19 INSERT IGNORE INTO `brand`
24 - (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sName`, `sShortName`, `sNo`) 20 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sName`, `sShortName`, `sNo`)
25 VALUES 21 VALUES
26 - ('BR001', 'BR001', NULL, '2026-01-01 09:00:00', '小羚羊科技有限公司', '小羚羊科技', 'BR001'),  
27 - ('BR002', 'BR002', NULL, '2026-01-01 09:00:00', '羚羊贸易有限公司', '羚贸', 'BR002'); 22 + ('BR001', 'BR001', NULL, '2026-01-01 09:00:00', '小羚羊科技有限公司', '小羚羊科技', 'BR001'),
  23 + ('BR002', 'BR002', NULL, '2026-01-01 09:00:00', '羚羊贸易有限公司', '羚贸', 'BR002');
28 24
29 -- ------------------------------------------------------------ 25 -- ------------------------------------------------------------
30 -- 2. tStaff(职员) 26 -- 2. tStaff(职员)
31 -- ------------------------------------------------------------ 27 -- ------------------------------------------------------------
32 INSERT IGNORE INTO `tStaff` 28 INSERT IGNORE INTO `tStaff`
33 - (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sStaffNo`, `sStaffName`, `sDepartment`, `sCreatedBy`, `bDeleted`) 29 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sStaffNo`, `sStaffName`, `sDepartment`, `sCreatedBy`, `bDeleted`)
34 VALUES 30 VALUES
35 - ('STAFF-001', 'BR001', NULL, '2026-01-01 09:00:00', 'E001', '张伟', '管理部', 'admin', 0),  
36 - ('STAFF-002', 'BR001', NULL, '2026-01-01 09:00:00', 'E002', '李娜', '销售部', 'admin', 0),  
37 - ('STAFF-003', 'BR001', NULL, '2026-01-01 09:00:00', 'E003', '王磊', '财务部', 'admin', 0),  
38 - ('STAFF-004', 'BR001', NULL, '2026-01-01 09:00:00', 'E004', '刘洋', '仓储部', 'admin', 0),  
39 - ('STAFF-005', 'BR002', NULL, '2026-01-01 09:00:00', 'E005', '陈浩', '管理部', 'admin', 0),  
40 - ('STAFF-006', 'BR002', NULL, '2026-01-01 09:00:00', 'E006', '赵敏', '运营部', 'admin', 0); 31 + ('STAFF-001', 'BR001', NULL, '2026-01-01 09:00:00', 'E001', '张伟', '管理部', 'admin', 0),
  32 + ('STAFF-002', 'BR001', NULL, '2026-01-01 09:00:00', 'E002', '李娜', '销售部', 'admin', 0),
  33 + ('STAFF-003', 'BR001', NULL, '2026-01-01 09:00:00', 'E003', '王磊', '财务部', 'admin', 0),
  34 + ('STAFF-004', 'BR001', NULL, '2026-01-01 09:00:00', 'E004', '刘洋', '仓储部', 'admin', 0),
  35 + ('STAFF-005', 'BR002', NULL, '2026-01-01 09:00:00', 'E005', '陈浩', '管理部', 'admin', 0),
  36 + ('STAFF-006', 'BR002', NULL, '2026-01-01 09:00:00', 'E006', '赵敏', '运营部', 'admin', 0);
41 37
42 -- ------------------------------------------------------------ 38 -- ------------------------------------------------------------
43 -- 3. usr_permission_group(权限组) 39 -- 3. usr_permission_group(权限组)
44 -- ------------------------------------------------------------ 40 -- ------------------------------------------------------------
45 INSERT IGNORE INTO `usr_permission_group` 41 INSERT IGNORE INTO `usr_permission_group`
46 - (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sGroupCode`, `sGroupName`, `sCategory`) 42 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sGroupCode`, `sGroupName`, `sCategory`)
47 VALUES 43 VALUES
48 - -- 品牌 BR001  
49 - ('PG-B1-001', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),  
50 - ('PG-B1-002', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),  
51 - ('PG-B1-003', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理'),  
52 - ('PG-B1-004', 'BR001', NULL, '2026-01-01 09:00:00', 'doc:edit', '单据修改', '单据管理'),  
53 - -- 品牌 BR002  
54 - ('PG-B2-001', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),  
55 - ('PG-B2-002', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),  
56 - ('PG-B2-003', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理'); 44 + ('PG-B1-001', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),
  45 + ('PG-B1-002', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),
  46 + ('PG-B1-003', 'BR001', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理'),
  47 + ('PG-B1-004', 'BR001', NULL, '2026-01-01 09:00:00', 'doc:edit', '单据修改', '单据管理'),
  48 + ('PG-B2-001', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:create', '新增用户', '用户管理'),
  49 + ('PG-B2-002', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:edit', '修改用户', '用户管理'),
  50 + ('PG-B2-003', 'BR002', NULL, '2026-01-01 09:00:00', 'usr:view', '查看用户', '用户管理');
57 51
58 -- ------------------------------------------------------------ 52 -- ------------------------------------------------------------
59 -- 4. usr_user(用户) 53 -- 4. usr_user(用户)
60 --- 密码说明:  
61 --- Admin@123 → $2b$10$khppncqEcBIKXWx4WKBZB.NyFUpm/NDGKnISRvOWbskDKE6dcL1Ze  
62 --- Test@123 → $2b$10$JdsHfv.wG2hWkzFO5Ui/euK3wBzK2O1TbLSKKDzZJodVZ5SOVI632  
63 --- Mgr@123 → $2b$10$hOa8yBAohVkjhTO3iMsE6Ov1mPA2UcoUId2NukwVBsB4b7j9Rs8l6 54 +-- 密码 666666 的 BCrypt 哈希(strength=10):
  55 +-- $2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy
64 -- ------------------------------------------------------------ 56 -- ------------------------------------------------------------
65 INSERT IGNORE INTO `usr_user` 57 INSERT IGNORE INTO `usr_user`
66 - (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserCode`, `sUsername`, `sPasswordHash`, 58 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserCode`, `sUsername`,
  59 + `sPasswordHash`,
67 `sUserType`, `sLanguage`, `bCanEditDoc`, `bIsDisabled`, `sEmployeeId`, `sCreatorUsername`, 60 `sUserType`, `sLanguage`, `bCanEditDoc`, `bIsDisabled`, `sEmployeeId`, `sCreatorUsername`,
68 `tLastLoginDate`, `iLoginFailCount`, `tLockUntil`) 61 `tLastLoginDate`, `iLoginFailCount`, `tLockUntil`)
69 VALUES 62 VALUES
70 -- 品牌 BR001 — 超级管理员 63 -- 品牌 BR001 — 超级管理员
71 - ('USR-B1-001', 'BR001', NULL, '2026-01-01 09:00:00',  
72 - 'UC001', 'admin', '$2b$10$khppncqEcBIKXWx4WKBZB.NyFUpm/NDGKnISRvOWbskDKE6dcL1Ze',  
73 - '超级管理员', '中文', 0, 0, NULL, 'system', NULL, 0, NULL), 64 + ('USR-B1-001', 'BR001', NULL, '2026-01-01 09:00:00', 'UC001', 'admin',
  65 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  66 + '超级管理员', '中文', 0, 0, NULL, 'system',
  67 + NULL, 0, NULL),
74 68
75 - -- 品牌 BR001 — 普通用户(关联职员张伟,有新增+查看权限)  
76 - ('USR-B1-002', 'BR001', NULL, '2026-01-02 10:00:00',  
77 - 'UC002', 'zhangwei', '$2b$10$JdsHfv.wG2hWkzFO5Ui/euK3wBzK2O1TbLSKKDzZJodVZ5SOVI632',  
78 - '普通用户', '中文', 0, 0, 'STAFF-001', 'admin', NULL, 0, NULL), 69 + -- 品牌 BR001 — 普通用户,关联张伟,有 usr:create + usr:view
  70 + ('USR-B1-002', 'BR001', NULL, '2026-01-02 10:00:00', 'UC002', 'zhangwei',
  71 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  72 + '普通用户', '中文', 0, 0, 'STAFF-001', 'admin',
  73 + NULL, 0, NULL),
79 74
80 - -- 品牌 BR001 — 普通用户(关联职员李娜,仅查看权限)  
81 - ('USR-B1-003', 'BR001', NULL, '2026-01-02 10:30:00',  
82 - 'UC003', 'lina', '$2b$10$JdsHfv.wG2hWkzFO5Ui/euK3wBzK2O1TbLSKKDzZJodVZ5SOVI632',  
83 - '普通用户', '英文', 0, 0, 'STAFF-002', 'admin', NULL, 0, NULL), 75 + -- 品牌 BR001 — 普通用户,关联李娜,有 usr:view
  76 + ('USR-B1-003', 'BR001', NULL, '2026-01-02 10:30:00', 'UC003', 'lina',
  77 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  78 + '普通用户', '英文', 0, 0, 'STAFF-002', 'admin',
  79 + NULL, 0, NULL),
84 80
85 - -- 品牌 BR001 — 普通用户(关联职员王磊,有查看+单据修改权限)  
86 - ('USR-B1-004', 'BR001', NULL, '2026-01-03 09:00:00',  
87 - 'UC004', 'wanglei', '$2b$10$JdsHfv.wG2hWkzFO5Ui/euK3wBzK2O1TbLSKKDzZJodVZ5SOVI632',  
88 - '普通用户', '中文', 1, 0, 'STAFF-003', 'admin', NULL, 0, NULL), 81 + -- 品牌 BR001 — 普通用户,关联王磊,有 usr:view + doc:edit,bCanEditDoc=1
  82 + ('USR-B1-004', 'BR001', NULL, '2026-01-03 09:00:00', 'UC004', 'wanglei',
  83 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  84 + '普通用户', '中文', 1, 0, 'STAFF-003', 'admin',
  85 + NULL, 0, NULL),
89 86
90 - -- 品牌 BR001 — 已禁用账号(测试禁用登录场景)  
91 - ('USR-B1-005', 'BR001', NULL, '2026-01-04 09:00:00',  
92 - 'UC005', 'locked_user', '$2b$10$JdsHfv.wG2hWkzFO5Ui/euK3wBzK2O1TbLSKKDzZJodVZ5SOVI632',  
93 - '普通用户', '中文', 0, 1, NULL, 'admin', NULL, 0, NULL), 87 + -- 品牌 BR001 — 已禁用账号,测试禁用登录场景
  88 + ('USR-B1-005', 'BR001', NULL, '2026-01-04 09:00:00', 'UC005', 'locked_user',
  89 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  90 + '普通用户', '中文', 0, 1, NULL, 'admin',
  91 + NULL, 0, NULL),
94 92
95 - -- 品牌 BR002 — 超级管理员(同名 admin,跨品牌隔离验证)  
96 - ('USR-B2-001', 'BR002', NULL, '2026-01-01 09:00:00',  
97 - 'UC101', 'admin', '$2b$10$khppncqEcBIKXWx4WKBZB.NyFUpm/NDGKnISRvOWbskDKE6dcL1Ze',  
98 - '超级管理员', '中文', 0, 0, NULL, 'system', NULL, 0, NULL), 93 + -- 品牌 BR002 — 超级管理员,同名 admin 跨品牌隔离验证
  94 + ('USR-B2-001', 'BR002', NULL, '2026-01-01 09:00:00', 'UC101', 'admin',
  95 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  96 + '超级管理员', '中文', 0, 0, NULL, 'system',
  97 + NULL, 0, NULL),
99 98
100 - -- 品牌 BR002 — 普通用户(关联职员陈浩,繁体语言)  
101 - ('USR-B2-002', 'BR002', NULL, '2026-01-02 09:00:00',  
102 - 'UC102', 'chenhao', '$2b$10$hOa8yBAohVkjhTO3iMsE6Ov1mPA2UcoUId2NukwVBsB4b7j9Rs8l6',  
103 - '普通用户', '繁体', 0, 0, 'STAFF-005', 'admin', NULL, 0, NULL); 99 + -- 品牌 BR002 — 普通用户,关联陈浩,繁体语言
  100 + ('USR-B2-002', 'BR002', NULL, '2026-01-02 09:00:00', 'UC102', 'chenhao',
  101 + '$2b$10$jNzLDTKf7QzFBr/.GqiUDOFftQDM.xmjOquieRL7K3c6kf7ujMOIy',
  102 + '普通用户', '繁体', 0, 0, 'STAFF-005', 'admin',
  103 + NULL, 0, NULL);
104 104
105 -- ------------------------------------------------------------ 105 -- ------------------------------------------------------------
106 -- 5. usr_user_permission(用户权限关联) 106 -- 5. usr_user_permission(用户权限关联)
107 -- ------------------------------------------------------------ 107 -- ------------------------------------------------------------
108 INSERT IGNORE INTO `usr_user_permission` 108 INSERT IGNORE INTO `usr_user_permission`
109 - (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserId`, `sPermGroupId`) 109 + (`sId`, `sBrandsId`, `sSubsidiaryId`, `tCreateDate`, `sUserId`, `sPermGroupId`)
110 VALUES 110 VALUES
111 - -- zhangwei: usr:create + usr:view  
112 - ('UPM-001', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-001'),  
113 - ('UPM-002', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-003'),  
114 - -- lina: usr:view  
115 - ('UPM-003', 'BR001', NULL, '2026-01-02 10:30:00', 'USR-B1-003', 'PG-B1-003'),  
116 - -- wanglei: usr:view + doc:edit  
117 - ('UPM-004', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-003'),  
118 - ('UPM-005', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-004'),  
119 - -- chenhao: usr:view  
120 - ('UPM-006', 'BR002', NULL, '2026-01-02 09:00:00', 'USR-B2-002', 'PG-B2-003'); 111 + ('UPM-001', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-001'),
  112 + ('UPM-002', 'BR001', NULL, '2026-01-02 10:00:00', 'USR-B1-002', 'PG-B1-003'),
  113 + ('UPM-003', 'BR001', NULL, '2026-01-02 10:30:00', 'USR-B1-003', 'PG-B1-003'),
  114 + ('UPM-004', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-003'),
  115 + ('UPM-005', 'BR001', NULL, '2026-01-03 09:00:00', 'USR-B1-004', 'PG-B1-004'),
  116 + ('UPM-006', 'BR002', NULL, '2026-01-02 09:00:00', 'USR-B2-002', 'PG-B2-003');
121 117
122 SET foreign_key_checks = 1; 118 SET foreign_key_checks = 1;