M4: 采集管理(增量 / GS1 补全 / 去重冲突 / 质量评分 / 调度) #1
Reference in New Issue
Block a user
Delete Branch "devin/1780910557-m4-ingestion-mgmt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
目标
实现 M4 采集管理(在 M0–M3 已完成的地基/数据模型/OFF 采集/只读 API 之上),补齐持续运营所需能力:增量更新、第二数据源补全(GS1)、去重合并与字段级冲突解决、数据质量评分、定时调度。全部为 Python 侧(
ingestion/),只写库、可单测。改动
OpenFoodFactsAdapter.fetch_modified_since()用 OFF search API 按last_modified_t拉变更;etl/state.py+ 新表ingest_state(迁移0004,可逆)持久化每源水位,GREATEST(...)保证只前进。adapters/gs1.py(离线 JSON 映射 / GS1 风格 API 两种模式)+etl/supplement.py,只填空缺字段(品牌/厂商/GPC/产地/净含量),记字段级溯源,源标记gs1。etl/dedup.py对非 GTIN 重复(同名+品牌+净含量)择质量最高者为主记录,子行(溯源/图片/MSRP)重指向,标merged+canonical_id,写merge_log。etl/merge.py多源同字段按「源权重 > 新鲜度」择优,保留 provenance。etl/quality.py落到product.quality_score,公式0.4*完整度 + 0.3*源权重 + 0.2*多源一致 + 0.1*新鲜度,load_record()/merge_products()写入后重算。jobs/schedule.py(零额外依赖的周期循环)+jobs/update_off.py/jobs/dedup.pyCLI。docs/ingestion-management.md。测试
ruff check/ruff format --check全过;pytest33 passed(新增 19:纯函数 + 库集成)。0004up/down 可逆验证通过。