Files
bid-doctor/server/migrations/versions/0006_check_verdict_implicit.py
YANG JIANKUAN cb0c2fcafe feat(check): 响应方式识别(C12)和「这条要不要投标人回答」;评测集纠错
- checklist/response_mode.py:按类别(技术 / 商务)识别招标文件的响应方式(逐条响应 / 默认接受),规则优先;
  两种写法冲突按逐条,认不出按逐条并写进覆盖范围。
- check/applicability.py:无效情形(★ / 斜体下划线标注的条款除外)、日期与递交、没要求附材料的评分标准、
  无需提供证明或由采购人查询的资格,不逐条找响应,写进覆盖范围;要求附证明材料按原文判断,中标后才交的不算。
- 默认接受的要求没找到响应:一般要求记 implicit_accepted、不出问题;实质性要求记 implicit_review、提示级
  人工核对;要附证明材料的不免(迁移 0006)。
- match.py:修同一行单元格又是别的条目候选句时的 KeyError(每条清单项单独记候选句,句子从总表里查)。
- 评测集:注入器同一要求的所有表格行一起改;散文、附件、格式文件里也响应了的要求不挂漏响应类问题;
  错位响应必须是另一个参数;复核判不成立的单元不再挂;regen.py 按固定种子重新生成。

开发集 17 份:规矩投标文件报出的问题 639 → 229,误报 21.3 → 12.4 / 100,召回 68% → 65%,致命级 20 → 21 / 32
(docs/architecture/check-eval.md §4)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 14:25:14 +08:00

32 lines
992 B
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""查标结论加「按招标文件默认接受」(决策 C12)。
- implicit_accepted:一般要求,不出问题;
- implicit_review:实质性要求,提示级人工核对。
Revision ID: 0006
"""
from __future__ import annotations
from alembic import op
revision = "0006"
down_revision = "0005"
VERDICTS = "'responded', 'not_found', 'negative_deviation', 'suspected_unmet', 'no_value', 'undetermined', 'scanned'"
def upgrade() -> None:
op.get_bind().exec_driver_sql(f"""
ALTER TABLE check_item_result DROP CONSTRAINT check_item_result_verdict_check;
ALTER TABLE check_item_result ADD CONSTRAINT check_item_result_verdict_check
CHECK (verdict IN ({VERDICTS}, 'implicit_accepted', 'implicit_review'));
""")
def downgrade() -> None:
op.get_bind().exec_driver_sql(f"""
ALTER TABLE check_item_result DROP CONSTRAINT check_item_result_verdict_check;
ALTER TABLE check_item_result ADD CONSTRAINT check_item_result_verdict_check CHECK (verdict IN ({VERDICTS}));
""")