feat(standards): 国标分析拆分为 24 个细粒度 indicator,并注册为独立 step
国标分析改造两阶段,合并提交:
【阶段 1】拆分 + 新增 5 类分析对象
- STD-001 身份证 → IND-001-a/b/c/d (格式/校验位/出生日期/15位兼容)
- STD-002 USCC → IND-002-a/b (格式/校验位)
- STD-003 手机 → IND-003-a/b (格式/号段)
- STD-004 区划 → IND-004-a/b (格式/编码存在)
- 新增 IND-101 证件类型枚举(5 值)
- 新增 IND-201~204 4 种证件号码(身份证/护照/港澳台居住证/外国人永居)
- 新增 IND-301 跨字段 (证件类型+号码一致性)
- 新增 IND-302 跨表 (证件唯一性,GROUP BY HAVING)
- 新增 IND-401/402 姓名 (字符集/长度)
- 新增 IND-501/502 出生日期 (格式/年龄范围, 性别推断退休年龄)
- 新增 IND-601/602/603 区划/民族/婚姻
基础设施:
- BaseStandard 加 group/severity/depends_on 类属性 + validate_rows() 默认实现
- registry.list_all_standards / list_standards_by_group
- data_loader.py 惰性加载 data/*.json + extracted_standards.json
- 新增 data/{id_type,marriage,gender,retirement_age}.json
- 旧 STD-001~004 标 [已拆分], applies_to_fields=[] (保留兼容)
【阶段 2】每个 indicator 注册为独立 step
- registry.py 新增 load_standard_class / indicator_step_id /
step_id_to_indicator_id / list_step_ids 工具函数
- orchestrator.py 动态按 group 顺序注册 24 个 indicator step
(国标字段规范=100, 证件信息=200, 身份信息=300, 民政信息=400)
- step7_standards.py 新增 run_step7_for_indicator,每个 indicator
独立 section_key (standards_ind_XXX),独立 tab
- 旧 run_step7() 保留 (向后兼容: 跑全部按 4 group 输出)
校验层:
- IND-301 用 sample_field_pairs.sql
- IND-302 用 sample_field_groups.sql
- 84 单测覆盖所有 indicator (tests/test_indicators.py)
协议层:
- 沿用上轮的 tab_protocol;每个 indicator 一个独立 tab
(1 KPI 违规字段 + 1 KPI 检查字段 + 2 表: 指标汇总 + 违规明细)
详细工作记录见 docs/WORKLOG.md。
Showing
This diff is collapsed.
standards/data_loader.py
0 → 100644
standards/ind_101_id_type.py
0 → 100644
tests/test_indicators.py
0 → 100644
This diff is collapsed.
This diff is collapsed.
Please register or sign in to comment