xsl
e7076c9c01
feat(report): deterministic vision provider and 32-dimension diagnosis assembly
dimensions.py 逐行编码需求文档 §4(32 项四要素、缺失显式 skipped)+
VisionProvider 接口位与确定性实现 + 规则引擎联动 rule_hits(T-P3-01/06)。
实现:
- dimensions.py:DimensionSpec 恰 32 项(number 1~32 连续,33/34 永不复用),
basic_coverage 口径机器可读:full 10 / label 3 / partial 8 / none 11,
初级覆盖 21/32(BASIC_FULL_KEYS + BASIC_COVERED_KEYS)。
- vision.py:VisionProvider Protocol(派生特征形状写进 docstring,真实
RTMPose/BiRefNet 实现后续按此替换)+ DeterministicVisionProvider(问卷
BMI/自评驱动体型与肤色,sha256(object_key+canonical问卷) 驱动其余枚举,
同输入同输出)+ build_vision_provider(未知名 CONFIG_ERROR)。
- vision_stage.py:derived_features 已存在 → skipped/reused(T-P3-09);
否则分析 → 写中间态并 flush;photo_meta.quality_flags 透传进产物(T-P3-01)。
- diagnosis_stage.py:32 维恒全键,缺输入显式 skipped+原因(T-P3-06 红线);
每维四要素 value/confidence/source/evidence/rule_hits + status;构造
RuleContext → RuleService 载入 published 规则 → evaluate,body_shape/color
类命中回落 #5/#19/#21,全量命中聚合进 #28/#30 的 rule_hits 与 evidence;
色板 #19/#20/#21 从 kb_color 按季型读取,库空 → skipped「色板未录入」。
测试:单测 29 项(32 项完整性/编号连续/确定性/工厂拒绝未知名;四要素齐全
性——故意缺问卷+缺视觉断言 32 键全在且全部 skipped 带原因;规则命中进
rule_hits 用内置最小规则集不连库);集成 1 项(种 2 条 published 规则 →
VisionStage → DiagnosisStage:中间态落库与复用 skipped/reused、32 维全键、
rule_hits 出现、kb_color 空时色板 skipped、coverage basic_full=10/32)。
全绿:ruff check/format、mypy packages/report、lint-imports;单测 536 通过
(3 处既有 skip)、集成 46 通过。
偏差说明:
1. 任务文档写 RulesService,实际类名为 RuleService(packages/rules/service.py),按实际代码调用。
2. kb_color 联表键采用四季代码 spring/summer/autumn/winter(仓库无既定口径),已在 vision.py 注释声明。
3. 任务文档只给 basic_coverage 四枚举,需求表格中的「粗判/8色/3色」归入 partial、「Top1」归入 label。
2026-08-14 22:14:54 +08:00
..
2026-08-14 20:09:12 +08:00
2026-08-14 21:19:31 +08:00
2026-08-14 16:23:14 +08:00
2026-08-14 00:54:40 +08:00
2026-08-14 00:54:40 +08:00
2026-08-14 16:27:21 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 20:12:27 +08:00
2026-08-14 16:16:26 +08:00
2026-08-14 16:27:21 +08:00
2026-08-14 19:59:15 +08:00
2026-08-14 00:54:40 +08:00
2026-08-14 20:09:12 +08:00
2026-08-14 00:54:40 +08:00
2026-08-14 01:02:13 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 11:28:35 +08:00
2026-08-14 16:21:52 +08:00
2026-08-14 22:14:54 +08:00
2026-08-14 22:14:54 +08:00
2026-08-14 22:14:54 +08:00
2026-08-14 20:12:27 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 21:16:51 +08:00
2026-08-14 20:12:27 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 20:10:21 +08:00
2026-08-14 20:10:21 +08:00
2026-08-14 20:10:21 +08:00
2026-08-14 20:10:21 +08:00
2026-08-14 20:04:46 +08:00
2026-08-14 16:23:14 +08:00
2026-08-14 00:26:39 +08:00
2026-08-14 00:54:40 +08:00
2026-08-14 16:27:21 +08:00
2026-08-14 16:17:49 +08:00