数据初始化方案
文档编号:DOC-A09-09 / UAT-INIT
版本:V1.0
创建日期:2026-08-18
维护人:听写(DT)/ TL
关联文档:README、01-测试账号清单、DIP1-SCH V3.0
一、初始化总览
1.1 初始化内容清单
本方案覆盖 DIP1 V3.0 UAT 环境全部初始化工作,按依赖顺序排列如下:
| 顺序 |
初始化模块 |
责任方 |
依赖项 |
输出表 |
用例覆盖 |
| 1 |
主数据预置(BPL/SCL/WPL/CPL/PPL/DLV) |
听云(WCL) |
部署完成 |
bpl_buildings / scl_categories / wpl_workers / cpt_customers / ppl_products / dlv_logistics |
全部 26 个用例 |
| 2 |
系统账号创建(11 个) |
听码(WDE) |
主数据就绪 |
sys_users |
全部 26 个用例 |
| 3 |
RBAC 角色绑定 + 权限配置 |
听码(WDE) |
账号创建完成 |
sys_user_roles / sys_role_permissions |
全部 26 个用例 |
| 4 |
RLS 行级安全策略启用 |
听码(WDE) |
账号创建完成 |
sys_rls_policies |
全部 26 个用例 |
| 5 |
产品库预置(mfr_01 35 SKU + mfr_02 22 SKU) |
听云(WCL) |
MFR 账号 + PPL 表就绪 |
ppl_products |
UC-05~07, UC-13~14, UC-19~22 |
| 6 |
车辆与中港车牌信息预置 |
听云(WCL) |
LGP 账号 + DLV 表就绪 |
dlv_vehicles |
UC-07, UC-14, UC-15~18 |
| 7 |
预置订单创建(UC-04/UC-06/UC-14) |
听码(WDE) |
全部上述完成 |
cpt_orders |
UC-04, UC-06, UC-14 |
| 8 |
账号验证(登录 + 权限 + RLS) |
听写(DT) |
全部初始化完成 |
— |
全部用例前置 |
1.2 关键约束
- 顺序不可逆:每个模块必须严格按依赖顺序执行,禁止跳跃初始化
- 数据一致性:所有预置数据须与 01-测试账号清单 中的画像 100% 对齐
- 审计留痕:所有初始化操作均记入
sys_audit_logs,操作者、时间、影响行数可追溯
二、主数据预置(听云 WCL 负责)
责任方:听云(WCL)
执行方式:通过 SQL 脚本或后端管理后台批量导入
数据依据:BPL V1.1、SCL V1.1、CPT-D V3.0、DIP1-SPEC V3.0
2.1 BPL 楼宇库
预置 7 大楼宇类型 + 测试用例中提及的具体楼宇对象。
2.1.1 楼宇类型主表
| 楼宇编码 |
楼宇名称 |
楼宇系数 |
默认楼层 |
电梯配置 |
备注 |
| BPL-ESS |
标准屋苑(ESS) |
×1.0 |
1F-40F |
有 |
中高层主导 |
| BPL-TONG |
唐楼(TONG) |
×2.5 |
1F-8F |
无 |
楼梯搬运附加 |
| BPL-VIL |
村屋(VIL) |
×1.8 |
1F-3F |
无 |
新界主导 |
| BPL-PUB |
公屋(PUB) |
×1.2 |
1F-40F |
有 |
房委会物业 |
| BPL-HOS |
居屋(HOS) |
×1.1 |
1F-40F |
有 |
资助房屋 |
| BPL-LOW |
洋楼/低密度(LOW) |
×1.5 |
1F-6F |
有 |
大屿山等 |
| BPL-LUX |
豪宅/独立屋(LUX) |
×2.0 |
1F-4F |
有/无 |
山顶/南区 |
2.1.2 测试用例楼宇对象
| 楼宇 ID |
楼宇名称 |
楼宇类型 |
所在区域 |
详细地址 |
关联客户 |
| BLD-001 |
中环某某花园 |
ESS 标准屋苑 |
港岛 |
中环某某道 88 号 |
cus_01 王先生(28F) |
| BLD-002 |
旺角某某街唐楼 |
TONG 唐楼 |
九龙 |
旺角某某街 33 号 |
cus_02 张女士(5F) |
| BLD-003 |
元朗某某村 |
VIL 村屋 |
新界 |
元朗某某村 12 号 |
cus_03 李小姐(2F) |
| BLD-004 |
黄大仙居屋 |
HOS 居屋 |
九龙 |
黄大仙某某居屋苑 |
备用(UC-08~12) |
| BLD-005 |
沙田公屋 |
PUB 公屋 |
新界 |
沙田某某邨 |
备用(UC-05, UC-13) |
| BLD-006 |
大屿山洋楼 |
LOW 低密度 |
离岛 |
大屿山某某道 |
备用(UC-15~18) |
| BLD-007 |
山顶豪宅 |
LUX 豪宅 |
港岛 |
山顶某某道 |
备用(UC-19~22) |
2.2 SCL 品类库
预置 8 大品类 + 测试用例提及的细分类目。
2.2.1 品类主表
| 品类编码 |
品类名称 |
标准工时(分钟) |
基础费率(HKD) |
备注 |
| CAT-01 |
家具组装 |
60-180 |
300 |
含拆包、定位、组装 |
| CAT-02 |
灯具安装 |
30-90 |
200 |
含电路检测 |
| CAT-03 |
卫浴安装 |
90-240 |
450 |
含水管连接 |
| CAT-04 |
厨房安装 |
180-480 |
800 |
整体橱柜 |
| CAT-05 |
家电安装 |
30-120 |
250 |
含通电测试 |
| CAT-06 |
智能设备 |
60-180 |
350 |
含网络配置 |
| CAT-07 |
门窗安装 |
60-180 |
400 |
含密封处理 |
| CAT-08 |
软装 |
30-120 |
200 |
含窗帘/挂画 |
2.2.2 细分类目(SKU 级)
| 类目编码 |
类目名称 |
所属品类 |
典型 SKU 来源 |
备注 |
| FURN-01 |
沙发 |
CAT-01 |
mfr_01 |
三人/转角/模块化 |
| FURN-02 |
床架 |
CAT-01 |
mfr_01 |
单人/双人/上下铺 |
| FURN-03 |
衣柜 |
CAT-01 |
mfr_01 |
推拉/平开 |
| FURN-04 |
餐桌 |
CAT-01 |
mfr_01 |
4 人/6 人/8 人 |
| FURN-05 |
办公桌椅 |
CAT-01 |
mfr_01 |
人体工学 |
| BATH-01 |
马桶 |
CAT-03 |
mfr_01 |
坐/蹲/智能 |
| BATH-02 |
淋浴系统 |
CAT-03 |
mfr_01 |
恒温/普通 |
| BATH-03 |
浴缸 |
CAT-03 |
mfr_01 |
嵌入/独立 |
| KITC-02 |
整体橱柜 |
CAT-04 |
mfr_01 |
L 型/U 型/一字 |
| KITC-03 |
厨电套装 |
CAT-04 |
mfr_02 |
烟机+灶具+消毒柜 |
| LAMP-01 |
吸顶灯 |
CAT-02 |
mfr_01 |
LED/智能调光 |
| LAMP-02 |
吊灯 |
CAT-02 |
mfr_01 |
水晶/铁艺 |
| LAMP-03 |
筒灯/射灯 |
CAT-02 |
mfr_01 |
嵌入式/明装 |
| APPL-01 |
空调 |
CAT-05 |
mfr_02 |
分体/窗机/中央 |
| APPL-02 |
洗衣机 |
CAT-05 |
mfr_02 |
滚筒/波轮 |
| APPL-03 |
冰箱 |
CAT-05 |
mfr_02 |
双门/三门/对开 |
| APPL-04 |
热水器 |
CAT-05 |
mfr_02 |
储水/即热/燃气 |
| APPL-05 |
智能锁 |
CAT-05 |
mfr_02 |
指纹/密码/人脸 |
| SMART-01 |
智能家居套装 |
CAT-06 |
mfr_02 |
中控+传感+执行 |
| SOFT-01 |
窗帘 |
CAT-08 |
mfr_01 |
普通/智能电动 |
| SOFT-02 |
挂画/装饰 |
CAT-08 |
mfr_01 |
含上墙固定 |
| SOFT-03 |
地毯 |
CAT-08 |
mfr_01 |
含防滑处理 |
| SOFT-04 |
软包/靠垫 |
CAT-08 |
mfr_01 |
含定位摆放 |
2.3 WPL 师傅库
预置 3 位师傅详细档案,含技能矩阵、资质、服务区域。
| 字段 |
wkr_01 陈师傅 |
wkr_02 李师傅 |
wkr_03 张师傅 |
| 师傅编码 |
FL-001 |
FL-002 |
FL-003 |
| 等级 |
金牌 |
认证 |
普通 |
| 等级系数 |
×1.2 |
×1.0 |
×0.9 |
| 从业年限 |
8 年 |
4 年 |
2 年 |
| 历史接单 |
320+ |
120+ |
45+ |
| 平均评分 |
4.8/5.0 |
4.5/5.0 |
4.2/5.0 |
| NPS≥9 占比 |
78% |
65% |
52% |
| 服务时段 |
周一至六 08:00-20:00 |
周一至日 09:00-19:00 |
周二至日 10:00-18:00 |
| 服务区域 |
港岛、九龙 |
新界、九龙 |
离岛、新界 |
| 楼宇偏好 |
全楼宇类型 |
除唐楼外 |
低层楼宇优先 |
| 特殊资质 |
吊点加固认证、电气作业证 |
燃气作业证、智能家居认证 |
无(普通等级) |
技能矩阵(5 分制):
| 品类 |
wkr_01 陈师傅 |
wkr_02 李师傅 |
wkr_03 张师傅 |
| CAT-01 家具组装 |
5 |
— |
3 |
| CAT-02 灯具安装 |
5 |
— |
— |
| CAT-03 卫浴 |
— |
4 |
— |
| CAT-05 家电 |
— |
5 |
— |
| CAT-06 智能设备 |
— |
4 |
— |
| CAT-07 门窗 |
— |
— |
4 |
| CAT-08 软装 |
4 |
— |
3 |
2.4 CPL 客户库
预置 3 位客户档案,对齐 01-测试账号清单 §2.2。
| 字段 |
cus_01 王先生 |
cus_02 张女士 |
cus_03 李小姐 |
| 客户编码 |
CUS-001 |
CUS-002 |
CUS-003 |
| 客户类型 |
C 端 |
C 端 |
C 端 |
| 联系电话 |
+852-9123-4567 |
+852-9876-5432 |
+852-9555-1234 |
| WhatsApp |
同电话 |
同电话 |
同电话 |
| 所在区域 |
港岛 |
九龙 |
新界 |
| 详细地址 |
中环某某道 88 号某某花园 28F |
旺角某某街 33 号唐楼 5F |
元朗某某村 12 号 |
| 楼宇 ID |
BLD-001 |
BLD-002 |
BLD-003 |
| 楼宇类型 |
ESS |
TONG |
VIL |
| 楼宇系数 |
×1.0 |
×2.5 |
×1.8 |
| 客户标签 |
高价值、复购意向强、推荐人候选 |
高敏感度(价格+服务)、唐楼住户 |
新界村屋、跨境购物客户 |
| 历史订单 |
1 单(家具安装,NPS 9) |
0 单 |
0 单 |
| 信任徽章 |
复购客户、NPS≥9 |
无 |
无 |
| 首单来源 |
Google 搜索 |
小红书 |
内地电商平台转介 |
2.5 PPL 产品库
预置 mfr_01 35 SKU + mfr_02 22 SKU,含 HS 编码。详细 SKU 清单由 seed_mfr_products.py 加载。
2.5.1 mfr_01 宜居家居(35 SKU)
| 类目 |
SKU 数量 |
HS 编码段 |
代表 SKU |
| FURN-01 沙发 |
6 |
9401.41 |
三人沙发、转角沙发、模块化沙发 |
| FURN-02 床架 |
5 |
9403.50 |
双人床架、单人床架、上下铺 |
| FURN-03 衣柜 |
5 |
9403.40 |
推拉衣柜、平开衣柜 |
| FURN-04 餐桌 |
4 |
9403.30 |
4 人/6 人/8 人餐桌 |
| FURN-05 办公桌椅 |
5 |
9403.10 |
人体工学桌、办公椅 |
| BATH-01~03 卫浴 |
4 |
3922.10 / 7324.10 |
马桶、淋浴系统、浴缸 |
| KITC-02 橱柜 |
3 |
9403.40 |
L 型/U 型/一字橱柜 |
| LAMP-01~03 灯具 |
3 |
9405.10 |
吸顶灯、吊灯、筒灯 |
2.5.2 mfr_02 优品家电(22 SKU)
| 类目 |
SKU 数量 |
HS 编码段 |
代表 SKU |
| APPL-01 空调 |
5 |
8415.10 |
分体空调、窗机、中央空调 |
| APPL-02 洗衣机 |
4 |
8450.11 |
滚筒洗衣机、波轮洗衣机 |
| APPL-03 冰箱 |
4 |
8418.10 |
双门、三门、对开门冰箱 |
| APPL-04 热水器 |
3 |
8516.10 |
储水式、即热式、燃气热水器 |
| APPL-05 智能锁 |
3 |
8301.40 |
指纹锁、密码锁、人脸锁 |
| SMART-01 智能套装 |
2 |
8537.10 |
中控+传感、智能门铃 |
| KITC-03 厨电套装 |
1 |
8414.10 |
烟机+灶具+消毒柜 |
2.6 DLV 物流商库
预置 lgp_01/02 档案 + 车辆信息 + 中港车牌。
2.6.1 物流商档案
| 字段 |
lgp_01 速达物流 |
lgp_02 跨境快线 |
| 物流商编码 |
LGP-001 |
LGP-002 |
| 配送能力 |
本地配送 |
本地+跨境 |
| 服务区域 |
港岛、九龙 |
全港+中港 |
| 总部 |
香港柴湾 |
深圳福田+香港屯门 |
| 服务时段 |
周一至六 08:00-20:00 |
周一至日 07:00-22:00 |
| SLA 承诺 |
本地 ≤4 小时 |
本地 ≤4 小时 / 跨境 1-3 天 |
| 基础保额 |
HKD 5,000/单 |
HKD 10,000/单(跨境加保) |
| 合作司机 |
5 名(含 2 名签约) |
8 名(含 3 名中港牌) |
| 月运力 |
200+ 单/月 |
150+ 单/月 |
| 跨境资质 |
无 |
中港车牌 + 报关代理 + AEO 认证 |
2.6.2 车辆信息
| 车牌号 |
车辆类型 |
载重 |
所属物流商 |
中港车牌 |
用途 |
| HK-AB1234 |
5.5T 货车 |
5.5T |
lgp_01 |
— |
大件本地配送 |
| HK-CD5678 |
5.5T 货车 |
5.5T |
lgp_01 |
— |
大件本地配送 |
| HK-EF9012 |
5.5T 货车 |
5.5T |
lgp_01 |
— |
大件本地配送 |
| HK-GH3456 |
1.5T 面包车 |
1.5T |
lgp_01 |
— |
小件本地配送 |
| HK-IJ7890 |
1.5T 面包车 |
1.5T |
lgp_01 |
— |
小件本地配送 |
| HK-KL2345 |
5.5T 货车 |
5.5T |
lgp_02 |
— |
大件本地配送 |
| HK-MN6789 |
5.5T 货车 |
5.5T |
lgp_02 |
— |
大件本地配送 |
| 粤 ZB1234 港 |
5.5T 货车 |
5.5T |
lgp_02 |
✅ 中港牌 |
跨境配送 |
| 粤 ZC5678 港 |
5.5T 货车 |
5.5T |
lgp_02 |
✅ 中港牌 |
跨境配送 |
| 粤 ZD9012 港 |
5.5T 货车 |
5.5T |
lgp_02 |
✅ 中港牌 |
跨境配送 |
| HK-OP4567 |
5.5T 货车 |
5.5T |
lgp_02 |
— |
大件本地配送 |
| HK-QR8901 |
5.5T 货车 |
5.5T |
lgp_02 |
— |
大件本地配送 |
三、账号创建(听码 WDE 负责)
责任方:听码(WDE)
执行脚本:seed_users.py
数据依据:01-测试账号清单
3.1 账号创建清单
共 11 个测试账号,分 5 端创建:
| 端 |
角色 |
账号清单 |
数量 |
| WKR-App |
师傅 |
wkr_01, wkr_02, wkr_03 |
3 |
| CST-App |
客户 |
cus_01, cus_02, cus_03 |
3 |
| OPR-Admin |
运营 |
ol_01 |
1 |
| MFR-Portal |
生产商 |
mfr_01, mfr_02 |
2 |
| LGP-App |
物流商 |
lgp_01, lgp_02 |
2 |
| 合计 |
— |
— |
11 |
3.2 创建脚本需求
| 项 |
要求 |
| 脚本路径 |
dip1/scripts/seed_users.py |
| 输入源 |
YAML/JSON 配置文件,账号清单对齐 01-测试账号清单 |
| 密码加密 |
bcrypt 加盐哈希(盐值随机生成),禁用明文存储 |
| 初始密码 |
统一 Test@2026,标记 must_change_password = true |
| 关联主数据 |
创建账号时同步绑定 worker_id/customer_id/mfr_id/lgp_id 外键 |
| 幂等性 |
支持重复执行,已存在账号自动跳过,不报错 |
| 审计日志 |
每个账号创建记入 sys_audit_logs |
| 失败处理 |
任一账号创建失败立即终止,输出错误日志,已创建账号回滚 |
四、RBAC + RLS 配置(听码 WDE 负责)
责任方:听码(WDE)
执行脚本:seed_rls_policies.sql
数据依据:01-测试账号清单 §三、DIP1-SPEC V3.0 §1.2
4.1 角色绑定
将 11 个账号绑定到 9 个业务角色:
| 账号 |
角色编码 |
角色名 |
数据范围 |
| wkr_01 |
FL-001 |
金牌师傅 |
自己接单 |
| wkr_02 |
FL-002 |
认证师傅 |
自己接单 |
| wkr_03 |
FL-003 |
普通师傅 |
自己接单 |
| cus_01 |
CUS-001 |
客户 |
自己订单 |
| cus_02 |
CUS-002 |
客户 |
自己订单 |
| cus_03 |
CUS-003 |
客户 |
自己订单 |
| ol_01 |
OL |
运营负责人 |
全平台订单 |
| mfr_01 |
MFR-001 |
生产商 |
自己产品+委托订单 |
| mfr_02 |
MFR-002 |
生产商 |
自己产品+委托订单 |
| lgp_01 |
LGP-001 |
物流商 |
自己运单 |
| lgp_02 |
LGP-002 |
物流商 |
自己运单 |
4.2 RBAC 权限配置
按 01-测试账号清单 §3.1 RBAC 角色权限矩阵执行,对齐 DIP1-SPEC V3.0 §1.2。脚本须生成 sys_role_permissions 表的全部 INSERT 语句。
4.3 RLS 行级安全策略 SQL
脚本须生成以下 RLS 策略(PostgreSQL 语法示例):
-- 师傅端 RLS:仅可见分配给自己的订单
CREATE POLICY rls_wkr_01_orders ON cpt_orders
FOR SELECT TO wkr_01
USING (assigned_worker_id = 'FL-001');
CREATE POLICY rls_wkr_02_orders ON cpt_orders
FOR SELECT TO wkr_02
USING (assigned_worker_id = 'FL-002');
CREATE POLICY rls_wkr_03_orders ON cpt_orders
FOR SELECT TO wkr_03
USING (assigned_worker_id = 'FL-003');
-- 客户端 RLS:仅可见自己的订单
CREATE POLICY rls_cus_01_orders ON cpt_orders
FOR SELECT TO cus_01
USING (customer_id = 'CUS-001');
CREATE POLICY rls_cus_02_orders ON cpt_orders
FOR SELECT TO cus_02
USING (customer_id = 'CUS-002');
CREATE POLICY rls_cus_03_orders ON cpt_orders
FOR SELECT TO cus_03
USING (customer_id = 'CUS-003');
-- MFR 端 RLS:仅可见自己的产品 + 委托订单
CREATE POLICY rls_mfr_01_products ON ppl_products
FOR SELECT TO mfr_01
USING (mfr_id = 'MFR-001');
CREATE POLICY rls_mfr_01_orders ON cpt_orders
FOR SELECT TO mfr_01
USING (mfr_id = 'MFR-001');
CREATE POLICY rls_mfr_02_products ON ppl_products
FOR SELECT TO mfr_02
USING (mfr_id = 'MFR-002');
CREATE POLICY rls_mfr_02_orders ON cpt_orders
FOR SELECT TO mfr_02
USING (mfr_id = 'MFR-002');
-- LGP 端 RLS:仅可见分配给自己的运单
CREATE POLICY rls_lgp_01_waybills ON lgd_waybills
FOR SELECT TO lgp_01
USING (lgp_id = 'LGP-001');
CREATE POLICY rls_lgp_02_waybills ON lgd_waybills
FOR SELECT TO lgp_02
USING (lgp_id = 'LGP-002');
4.4 验证要求
脚本执行完成后须输出验证报告:
- 全部 11 个账号的角色绑定确认
- 全部 12 条 RLS 策略生效确认
- 跨账号数据可见性测试(如 wkr_01 不可见 wkr_02 的订单)
五、预置订单(听码 WDE 负责)
责任方:听码(WDE)
执行脚本:seed_preset_orders.py
用途:为特定用例提供"中间态"起点,避免每次从头走完前置流程
5.1 预置订单清单
| 预置订单 |
起点用例 |
起点状态 |
客户 |
MFR |
产品 |
数量 |
当前阶段 |
| PO-001 |
UC-04 |
L4_CONTRACTED |
cus_02 张女士 |
mfr_01 |
FURN-02 床架 |
1 |
L4 已签约,待派工 |
| PO-002 |
UC-06 |
L5_ACCEPTED |
cus_01 王先生 |
mfr_01 |
FURN-01 沙发 + FURN-03 衣柜 |
1+1 |
L5 已派工师傅确认,待配送 |
| PO-003 |
UC-14 |
L5.3 清关中 |
cus_03 李小姐 |
mfr_02 |
APPL-01 空调 ×2 + APPL-05 智能锁 ×1 |
2+1 |
L5.3 跨境清关进行中 |
5.2 PO-001 UC-04 预置订单详细
| 字段 |
取值 |
| 订单号 |
ORD-20260818-PO001 |
| 起点用例 |
UC-04 验收整改 |
| 订单状态 |
L4_CONTRACTED(已签约,待派工) |
| 客户 |
cus_02 张女士(CUS-002) |
| 楼宇 |
BLD-002 旺角某某街唐楼 5F(TONG ×2.5) |
| MFR |
mfr_01 宜居家居 |
| 产品 |
FURN-02 床架 ×1 |
| 报价金额 |
HKD 1,800(含唐楼附加 ×2.5) |
| 期望安装日期 |
2026-08-25 |
| 派工状态 |
未派工 |
5.3 PO-002 UC-06 预置订单详细
| 字段 |
取值 |
| 订单号 |
ORD-20260818-PO002 |
| 起点用例 |
UC-06 B2B2C 本地配送安装 |
| 订单状态 |
L5_ACCEPTED(师傅已接单,待配送) |
| 客户 |
cus_01 王先生(CUS-001) |
| 楼宇 |
BLD-001 中环某某花园 28F(ESS ×1.0) |
| MFR |
mfr_01 宜居家居 |
| 师傅 |
wkr_01 陈师傅(FL-001) |
| 产品 |
FURN-01 沙发 ×1 + FURN-03 衣柜 ×1 |
| 报价金额 |
HKD 4,200 |
| 物流商 |
lgp_01 速达物流 |
| 配送时段 |
2026-08-20 14:00-18:00 |
| 运单号 |
WAY-20260818-PO002 |
5.4 PO-003 UC-14 预置订单详细
| 字段 |
取值 |
| 订单号 |
ORD-20260818-PO003 |
| 起点用例 |
UC-14 B2B2C 跨境配送清关 |
| 订单状态 |
L5.3 清关中 |
| 客户 |
cus_03 李小姐(CUS-003) |
| 楼宇 |
BLD-003 元朗某某村 12 号(VIL ×1.8) |
| MFR |
mfr_02 优品家电(深圳仓发运) |
| 产品 |
APPL-01 空调 ×2 + APPL-05 智能锁 ×1 |
| 报价金额 |
HKD 9,800(含跨境附加) |
| 物流商 |
lgp_02 跨境快线 |
| 中港车牌 |
粤 ZB1234 港 |
| 报关单号 |
DEC-CN-20260818-003 |
| 清关状态 |
海关查验中 |
| 预计放行 |
2026-08-19 18:00 |
5.5 预置订单脚本需求
| 项 |
要求 |
| 脚本路径 |
dip1/scripts/seed_preset_orders.py |
| 数据完整性 |
订单 + 报价快照 + 派工记录 + 运单(PO-002/003)+ 报关单(PO-003)须同步创建 |
| 状态机校验 |
创建前校验起点状态合法,禁止跳态 |
| 幂等性 |
重复执行不创建重复订单,已存在订单号自动跳过 |
| 审计日志 |
全部操作记入 sys_audit_logs |
六、初始化脚本清单
共 5 个脚本,由听码(WDE)负责编写与维护,听云(WCL)负责执行:
| # |
脚本 |
路径 |
责任方 |
功能描述 |
| 1 |
seed_users.py |
dip1/scripts/seed_users.py |
听码编写 / 听云执行 |
批量创建 11 个测试账号,含密码 bcrypt 加盐、角色外键绑定、幂等支持、审计日志写入 |
| 2 |
seed_rls_policies.sql |
dip1/scripts/seed_rls_policies.sql |
听码编写 / 听云执行 |
生成全部 12 条 RLS 行级安全策略 + RBAC 角色权限 INSERT,含验证查询语句 |
| 3 |
seed_mfr_products.py |
dip1/scripts/seed_mfr_products.py |
听码编写 / 听云执行 |
预置 mfr_01 35 SKU + mfr_02 22 SKU 产品目录,含 HS 编码、价格、品类映射、库存初始值 |
| 4 |
seed_preset_orders.py |
dip1/scripts/seed_preset_orders.py |
听码编写 / 听云执行 |
创建 UC-04/UC-06/UC-14 三个预置订单(含报价快照、派工、运单、报关单) |
| 5 |
verify_accounts.py |
dip1/scripts/verify_accounts.py |
听码编写 / 听写执行 |
验证 11 个账号登录、RBAC 权限、RLS 策略、预置订单可见性,输出验证报告 |
6.1 执行顺序
1. seed_users.py → 创建 11 个账号
2. seed_rls_policies.sql → 配置 RBAC + RLS
3. seed_mfr_products.py → 预置 57 个 SKU 产品
4. seed_preset_orders.py → 创建 3 个预置订单
5. verify_accounts.py → 听写验证全部就绪
6.2 脚本通用规范
| 规范 |
要求 |
| 编码 |
UTF-8 |
| 命令行参数 |
支持 --env uat / --dry-run / --verbose |
| 日志 |
输出至 stdout + dip1/logs/seed_*.log |
| 错误处理 |
任一步骤失败立即终止,输出错误堆栈 |
| 回滚 |
提供 --rollback 参数,可一键回滚本脚本的全部变更 |
| 审计 |
所有数据变更记入 sys_audit_logs,操作者标记为 script:<script_name> |
七、数据安全要求
7.1 环境隔离
| 要求 |
说明 |
| 环境标识 |
UAT 环境数据库 dip1_uat,与生产 dip1_prod 物理隔离 |
| 配置隔离 |
UAT 环境使用独立 .env.uat,禁止读取生产配置 |
| 域名隔离 |
UAT 域名 uat.dip1.example.hk,与生产 dip1.example.hk 分离 |
| API Key 隔离 |
MFR API Key 仅在 UAT 签发,前缀 uat_,过期自动失效 |
7.2 密码修改
| 要求 |
说明 |
| 初始密码 |
统一 Test@2026,仅 UAT 阶段有效 |
| 首次登录强制改密 |
must_change_password = true,登录后跳转改密页 |
| 复杂度校验 |
8+ 位、含大小写 + 数字 + 符号 |
| 禁用明文存储 |
bcrypt 加盐哈希,盐值随机 |
| 失效策略 |
UAT 密码 90 天失效,需重置 |
7.3 审计日志
| 要求 |
说明 |
| 日志表 |
sys_audit_logs |
| 字段 |
操作者、操作时间、操作类型、影响表、影响行 ID、变更前后值 |
| 操作者标识 |
脚本执行标记 script:<name> 或人工操作账号 ID |
| 保留期 |
UAT 阶段全程保留,测试结束后归档至 dip1/logs/audit_uat_*.jsonl |
| 查询权限 |
TL / 听写(DT,只读后门 BD-05) |
7.4 数据清理
| 要求 |
说明 |
| 清理脚本 |
dip1/scripts/clean_test_data.py(听码提供) |
| 清理范围 |
11 个账号 + 3 个预置订单 + 57 个产品 + 关联运单/报关单/审计日志 |
| 备份 |
清理前导出全量备份至 dip1/backups/uat_YYYYMMDD.sql.gz |
| 二次确认 |
清理脚本须交互式确认两次,避免误操作 |
| 禁止生产清理 |
清理脚本通过环境变量校验,禁止在非 UAT 环境执行 |
7.5 敏感数据保护
| 数据 |
保护措施 |
| 手机号/WhatsApp |
数据库存储原文,日志/报告脱敏(前 3 后 2,中间 4 位 *) |
| 邮箱 |
数据库存储原文,日志脱敏(@前仅保留首末字符) |
| API Key |
仅在 UAT 签发,加密存储,禁入文档/Git |
| 中港车牌 |
测试数据使用虚构车牌,避免触碰真实车牌 |
| 客户地址 |
数据库存储原文,测试报告中以"某某"替代敏感字段 |
八、修订记录
| 版本 |
日期 |
修订人 |
修订内容 |
| V1.0 |
2026-08-18 |
DT |
首版创建:① 初始化总览(8 步依赖顺序);② 主数据预置(BPL 7 类 + 7 楼宇 + SCL 8 品类 + 22 细分类目 + WPL 3 师傅 + CPL 3 客户 + PPL 57 SKU + DLV 2 物流商 + 12 车辆);③ 账号创建(11 个 + 脚本需求);④ RBAC + RLS 配置(含完整 SQL);⑤ 预置订单(UC-04/06/14 三单详细字段);⑥ 5 个初始化脚本清单;⑦ 数据安全四维要求 |
本文档为 UAT 数据初始化方案,听云按 §二预置主数据,听码按 §三~五创建账号/权限/预置订单并提供 5 个脚本,听写按 §六 §5 执行验证。协作通道见 协作记录。