feat(check): 需人工核对(P2)和分项 / 单价上限(C7)

- 需人工核对:份数、密封、递交、CA 签章加密、解密、保证金这类文件里看不出来的要求,
  从正式清单按主题合并、带招标原文出处;manual-checks 接口按项目存勾选、写勾选人和时间,
  复查沿用;查标页加「需人工核对」一块,覆盖范围写明列了几条
- 「报价」类清单项:读标从采购需求的清单表规则读出分项 / 单价上限(checklist/price.py);
  查标交给规则 PRICE.OVER_CEILING_ITEM 比对分项报价表,不交给模型;规则集 2026.11-r2
- 版面工具(分页、分行、归栏)挪到 document/pipeline/layout.py,读标和查标共用
- 评测:price_defects.py 从规矩投标文件派生只带报价问题的 4 份(P01、P02、P03)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-11-04 17:31:32 +08:00
parent db1b1f6f9f
commit 81c58798d2
22 changed files with 888 additions and 84 deletions

View File

@@ -2939,9 +2939,18 @@ components:
type: object
required: [check_key, label, checked]
properties:
check_key: { type: string }
label: { type: string, examples: [正副本份数与装订] }
requirement_text: { type: [string, 'null'] }
check_key: { type: string, description: "rule:MANUAL.<主题>:SUBMIT、SIGN_ENCRYPT、DECRYPT、PAPER、DEPOSIT" }
label: { type: string, examples: [纸质投标文件的份数、装订、密封] }
requirement_text: { type: [string, 'null'], description: 代表这一主题的清单条目标题 }
related_items:
type: array
description: 同一主题的清单条目(公告、须知、无效情形里常各写一遍,按主题合并成一条核对)
items:
type: object
required: [id, title]
properties:
id: { $ref: '#/components/schemas/Id' }
title: { type: string }
citation:
oneOf:
- $ref: '#/components/schemas/Citation'