- bid_flow A3段: 链激活五条件(有招标文件+两阶段启用+骨架QC已过+technical章全pending+无kind='summary'摘要行),任一不满足整链跳过=存量行为(甘肃等已开写项目零影响);完成判定用摘要行(换代闭环:新招标文件reset清bid_tech_items+作废pending确认待办) - C段门禁_tech_gate_on: 链激活只挡technical章,商务/报价章照常流转(HT_TEMPLATE_CONFIRM移出BLOCKING_HT_TYPES降级章节级) - confirm_tech_template双模式分流: 有非technical章=标准流程只删建technical章+全序列重排order_no(走查修复:原min+idx顺延在新骨架章数多于原技术章时与后置商务/报价章撞号,合成ORDER BY会把报价章插进技术章中间);无=纯技术流程整表清落;重确认守卫收窄到待替换范围 - record_tech_summary: 裁剪摘要落bid_tech_items kind='summary'(六类覆盖+模版来源+章数),幂等覆盖,失败不阻塞确认 - _reset_analysis_for_new_file: bid_tech_items入清空表清单+作废pending骨架确认待办 - chapter_detail: technical章注入tech_summary+list_tech_items提示(老库无表静默降级) - BID_FLOW_STAGES 14阶段: +tech_analysis(yes)/tech_qc(warn)/template_confirm(warn,dep=tech_analysis,裁头段必连带裁确认段) - bid_task_tree: analyst加tech维度组/QC加tech_items组/DIM_QCS补tech - README+DESIGN v1.6同步(3.7节A3设计+门禁表tech_template_confirm行)
333 lines
23 KiB
Markdown
333 lines
23 KiB
Markdown
# 投标产线(bidding_general)设计文档
|
||
|
||
> 对照开发产线(`sdlc_general`)设计,复用平台通用内核(项目/会话/任务链/人类任务/交付件/问答冒泡/技能分层),
|
||
> 只增量定义投标产线自己的 **阶段、角色、工具、技能、任务流转规则、交付件**。
|
||
> 版本:v1.6.0 创建:2026-08-26 修订:2026-09-17(v1.1 上传招标文件起点+QC 门禁;v1.2 编写分商务/技术角色+篇幅门禁+样板标书规范+并发编写;v1.6 标准流程技术标模版裁剪链 A3 段,见 3.7)
|
||
|
||
---
|
||
|
||
## 零、产线边界(v1.1 修订)
|
||
|
||
- 招标信息的**采集、摘要、审批归商机产线**。投标产线从「上传招标文件」开始:
|
||
用户/驾驶舱直接创建投标项目 → 上传招标文件 → 进入解析。
|
||
- `bid_tenders` 表保留,但只承载**招标文件解析抽取的商务要素**(项目名称/招标人/编号/
|
||
截止时间/周期/预算/保证金/资质要求,source=tender_doc),不再有邮件采集与审批状态机。
|
||
- 已删除:邮箱采集(bid_mail.py、bid_mail_accounts 表/页面)、招标审批(tender_approval 人类任务)、
|
||
摘要/审批/存档工具(fetch_tenders/summarize_tender/submit_tender_approval/approve_tender 等)、
|
||
招标信息状态机(new→summarized→pending_approval→…)。
|
||
|
||
---
|
||
|
||
## 一、业务流程
|
||
|
||
| # | 业务动作 | 承担者 | 落库 |
|
||
|---|---|---|---|
|
||
| 1 | 创建投标项目 + 设定参与人员 | 驾驶舱 / 人 | sd_projects(pipeline_id=bidding_general) + bid_members |
|
||
| 2 | 等待上传招标文件 | 人(阻塞门禁,上传后自动完成) | pipeline_human_tasks(tender_file_upload) + bid_tender_files |
|
||
| 3 | 抽取评分项及得分规则 | agent.tender_analyst | bid_scoring_items |
|
||
| 4 | 抽取所需资质 | agent.tender_analyst | bid_qualifications |
|
||
| 5 | 抽取投标文件要求(章节结构/格式/份数/密封)+ 商务要素 | agent.tender_analyst | bid_doc_requirements + bid_tenders(source=tender_doc) |
|
||
| 6 | 生成章节骨架(评分项挂载) | agent.tender_analyst | bid_chapters |
|
||
| 7 | **解析产出 QC 契合度审核(四类逐类,10 分制 >9.5 放行,否则改进意见退回重做)** | agent.qc | bid_qc_reviews |
|
||
| 8 | 从公司投标知识库获取所需资质文档 | agent.bid_prep | bid_qualifications.kb_doc_id ← bid_kb_docs |
|
||
| 9 | 发布人类应提供的文件清单 | agent.bid_prep(阻塞门禁) | pipeline_human_tasks(human_docs_request) |
|
||
| 10 | 按投标文件要求分章节编写投标文件(商务/技术分角色,并发) | agent.bid_writer / agent.bid_biz_writer | bid_chapters |
|
||
| 11 | 每章节完成后对照招标/投标文件要求评审,分数不够给改进意见重做 | agent.bid_reviewer | bid_reviews(scope=chapter) → 章节循环 |
|
||
| 12 | 合成标书 | agent.bid_compositor | bid_documents(docx) |
|
||
| 13 | 对整个标书评审 + 按评分项和得分规则打分 | agent.bid_scorer | bid_reviews(scope=whole) + bid_scores |
|
||
| 14 | 不合适 → 改进意见 → 修改问题章节 → 评审 → …… 直到得分通过 | 机制(整书循环) | bid_scores.target_chapter_id → 章节回 rejected |
|
||
| 15 | 交付确认 | 人 | pipeline_human_tasks(bid_delivery_confirm) → 项目 completed |
|
||
|
||
---
|
||
|
||
## 二、阶段与角色
|
||
|
||
| 阶段 | 角色规范名 | 职责 |
|
||
|---|---|---|
|
||
| 立项与上传 | 驾驶舱 + 人 | 建项目、配人、上传招标文件 |
|
||
| 招标文件解析 | `agent.tender_analyst` | 抽取评分项+得分规则、所需资质、投标文件要求、商务要素,产出章节骨架 |
|
||
| 解析产出 QC | `agent.qc` | 四类产出对照招标文件原文按 10 分制审核契合度,>9.5 放行,否则改进意见退回 |
|
||
| 资料准备 | `agent.bid_prep` | 知识库资质匹配、缺失项发布人类文件清单 |
|
||
| 章节编写 | `agent.bid_writer`(技术标)/ `agent.bid_biz_writer`(商务标) | 按章节骨架逐章写作(一章一任务、并发派发);篇幅与要素达标,搜不到冒泡 |
|
||
| 章节评审 | `agent.bid_reviewer` | 对照招标要求+得分规则逐章打分,不达标退回重写 |
|
||
| 标书合成 | `agent.bid_compositor` | 合成 docx(封面/目录/页码),产出交付件 |
|
||
| 全书评分 | `agent.bid_scorer` | 按评分项+得分规则给整书打分、生成改进意见并映射章节 |
|
||
| 任务验收 | `agent.pm` | 任务审核/验收 |
|
||
| 合规检查 | `agent.qc`(复用) | 解析产出契合度审核(本产线 QC 的主职责) |
|
||
|
||
> 角色命名遵守平台规范:agent 角色 = `agent.{role}`,人类角色 = RBAC `{orgtype}.{role}`。
|
||
> **RoleSpec.next_role 全部留空**:投标是「一章一任务 + 多级回退循环」扇出结构,
|
||
> 流转一律由 `bid_flow` 状态对账器(每 15s)决定,它是角色任务唯一创建者。
|
||
|
||
---
|
||
|
||
## 三、任务流转规则
|
||
|
||
### 3.1 主链(机制驱动,非 LLM 驱动)
|
||
|
||
```
|
||
[立项] create_bid_project → sd_projects + 「上传招标文件」人类任务(阻塞)
|
||
↓ 上传完成(对账器自动关闭上传任务)
|
||
agent.tender_analyst → 评分项 / 资质 / 投标文件要求 / 商务要素 / 章节骨架
|
||
↓
|
||
agent.qc(A2 QC 门禁)→ 四类产出逐类契合度审核(10 分制)
|
||
│ 得分 > 9.5 → 该类放行
|
||
│ 不通过 → 改进意见 → 清空该类产出 → 解析重做(携带意见)→ 重审
|
||
│ 轮次超限(默认 3)→ 抛人工(qc_escalation 阻塞,逃逸阀:人工修/强制放行)
|
||
↓ 全部放行
|
||
agent.bid_prep → 知识库资质匹配 + [人类任务:应提供文件清单](阻塞)
|
||
↓
|
||
agent.bid_writer → 逐章写作(每章一个任务,可并行)
|
||
(section=business 的章节派 agent.bid_biz_writer,其余派 agent.bid_writer)
|
||
↓ 章节 written
|
||
agent.bid_reviewer → 章节评审打分
|
||
↓ 全部章节 approved
|
||
agent.bid_compositor → 合成标书 docx
|
||
↓
|
||
agent.bid_scorer → 整书评分
|
||
↓ 通过
|
||
[人类任务:交付确认] → 项目 completed
|
||
```
|
||
|
||
### 3.2 QC 门禁:解析产出契合度审核(v1.1 新增)
|
||
|
||
- **审核对象(四类,逐类审核)**:
|
||
| qc_type | 落库表 |
|
||
|---|---|
|
||
| `scoring_items` 评分项+得分规则 | bid_scoring_items |
|
||
| `qualifications` 所需资质 | bid_qualifications |
|
||
| `doc_requirements` 投标文件要求 | bid_doc_requirements |
|
||
| `chapter_outline` 章节骨架 | bid_chapters |
|
||
- **判定**:agent.qc 对照招标文件原文逐项核对,按 10 分制打契合度分;
|
||
**得分高于通过分(`bid_qc_pass_score`,默认 9.5)才放行**(严格大于)。
|
||
- **不通过**:改进意见必填(缺什么/错在哪/对照原文哪一处)→ 系统清空该类产出物
|
||
→ 对账器重派解析任务(params.qc_redo=1 + qc_improvements 携带意见)→ 重抽 → 重审。
|
||
- **轮次上限**:单类审核超 `bid_qc_max_round`(默认 3)→ 抛 `qc_escalation` 阻塞人工任务。
|
||
逃逸阀:人工在产出物管理页修正后重新提交,或在审核记录页把该记录 passed 改 1 强制放行。
|
||
- **重做轮次上限**:解析重做任务完成数超 `bid_qc_max_round` 且产出仍缺 → 同样抛人工,防无限循环。
|
||
- 首跑解析重试上限(MAX_ANALYST_ATTEMPT=2)只计首跑任务,QC 退回的重做不计入。
|
||
- 记录落 `bid_qc_reviews`(qc_type/round/fit_score/pass_score/passed/improvement)。
|
||
|
||
### 3.3 循环一:章节级评审回退
|
||
|
||
- 触发:`review_chapter` 判定 `score / max_score < chapter_pass_ratio`(默认 0.8)
|
||
- 动作:章节 `status=rejected` + `review_comment` 落库 + `revise_count += 1`
|
||
- 机制:存在 rejected 章节且无在办编写任务 → 对账器自动派生 `agent.bid_writer` 重写任务(params 带 `chapter_id`)
|
||
- 上限:`revise_count > bid_max_revise`(默认 3)→ 抛人类介入,不无限重做
|
||
|
||
### 3.4 循环二:整书评分回退
|
||
|
||
- 触发:`score_bid` 总分率 `< bid_pass_ratio`(默认 0.85),或存在否决项(`is_veto`)未响应
|
||
- 动作:`bid_scores` 逐评分项落分 + `improvement` + `target_chapter_id`
|
||
- 机制:把 `target_chapter_id` 命中的章节置 `rejected` → 派生 `bid_writer` 任务 → 重写 → 章节评审 → 全部通过 → 重新合成 → 重新评分
|
||
- 轮次记录 `bid_reviews.round`,上限 `bid_max_round`(默认 3)→ 抛人类介入
|
||
- 改进意见未映射到章节 → 抛人工指定(不静默丢失)
|
||
|
||
### 3.5 阻塞门禁(人类任务)
|
||
|
||
| task_type | 语义 | 阻塞范围 |
|
||
|---|---|---|
|
||
| `tender_file_upload` | 等待上传招标文件(上传后自动完成) | 项目全部角色任务 |
|
||
| `human_docs_request` | 人类应提供的文件 | 项目全部角色任务 |
|
||
| `qc_escalation` | 解析产出 QC 连续不达标 | 项目全部角色任务 |
|
||
| `tech_template_confirm` | 技术方案骨架用户确认(标准流程 A3 段链激活时;2026-09-17 起从全局阻塞降级为**章节级**:只挡 technical 章,商务/报价章照常) | technical 章节编写 |
|
||
| `bid_delivery_confirm` | 最终标书交付确认 | 项目收尾(不阻塞派发) |
|
||
|
||
**门禁的守门位置:投标产线的角色任务唯一创建者是 `bid_flow` 对账器**(每 15 秒状态对账)。
|
||
对账器在创建任务前就检查 `pipeline_human_tasks.project_id = <项目id> AND status='pending'`,
|
||
有阻塞任务直接不派 —— 门禁在**创建源头**,不在引擎派发层。
|
||
|
||
> ⚠️ 概念区分(重要):`tenant_id` 是引擎的通用租户键(宿主可提供为 org_id / user_id 等)。
|
||
> **只有角色任务(pipeline_id='role_task')这个具体场景约定 `tenant_id = project_id`**。
|
||
> 这是角色任务派发机制的约定,不是引擎通用规则 —— 引擎层 SQL 不得引用该等价关系,
|
||
> 引擎对投标产线零特判;投标的阻塞语义全部收敛在投标产线自己的代码(bid_flow)里。
|
||
|
||
### 3.6 编写分角色、篇幅门禁与并发(v1.2 新增)
|
||
|
||
**分角色**:章节按 `bid_chapters.section` 分流——
|
||
- `business`(投标函/报价/资质证明/承诺/业绩,骨架生成时按标题关键词自动推断)→ `agent.bid_biz_writer`;
|
||
- `technical`/`price` → `agent.bid_writer`。
|
||
- 两类内容不混写;capability 共用 `bid_write_capability`(工具白名单相同,角色技能不同)。
|
||
|
||
**篇幅门禁(机制层强制,review_chapter 内)**:
|
||
- 技术标章节字数 < `bid_chapter_min_words`(默认 800)或商务标 < `bid_chapter_min_words_biz`(默认 500)
|
||
→ 直接不通过 + 自动附「篇幅不达标」意见;与得分率门限取并集。
|
||
- 内容完整性由评审员按 bid-doc-spec 查(评分子维度漏应答/商务要素缺失 = 退)。
|
||
|
||
**搜不到 → 冒泡**:写者检索知识库无所需素材/案例/参数时 ask_question 冒泡人类,禁编造凑字数。
|
||
|
||
**样板标书规范**:`bid_kb_docs.doc_type=sample_bid`;PM 调 `extract_writing_spec` 抽取
|
||
章节结构惯例/篇幅口径/表格图表示例/商务要素清单,落 `bid_doc_requirements(req_type=writing_spec)`,
|
||
写者与评审参照。无样板时提示人工录入。
|
||
|
||
**并发编写**:对账器 C 块单轮最多派 `bid_write_concurrency`(默认 4)个编写任务;
|
||
引擎 agent poller 另有每项目并发上限 `max_agents_per_project`(默认 4)兜底,任务间 asyncio 并发执行。
|
||
|
||
### 3.7 标准流程技术标模版裁剪链(A3 段,v1.6 新增)
|
||
|
||
标准投标流程内置与纯技术方案流程**同源**的三段链,产出标书「技术方案部分」:
|
||
|
||
```
|
||
tech_analysis(agent.tender_analyst,analysis_dim=tech,六类技术评估项落 bid_tech_items,
|
||
对标招标文件技术需求部分)
|
||
↓
|
||
tech_qc(agent.qc,qc_type=tech_items,对标招标原文,10 分制同款门禁)
|
||
↓
|
||
template_confirm(agent.pm,task_kind=tech_template:find_template_candidates 三级检索
|
||
→ propose_tech_template 骨架六类覆盖硬校验 → tech_template_confirm 用户确认待办)
|
||
↓ 用户确认(confirm_tech_template 标准模式)
|
||
只替换 technical 章骨架(新章落原技术章 min(order_no) 位置,商务/报价章不动)
|
||
+ 落 kind='summary' 裁剪摘要行 → 技术章解禁开写
|
||
```
|
||
|
||
**链激活五条件**(bid_flow A3 段,任一不满足整链跳过 = 存量行为,技术章直接按招标骨架编写):
|
||
1. 有招标文件(n_files > 0)且章节骨架已生成;
|
||
2. `tech_analysis` + `template_confirm` 两阶段都启用(BID_FLOW_STAGES 14 阶段,
|
||
裁 tech_analysis 必连带裁 template_confirm——依赖断裂校验拒绝单裁);
|
||
3. 骨架维度 QC 已通过(QC_TYPE_OUTLINE ∈ _qc_passed_eff——outline 重做会清空
|
||
bid_chapters,防把已确认模版骨架连锅端);
|
||
4. 项目存在 technical 章节且全部 pending(任一 writing/written/approved = 已按原骨架
|
||
推进或存量项目,不激活);
|
||
5. 无裁剪摘要行(`bid_tech_items kind='summary'`,confirm 时落库、新招标文件 reset 时清除)。
|
||
|
||
**完成判定定案用摘要行**,不用 done 待办或章节状态:换代后旧 done 待办仍在会永久锁死
|
||
新代链;替换后的新骨架也是 pending,靠章节状态判完成会复活死循环。
|
||
|
||
**门禁语义**:链激活时 C 段只挡 technical 章(`_tech_gate_on`),商务/报价章照常流转——
|
||
`tech_template_confirm` 待办已从全局阻塞降级为章节级依赖(bid_common BLOCKING/HT 定义同步)。
|
||
|
||
**共用段实现**:`_reconcile_tech_analysis_qc`(T1/T2:评估项派发+QC+升级)与
|
||
`_reconcile_template_confirm`(T3:模版任务派发+确认待办补发+驳回重派)——纯技术方案分支
|
||
`_reconcile_tech_proposal` 重构为调共用段,逻辑只此一份;`flow_key` 写进任务 params 区分来源。
|
||
`confirm_tech_template` 按「项目是否存在非 technical 章」自动分流标准/纯技术方案双模式,
|
||
重确认守卫收窄到待替换范围。**tech 维度不进 ANALYSIS_DIMS、不走 PM 编排**(对账器直接派发,
|
||
避免编排误派/掉链误判)。新招标文件导入 reset:清 bid_tech_items + 作废 pending 骨架确认待办。
|
||
|
||
### 3.8 硬规则
|
||
|
||
- 章节写作任务与章节一对一(`params.chapter_id`),禁止一个任务写多章。
|
||
- 评审/评分只由 `agent.bid_reviewer` / `agent.bid_scorer` 执行,写作角色不得自评;
|
||
解析产出契合度审核只由 `agent.qc` 执行(capability 按角色缩小,源头杜绝越权)。
|
||
- 得分/改进意见必须落库(`bid_reviews`/`bid_scores`/`bid_qc_reviews`),不接受"文档里声称评审通过"。
|
||
- 案例与业绩一致性:技术方案引用的案例必须能对应到 `bid_kb_docs(doc_type=case)` 真实合同,
|
||
禁止虚构客户/金额(写进 bid-doc-spec 技能,评审项硬检查)。
|
||
|
||
---
|
||
|
||
## 四、数据表(bid_ 前缀,与 sd_/pipeline_ 表共库 pipeline)
|
||
|
||
| 表 | 说明 | 关键字段 |
|
||
|---|---|---|
|
||
| `bid_tenders` | 招标商务要素(解析抽取) | project_id/source/title/purchaser/tender_no/summary/bid_start_at/bid_deadline/project_period/budget_amount/deposit_amount/qualification_req |
|
||
| `bid_members` | 项目参与人员 | project_id/user_id/member_role/duty |
|
||
| `bid_tender_files` | 招标文件及附件 | project_id/tender_id/file_name/file_path/file_type/extract_status/content_text |
|
||
| `bid_scoring_items` | 评分项 + 得分规则 | project_id/section/item_name/max_score/scoring_rule/is_veto/target_chapter_no/source_ref |
|
||
| `bid_qualifications` | 所需资质 | project_id/qual_name/requirement/is_mandatory/kb_doc_id/match_status/owner |
|
||
| `bid_doc_requirements` | 投标文件要求 | project_id/req_type/chapter_no/chapter_title/requirement/page_limit |
|
||
| `bid_qc_reviews` | **解析产出 QC 审核记录** | project_id/qc_type/round/fit_score/pass_score/passed/improvement/task_id |
|
||
| `bid_chapters` | 标书章节 | project_id/chapter_no/title/scoring_item_ids/status/version/content/review_score/revise_count/assignee_role |
|
||
| `bid_reviews` | 评审记录(章节级/整书级) | project_id/scope/chapter_id/round/reviewer/score/max_score/passed/comments |
|
||
| `bid_scores` | 评分明细(按评分项) | project_id/review_id/scoring_item_id/score/max_score/reason/improvement/target_chapter_id |
|
||
| `bid_kb_docs` | 公司投标知识库 | org_id/doc_type/doc_name/tags/file_path/content_text/valid_until/status |
|
||
| `bid_documents` | 合成标书 | project_id/version/file_path/page_count/total_score/status |
|
||
|
||
复用平台表:`sd_projects`(项目,pipeline_id=bidding_general)、`pipeline_tasks`(角色任务链)、
|
||
`pipeline_human_tasks`(人类任务)、`pipeline_deliverables`(交付件)、`pipeline_agent_questions`(问答冒泡)。
|
||
|
||
---
|
||
|
||
## 五、工具
|
||
|
||
### 5.1 主 agent(驾驶舱)工具 —— `PipelineAbility.tools`
|
||
|
||
**立项与人员**:`create_bid_project` `assign_members` `list_members` `request_tender_file` `list_tender_files`
|
||
|
||
**解析结果与 QC**:`list_scoring_items` `list_doc_requirements` `list_qualifications` `qc_report`
|
||
|
||
**知识库**:`search_bid_kb` `list_kb_docs` `add_kb_doc` `request_human_docs`
|
||
|
||
**章节与标书**:`list_chapters` `chapter_detail` `list_bid_documents` `list_reviews` `bid_score_report`
|
||
|
||
**诊断推进**:`diagnose_bid` `advance_bid`
|
||
|
||
**通用复用**(引擎级,来自 shared_ability):`create_task` `list_tasks` `task_detail` `approve_task`
|
||
`complete_task` `cancel_task` `reset_task_retry` `start_agents` `diagnose_project`
|
||
`list_deliverables` `view_deliverable` `list_questions` `answer_question` `escalate_question`
|
||
`list_projects` `start_project` `complete_project` `archive_project` `pause_project` `resume_project`
|
||
`list_role_models` `set_role_model` `submit_deliverable` `approve_deliverable` `reject_deliverable`
|
||
|
||
### 5.2 角色 agent 能力工具(capability → TOOL_SCHEMAS)
|
||
|
||
| capability | 工具 | 授予角色 |
|
||
|---|---|---|
|
||
| `bid_analysis_capability` | `read_tender_file` `list_tender_files` `extract_from_file` `add_scoring_item` `add_qualification` `add_doc_requirement` `create_chapter_outline` `list_scoring_items` `list_doc_requirements` `mark_file_extracted` | agent.tender_analyst |
|
||
| `bid_qc_capability` | `start_qc` `finish_qc` `list_qc` `qc_report`(+ 只读工具) | agent.qc |
|
||
| `bid_kb_capability` | `search_bid_kb` `kb_doc_detail` `list_qualifications` `match_qualification` `mark_qualification_missing` `auto_match_qualifications` `request_human_docs` | agent.bid_prep |
|
||
| `bid_write_capability` | `list_chapters` `chapter_detail` `write_chapter` `submit_chapter` `search_bid_kb` `kb_doc_detail` `list_scoring_items` | agent.bid_writer |
|
||
| `bid_review_capability` | `review_chapter` `approve_chapter` `reject_chapter` `list_reviews` `list_chapters` `list_scoring_items` `list_doc_requirements` | agent.bid_reviewer |
|
||
| `bid_compose_capability` | `compose_bid` `list_chapters` `list_bid_documents` `read_bid_document` `list_doc_requirements` | agent.bid_compositor |
|
||
| `bid_score_capability` | `start_bid_score` `add_score_item_result` `finalize_bid_score` `request_chapter_revise` `read_bid_document` `list_scoring_items` `list_bid_documents` `bid_score_report` | agent.bid_scorer |
|
||
|
||
> capability 按角色职责缩小 —— 写作角色拿不到 `review_chapter`/`score_bid`,评审角色拿不到 `write_chapter`,
|
||
> 解析角色拿不到 `finish_qc`,QC 拿不到 `extract_from_file`。越权在源头杜绝,不靠事后 RBAC 校验。
|
||
|
||
---
|
||
|
||
## 六、技能(skills_library/pipelines/bidding_general/)
|
||
|
||
### common/(产线通用规范,状态机 + 门禁)
|
||
| 技能 | 内容 |
|
||
|---|---|
|
||
| `bid-workflow` | 产线总纲:阶段链、QC 门禁、两级循环、阻塞门禁、机制 vs LLM 分界 |
|
||
| `bid-qc` | 解析产出 QC 契合度审核规范:四类审核清单、10 分制打分口径、退回重做流程(capability 声明) |
|
||
| `bid-chapter` | 章节状态机 + 评审循环 + 重做上限 + 一章一任务 |
|
||
| `bid-review` | 评审与评分规范:对照评分项/得分规则打分、改进意见→章节映射、否决项处理 |
|
||
| `bid-qualification` | 资质匹配规范:知识库检索 → matched/missing/human_required → 人类文件清单 |
|
||
| `bid-doc-spec` | 投标文件编写规范:章节骨架来自评分标准原文、操作层内容、案例与业绩一一对应、禁虚构 |
|
||
| `team-communication` | 问答冒泡链(复用开发产线同名规范) |
|
||
|
||
### roles/(角色定义,frontmatter 声明 capability)
|
||
`agent.tender_analyst` `agent.bid_prep` `agent.bid_writer` `agent.bid_reviewer`
|
||
`agent.bid_compositor` `agent.bid_scorer` `agent.qc` `agent.pm`
|
||
|
||
---
|
||
|
||
## 七、代码落位
|
||
|
||
| 内容 | 位置 | 理由 |
|
||
|---|---|---|
|
||
| 能力模块(bid_*_capability / bid_flow / bid_common) | pipeline-bidding 仓库 | 产线能力包住自己仓库,宿主不装零接触 |
|
||
| 主 agent 能力包 `bid_ability.py` | pipeline-bidding 仓库 | 与能力模块同仓;ability 注册表在 core,任何模块可注册 |
|
||
| 表 / CRUD / UI / dspy / RBAC | pipeline-bidding 仓库 | 产线业务资产独立仓库,宿主 load_pipeline_bidding() 装载 |
|
||
| 技能 | pipeline-core/skills_library/pipelines/bidding_general | 技能库统一目录,部署期同步到机构工作空间 |
|
||
| 引擎改动 | 仅 `exec_capability_tool` 支持全路径 module(8 行) | 引擎零投标特判 |
|
||
|
||
---
|
||
|
||
## 八、门限参数(appbase params 表 + DEFAULT_PARAMS 兜底)
|
||
|
||
| 参数 | 默认 | 含义 |
|
||
|---|---|---|
|
||
| `bid_chapter_pass_ratio` | 0.8 | 章节评审通过门限(得分率) |
|
||
| `bid_pass_ratio` | 0.85 | 整书评分通过门限(得分率) |
|
||
| `bid_max_revise` | 3 | 单章节最大重做次数 |
|
||
| `bid_max_round` | 3 | 整书最大评分轮次 |
|
||
| `bid_qc_pass_score` | 9.5 | 解析产出 QC 契合度通过分(10 分制,严格大于才放行) |
|
||
| `bid_qc_max_round` | 3 | 单类产出 QC 最大审核轮次 / 解析重做轮次上限 |
|
||
| `bid_chapter_min_words` | 800 | 技术标章节最低字数(低于评审必退) |
|
||
| `bid_chapter_min_words_biz` | 500 | 商务标章节最低字数 |
|
||
| `bid_write_concurrency` | 4 | 章节编写单轮并发派发上限 |
|
||
|
||
---
|
||
|
||
## 九、验收口径
|
||
|
||
1. `bid_*` 12 张表建表成功,CRUD 页面可增删改查(含 bid_qc_reviews)。
|
||
2. 上传招标文件人类任务 pending 时,对账器不派发该项目任何角色任务(门禁生效);上传后任务自动关闭。
|
||
3. 解析任务产出评分项/资质/投标文件要求/章节骨架后,对账器自动派 `agent.qc` 审核任务。
|
||
4. QC 审核得分 >9.5 → 该类放行进入下一阶段;≤9.5 → 该类产出被清空 + 解析重做任务携带改进意见(DB 可查)。
|
||
5. QC 轮次超限 → `qc_escalation` 阻塞人工任务创建,项目暂停派发。
|
||
6. 章节评审不达标 → 章节 rejected + 自动派生重写任务(DB 可查)。
|
||
7. 整书评分不达标 → bid_scores 有 improvement + target_chapter_id,命中章节回 rejected。
|
||
8. 全流程任务链在 `pipeline_tasks` 中可追溯(role 从 tender_analyst 到 bid_scorer,含 agent.qc)。
|