feat(addendum): 补遗追加(FR-M2-10)
Some checks failed
ci / server (push) Has been cancelled
ci / web (push) Has been cancelled
ci / contract (push) Has been cancelled

- 招标文件解析后可以追加补遗 / 澄清:单独解析、扣 1 次;新条目标「补遗 N」进正式清单,清单回到草稿(AD1)
- 同一种日期、时间不同的旧条目标「已被补遗 N 更新」,逐条确认更新或保留两条(AD2、AD3)
- 项目字段的新值在概览「采用 / 不采用」:采用时以补遗为准、清掉人工值;采用截止时间时日期条目一起确认;
  没确认前查标用旧值,检查预览提示(AD4)
- 补遗不改项目名称、编号、采购人、代理机构、法律体系(更正公告标题会被抽成项目名称);时间比较按北京时间补时区
- 接口:fields/{key}/pending、checklist-items/{id}/supersession;清单项 origin_document、superseded_by;
  关键日期 replaces;解析结果 dates_superseded、fields_pending;检查预览 pending_updates
- 前端:补遗模式的上传页、解析页结果、概览确认、读标页来源筛选和日期确认、检查预览提示
- 决策 AD1–AD6;方案和落地记录 docs/architecture/addendum-plan.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
YANG JIANKUAN
2026-11-05 00:27:21 +08:00
parent ed6a2a907d
commit 6e0d4c1dd6
27 changed files with 752 additions and 45 deletions

View File

@@ -1634,6 +1634,11 @@ export interface components {
at: components["schemas"]["Timestamp"];
/** @description 人工改过(投标截止时间按项目字段的人工值显示) */
edited?: boolean;
/** @description 已按补遗确认更新:原来的时间和带来新值的文件(「已按补遗 1 更新 · 原为……」) */
replaces?: {
at: string;
document_label: string;
} | null;
/** @description 补遗带来了新值、等用户确认 */
superseded_pending?: boolean;
}[];
@@ -1813,6 +1818,10 @@ export interface components {
/** @description 重新解析时没再出现的旧条目 */
items_absent?: number;
lots_found?: number;
/** @description 补遗:更早文件里有几条日期条目被标「已被补遗 N 更新」(FR-M2-10) */
dates_superseded?: number;
/** @description 补遗:项目字段里有几个新值等确认 */
fields_pending?: number;
/** @description 没通过校验的原因码和条数(如 quote_too_short、value_unverified),评测和排查用 */
verify_failures?: {
[key: string]: number;
@@ -1947,6 +1956,11 @@ export interface components {
origin: components["schemas"]["Origin"];
/** @description 如「AI」「人工添加」「补遗 1」 */
origin_label?: string;
/** @description 来自哪份招标侧文件(招标文件、补遗 N、澄清 N);人工添加的为 null */
origin_document?: {
id: components["schemas"]["Id"];
label: string;
} | null;
zone: components["schemas"]["Zone"];
pending_reason?: components["schemas"]["PendingReason"] | null;
/** @description 人工确认、无出处 */
@@ -2002,6 +2016,8 @@ export interface components {
checklist_confirmed: boolean;
/** @description 待确认区条目不参与检查 */
pending_item_count?: number;
/** @description 补遗带来的新值、日期更新还没确认的处数;查标用旧值(AD4),只提示、不阻止 */
pending_updates?: number;
/** @description 默认用每个分册的最新版本 */
bid_documents: components["schemas"]["Document"][];
lot_ids: components["schemas"]["Id"][];