Files
bid-doctor/docs/analysis/03-functional-requirements.md
YANG JIANKUAN 0991d0237c docs(architecture): 物理数据模型 v0.1,确认 DM1–DM7
- data-model.md:约定、租户隔离落地、按模块的表清单、额度流水语义、
  清单项与检查的建模、删除流程、对象存储布局
- schema-draft.sql:40 张表的建表草案(PostgreSQL 16+)
- schema-draft-test.sql:租户隔离、额度流水、审计、删除等 16 项行为测试
- 回写架构 §3.2/§3.11/§9/§12、05 §3、FR-M2-05、FR-M3-03

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:34:43 +08:00

15 KiB
Raw Permalink Blame History

03 · 功能需求(MVP)

编号规则:FR-<模块>-<序号>。优先级沿用 PRD;标 [新增] 的是需求分析中补充的,已于 2026-11-02 确认(docs/decisions.md A1)。 每条都写了验收标准;测试阶段直接据此编写用例。


M2 · 招标文件解读

FR-M2-01 上传招标文件 · P0

  • 支持格式:PDF(文字版 / 扫描版)、DOCX、DOC、WPS。非 PDF 文件统一转成 PDF 后再处理,保证页码出处一致。
  • 按文件头识别真实格式,不看扩展名:样本里 10 份都叫 .doc,实际有 DOCX、不压缩的 zip 形式 DOCX、旧版 DOC 三种(07 F2)。
  • 解析 Word 时保留文字格式(斜体、下划线、加粗),因为有的文件用格式标注实质性条款(07 F1)。
  • 一个项目可以上传多个招标文件,比如正文和附件分开的情况。每个文件标注类型:招标文件 / 补遗 / 澄清答复。
  • 单文件大小和页数上限按套餐区分,购买页和上传页都要写明(具体数字随 D2 一起定)。

验收

  • 上传前就校验格式和页数,超出上限时直接说明原因和上限值,不创建任务、不扣点。
  • 加密或损坏的 PDF 能识别出来,提示用户换文件。

FR-M2-02 解析任务与进度 · P0

  • 解析是异步任务,状态有:排队中 → 解析中(分阶段)→ 成功 / 失败 / 已取消。
  • 发起时预扣 1 次解析;成功后结算;失败、超时、取消都退回。

验收

  • 进度页显示当前阶段,用户离开后任务继续跑,完成或失败都发站内通知。
  • 失败可以重试,重试不重复扣点;额度明细里能看到「预扣 → 退回」两条记录。
  • 300 页以内目标 10 分钟完成(PRD 7,上线前压测回填)。

FR-M2-03 项目基本信息提取 · P0 [新增:拆出单列]

提取项目名称、项目编号、采购人 / 招标人、代理机构、采购方式、预算金额 / 最高限价(按包)、包的划分、是否接受联合体、是否接受进口产品、是否专门面向中小企业、适用的法律体系(政府采购 / 招标投标)。

验收:每个字段都带出处;用户可以修改,修改留痕。

FR-M2-04 分包识别与选择 · P0 [新增]

  • 识别包 / 标段,以及每个包的预算、限价、资格、参数;
  • 用户选择要投的包,清单按「通用 + 所选包」过滤。

验收:没有分包时自动跳过这一步;分包识别错了用户能手工增删和归属。

FR-M2-05 结构化提取 · P0

按六类生成清单项:PRD 的四类,加上 IT 集成需要的「技术参数」,以及承载分项限价的「报价」(DM7)。字段定义见 05-it-integration-domain.md §3。

类别 内容
资格条件 通用资格 + 特定资格 + 信用要求,以及每条要求的证明材料
无效 / 废标条款 法规列明的情形 + 招标文件自己规定的情形 + 所有 ★ 实质性条款
评分办法 评标方法、价格 / 技术 / 商务分值、每个评分项(分值、标准、证明材料)、中小企业价格扣除
关键日期与递交 截止时间、开标时间、提疑 / 质疑截止、保证金、投标有效期、递交方式、份数、签章、密封 / 加密
技术参数 参数项、要求值、比较方式(≥ ≤ = 包含 支持)、重要性(★ / ▲ / 一般)、所属包
报价 分项限价、单价上限(总价限价和采购包限价在项目基本信息和分包里提取,FR-M2-03、04)

验收

  • 每条清单项至少有一个出处(文件 + 页码 + 原句);没有出处的进「待确认」区(FR-M2-07)。
  • ★ 条款全部进入「无效 / 废标」类,同时保留在原来的类别里(同一条要求可以有多个类别标签)。
  • 实质性条款按文件自己的标注规则识别:先找到「标注规则说明」(★ / * / 斜体加下划线 / 「必须」字样等),再按规则识别;不能写死成 ★(07 F1)。
  • 文件写明了实质性条款数量时(如「★ 项共 14 条」),和实际抽到的数量对比,不一致就提示用户。
  • 用 3 份以上真实 IT 集成招标文件做基准测试:人工标注的 ★ 条款召回率是主要指标(漏了就可能废标)。
  • 目标值(技术验证 S4 后确定,见 docs/decisions.md TV1):
    • 标注类实质性条款(★ / 斜体下划线等)召回率 ≥ 99%,靠规则兜底加模型实现;
    • 进入正式清单的条目准确率 ≥ 95%。

FR-M2-06 原文回链 · P0

  • 清单和原文并排显示,点击清单项就跳到对应页并高亮原句;一条可以有多个出处。
  • 扫描件按 OCR 文字坐标高亮。

验收:抽查 50 条,达到以下目标值(技术验证 S3 后确定,见 docs/decisions.md TV1):

  • 出处页码正确率 100%;
  • 原句高亮准确率:正文 ≥ 98%,表格内 ≥ 95%。

出处无法定位时,宁可进「待确认」,也不能给一个错的页码。

FR-M2-07 待确认区 · P0

  • 没有出处、或模型置信度低于阈值的提取结果,放进待确认区,不进正式清单。
  • 用户操作:采纳(补上出处,或标注「人工确认、无出处」)/ 修改后采纳 / 丢弃。

验收:待确认区的条目不参与 M3 检查。

FR-M2-08 项目检查清单 · P0

  • 解读结果自动生成清单,用户可以新增、修改、删除条目,所有修改都留痕(谁、什么时候、改前、改后)。
  • 清单整体状态:草稿 → 已确认;确认后再改,回到草稿并保留历史。
  • 用户新增的条目标注「人工添加」,可以没有出处。

验收:任意一条都能查到完整的修改历史;删除是软删除,可以恢复。

FR-M2-09 关键日期展示 · P0 [新增:拆出单列]

把关键日期汇总成项目时间线,在项目工作台显示倒计时。MVP 只做站内展示,不做主动提醒(截止日提醒放在 P1,和澄清辅助一起做)。

FR-M2-10 补遗追加(简化版)· P0 [新增]

  • 追加的补遗 / 澄清文件单独解析,扣 1 次解析;新提取的条目标注来源,并入清单。
  • 日期类字段以最新文件为准,在旧值上标「已被补遗 N 更新」,用户确认。
  • 不自动判断条目「新增 / 变更 / 作废」(P1)。

M3 · 废标风险检查

FR-M3-01 上传投标文件 · P0

  • 一个项目可以上传多个投标文件分册(商务 / 技术 / 报价 / 资格证明),格式同 FR-M2-01。
  • 只处理加密前的 Word / PDF 稿;如果上传的是电子投标平台的加密格式,要识别出来并说明原因。
  • 分册可以对应到电子投标客户端的节点(如苏采云的资格审查、符合性审查、商务、技术、报价节点),具体怎么对应,等种子用户访谈后确定(G15)。
  • 投标文件有版本:每次重新上传都是新版本,检查结果关联到具体版本。

FR-M3-02 发起检查 · P0

  • 前提:项目至少有一份解析成功的招标文件。清单没确认时可以检查,但要提示「清单未确认,检查结果以当前清单为准」。
  • 按 01-scope-roles.md §4 的计费口径扣点;同一项目 24 小时内复查不扣点。24 小时从上一次扣了额度的检查算起,窗口内的复查不重新计时(决策 P1)。
  • 每次检查产生一个「检查批次」,记下当时的清单版本、投标文件版本和规则版本。

FR-M3-03 响应完整性检查 · P0

对每条清单项,在投标文件里找对应的响应:

结论 含义 默认级别
已响应 找到了明确响应 不生成问题
未找到响应 所有分册里都没找到 按清单项类别定(见下表)
负偏离未说明 偏离表或正文里有不满足的地方,但没有说明 同上
疑似不满足 技术参数的响应值,按比较方式判断不满足要求(如要求 ≥ 32GB,响应 16GB) 同上

级别规则:

清单项 致命 重要 提示
★ 条款、资格条件、无效 / 废标条款 ✓
▲ 参数、评分项缺证明材料 ✓
一般参数、其他 ✓

验收

  • 每个问题都带两边的出处:招标原文,和投标原文(「未找到」时写明找过哪些分册、哪些章节)。
  • AI 判断的问题都对应一条清单项;规则检查的问题有对应清单项时也挂上,没有时(如大小写金额不一致)对应规则编号,界面显示规则说明(DM6)。用户能从问题跳到清单项,也能反过来。

FR-M3-04 形式要件检查 · P0

分成两类,分开显示:

  • 可自动检查:投标函、授权书等格式文件是否齐全,是否改动了格式文件里的固定文字;签字 / 盖章位置有没有(只看有无,不鉴定真伪,界面写明);落款日期是否合理;文件里有没有出现其他项目的名称、编号或采购人(照搬旧标书留下的)。
  • 需人工核对:份数、装订密封、递交方式、CA 加密等,文件里看不出来。这些生成「请核对」条目,用户勾选确认。勾选结果按项目保存,复查时沿用,报告写明勾选人和时间(决策 P2)。

FR-M3-05 资质匹配检查 · P0

  • 每条资格条件和评分项要求的证明材料,都要在投标文件中找到对应材料。
  • 如果有资质库(FR-M6-08),再用投标截止日判断证书有没有过期,等级够不够。
  • 三种预警:过期 / 等级不足 / 未覆盖。资质数据只来自用户自己的资质库和投标文件,系统不从外部补数据。

FR-M3-06 报价形式检查 · P0 [新增:从 P1 拆出并升级]

只检查形式,不评价报价是否合理,也不建议报价:

  • 投标报价是否超过限价,按三层检查:总价限价、采购包限价、分项限价 / 单价上限(07 F6)。超限在政府采购和招投标两个体系里都是法定无效 / 否决情形,见 05 §2;
  • 开标一览表和分项报价表的合计是否一致;大写和小写金额是否一致。注意:苏采云范本规定开标一览表和分项不一致时「不作无效处理,以开标一览表为准」,所以这项定为「重要」,不是「致命」,说明里要引用原文;
  • 只给一个报价(招标文件允许备选方案的除外)。

验收:报价数字只从投标文件读取,界面上没有任何「建议报价 / 报价区间」的字样。

FR-M3-07 人工确认 · P0

  • 每个问题的状态:待处理 → 已确认无误 / 已修改 / 忽略(必须填原因)。
  • 「致命」级问题选「已确认无误」时,也必须填一句说明(决策 U4);说明同时进入误报反馈。
  • 还有没处理的「致命」问题时,项目就绪状态是「未就绪」,但不阻止导出。
  • 支持批量处理(仅限「提示」级);每次处理都记录处理人和时间。
  • 每个问题都可以「反馈:判断有误」(J5)。

FR-M3-08 复查与状态沿用 · P0 [新增:明确规则]

  • 匹配规则:「清单项 + 问题类型」相同,就算同一个问题。
  • 问题还在:沿用上次的处理状态,标「沿用」;如果上次是「已修改」,改回「待处理」(说明没改好)。
  • 问题消失:自动关闭,标「本次已解决」;新出现的问题标「新增」。

FR-M3-09 检查报告导出 · P0

PDF 报告内容:

  1. 首页:项目信息、投标文件版本、检查时间、规则版本、检查覆盖范围(查了什么、没查什么)、免责声明(辅助检查结果,仅供投标前自查参考);
  2. 汇总:各级别的问题数和处理状态;
  3. 问题明细:问题、出处、处理状态、处理人、时间、忽略原因;
  4. 附录:需人工核对的条目,以及勾选结果。

验收:报告里不出现「通过 / 合格 / 保证」这类字样;生成的报告随项目归档,可以重复下载。


M6 · 基础平台

FR-M6-01 项目工作台 · P0

  • 项目列表:名称、采购人、所投包、截止倒计时、状态、就绪状态、致命问题数。
  • 筛选:状态、截止时间区间;排序默认按截止时间。

FR-M6-02 项目状态流 · P0

跟进中 → 编制中 → 已检查 → 已递交 → 已归档

状态 进入条件 说明
跟进中 新建项目 MVP 没有 M1,这个状态只是「刚创建」
编制中 第一份招标文件解析成功 自动
已检查 完成过至少一次检查 自动;另有「就绪 / 未就绪」标记
已递交 用户手动标记 项目改为只读;可以撤销(留痕)
已归档 用户手动操作 可以随时撤销归档

就绪状态和项目状态分开存:只有「已检查」状态才显示就绪状态(G7)。

FR-M6-03 额度计量 · P0

  • 额度账户按企业主体建;流水类型:发放 / 预扣 / 结算 / 退回 / 过期 / 人工调整(必须填原因)/ 免扣。
  • 免扣(决策 Q13):24 小时内复查不扣点(FR-M3-02、决策 P1)时,也记一行流水,类型「免扣(24 小时内复查)」,数量 0,关联到这次检查,让用户能核对复查确实没扣点。
  • 额度页:本期已用、剩余、按功能分布,流水可以查到具体是哪个项目、哪个任务。
  • 用到 80%、100% 时站内提醒,同一阈值每个周期只提醒一次。

验收:任何一笔扣点都能对应到一个任务;任何失败任务都没有净扣点。

FR-M6-04 账号与企业主体 · P0 [新增]

  • 手机号 + 验证码注册 / 登录;注册时填企业名称(MVP 不做企业认证,G9)。
  • 同一个手机号只能属于一个企业主体;风控:同一账号异地多设备并发登录时提示并限制(PRD 8.5)。

FR-M6-05 套餐与开通 · P0 [新增]

  • 免费版注册就有。
  • 专业版:用户在线提交开通申请(企业名称、开票信息)→ 对公转账 → 运营后台确认到账后开通,并开发票(G8)。线上自助支付以后再做。
  • 套餐到期后:数据保留,只读;额度清零(按 PRD,额度有效期跟着订阅周期走)。

FR-M6-06 数据删除 · P0

见 J4;保留策略见 G10。

FR-M6-07 审计留痕 · P0

  • 记录的事件:清单修改、清单确认、问题处理、报告导出、项目状态变更、删除、额度人工调整。
  • MVP 只存储,不提供用户自助导出(P2);运营后台可以查询。

FR-M6-08 最小资质库 · P0 [新增:从 P1 拆出]

  • 条目:资质名称、类型(资质证书 / 体系认证 / 软件著作权 / 其他)、等级、证书编号、发证机构、有效期起止、附件。
  • 只在 M3 资质匹配里用;完整的资产库(业绩、人员、历史标书)是 V1。

FR-M6-09 运营后台(最小版)· P0 [新增]

用户 / 企业查询、套餐开通与续费、额度调整(带原因)、查看漏报 / 误报反馈、查看解析 / 检查任务的失败日志。