Files
bid-doctor/docs/analysis/03-functional-requirements.md
YANG JIANKUAN 604e889ca4 docs(architecture): 完成技术验证 S1–S4,确定 FR-M2-05/06 目标值
- spikes/:Word 转 PDF(Gotenberg)、格式识别、原句坐标、DeepSeek 抽取四项验证代码与两版提示词;样本派生产物和 .env 不进 git
- tech-validation.md:完整结论。四项都可行:WPS 字体字符集要修正并改用行高调整过的字体;格式识别不需要 Docling;表格内切句待改进;抽取需第三道依据校验与规则兜底
- architecture.md:§3.5 加预处理与字体包,§3.6 证据校验改为三道,§10 回填结论
- 03 功能需求与 decisions.md(TV1):召回 ≥ 99%、采纳准确率 ≥ 95%、页码 100%、高亮正文 ≥ 98% / 表格 ≥ 95%

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:46:49 +08:00

250 lines
14 KiB
Markdown
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.

# 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 集成需要的「技术参数」。字段定义见 `05-it-integration-domain.md` §3。
| 类别 | 内容 |
|---|---|
| 资格条件 | 通用资格 + 特定资格 + 信用要求,以及每条要求的证明材料 |
| 无效 / 废标条款 | 法规列明的情形 + 招标文件自己规定的情形 + 所有 ★ 实质性条款 |
| 评分办法 | 评标方法、价格 / 技术 / 商务分值、每个评分项(分值、标准、证明材料)、中小企业价格扣除 |
| 关键日期与递交 | 截止时间、开标时间、提疑 / 质疑截止、保证金、投标有效期、递交方式、份数、签章、密封 / 加密 |
| 技术参数 | 参数项、要求值、比较方式(≥ ≤ = 包含 支持)、重要性(★ / ▲ / 一般)、所属包 |
**验收**
- 每条清单项至少有一个出处(文件 + 页码 + 原句);没有出处的进「待确认」区(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) | 同上 |
级别规则:
| 清单项 | 致命 | 重要 | 提示 |
|---|---|---|---|
| ★ 条款、资格条件、无效 / 废标条款 | ✓ | | |
| ▲ 参数、评分项缺证明材料 | | ✓ | |
| 一般参数、其他 | | | ✓ |
**验收**
- 每个问题都带两边的出处:招标原文,和投标原文(「未找到」时写明找过哪些分册、哪些章节)。
- 每个问题都对应一条清单项;用户能从问题跳到清单项,也能反过来。
### 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
- 额度账户按企业主体建;流水类型:发放 / 预扣 / 结算 / 退回 / 过期 / 人工调整(必须填原因)。
- 额度页:本期已用、剩余、按功能分布,流水可以查到具体是哪个项目、哪个任务。
- 用到 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 [新增]
用户 / 企业查询、套餐开通与续费、额度调整(带原因)、查看漏报 / 误报反馈、查看解析 / 检查任务的失败日志。