# 供应商招标报名模块
## 总体流程概述
供应商从获知招标公告到完成报名并获取投标资格,涉及**公告浏览 → 身份认证 → 报名申请 → 资质审核 → 费用缴纳 → 文件获取 → 投标文件上传**七大环节。本设计覆盖全流程的**页面交互**、**系统跳转**与**内部处理逻辑**,并充分复用现有 SRM 供应商库与统一认证体系。
```mermaid
%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#e91e63','lineColor':'#555','secondaryColor':'#f3f4f6'}}}%%
flowchart TD
subgraph 供应商端
A[浏览招标公告] --> B{是否已登录?}
B -- 是 --> D[点击“报名”]
B -- 否 --> C[登录/注册]
C --> D
D --> E[系统自动读取
联系人/手机号/营业执照]
E --> F[供应商确认信息并提交]
F --> G[报名提交成功
等待审核通知]
G --> H[收到审核结果通知]
H -- 通过 --> I[收到缴费通知
(招标方案评审通过后)]
H -- 不通过 --> J[查看拒绝原因]
J --> K{是否可重新提交?}
K -- 是 --> D
K -- 否 --> L[报名流程终止]
I --> M[进入缴费与投标环节
(后续流程)]
end
subgraph STP平台内部
STP1[接收报名请求] --> STP2[AI辅助资质审核
(核验已存证资质文件)]
STP2 --> STP3{是否需要人工评审?}
STP3 -- 是 --> STP4[推送人工评审任务]
STP3 -- 否 --> STP5[自动通过]
STP4 --> STP6[人工评审]
STP6 --> STP7[反馈结果]
STP5 --> STP8[更新报名状态]
STP7 --> STP8
STP8 --> STP9[形成报名通过单位名单]
STP9 --> STP10[发送审核结果通知]
STP10 --> STP11[等待招标方案评审通过]
STP11 -- 招标方案通过 --> STP12[发送缴费通知
解锁标书查看权限]
STP12 --> STP13[后续投标流程]
end
subgraph 外部系统
SRM[(SRM供应商库)]
OA[(OA审批系统)]
end
供应商端 -.-> STP平台内部
STP平台内部 -.-> SRM
STP平台内部 -.-> OA
SRM -- 供应商信息读取 --> STP2
OA -- 招标方案评审结果回调 --> STP11
```
## 页面流转与跳转设计
```mermaid
graph TD
A[招标公告详情页] -->|点击“立即报名”| B{登录检查}
B -->|未登录| C[登录/注册选择页]
C -->|选择登录方式| D[验证通过]
C -->|新用户注册| E[注册并同步至SRM]
E --> D
D --> F[报名信息确认页]
F -->|系统自动回填| G[联系人/手机号/营业执照
(只读展示,不可编辑)]
F -->|供应商可选择| H[投标标段(多选)]
F -->|供应商可填写| I[业绩简述/备注(可选)]
G --> J[确认信息并提交]
H --> J
I --> J
J --> K[报名提交成功页]
K --> L[等待审核通知(邮件/站内信)]
L --> M[审核通过/不通过通知]
M -->|不通过| N[查看原因,按需重新提交]
M -->|通过| O[报名通过名单公布
等待招标方案评审]
O --> P[招标方案通过→收到缴费通知]
P --> Q[进入后续缴费与投标环节]
style A fill:#fce4ec,stroke:#c2185b
style F fill:#e3f2fd,stroke:#1565c0
style K fill:#e8f5e9,stroke:#388e3c
style O fill:#fff3e0,stroke:#ff9800
```
## 系统交互时序图
```mermaid
sequenceDiagram
participant U as 供应商浏览器
participant STP as STP平台
participant SRM as SRM系统
participant OA as OA审批
participant Pay as 支付网关
participant AI as AI审核服务
U->>STP: 访问招标公告页面
STP-->>U: 展示公告内容
U->>STP: 点击“报名”
STP-->>U: 检测未登录,跳转登录页
U->>STP: 选择“使用SRM账号登录”
STP->>SRM: POST /api/v1/auth/login/for-stp {username, password}
SRM-->>SRM: 验证账号密码
SRM-->>STP: 200 { srmId, name, taxId, ... }
STP-->>STP: 建立本地会话,关联SRM ID
STP-->>U: 自动跳转至报名页
U->>STP: 填写报名表单 + 上传资质文件
STP->>AI: 启动AI初审(资质/风险/关联)
AI-->>STP: 初审意见(通过/警告/不通过)
alt 需要人工评审
STP->>STP: 生成待办任务
STP-->>U: 进入人工评审阶段
STP->>OA: 通知评审人员(站内/邮件)
OA-->>STP: 评审完成回调
else AI直接通过
STP-->>STP: 报名状态更新为“审核通过”
end
STP-->>U: 发送审核结果通知(邮件+站内信)
U->>STP: 查看缴费通知
STP-->>U: 展示缴费金额及支付方式
U->>Pay: 在线支付 / 上传银行凭证
Pay-->>STP: 异步通知支付结果(或凭证待确认)
STP->>OA: 发起财务确认审批(含凭证)
OA-->>STP: 审批通过(确认到账)
STP-->>U: 解锁招标文件下载权限
U->>STP: 下载招标文件
STP-->>U: 返回文件(加水印/加密)
U->>STP: 加密上传投标文件
STP->>STP: 文件哈希存证(区块链/哈希链)
STP->>SRM: 记录供应商投标状态(可选)
STP->>Archive: 归档报名材料
STP-->>U: 投标成功
```
## 招标报名页面:
```svg
```
## 页面元素定义表
| 序号 | 字段名称 | 数据来源 | 可编辑性 | 说明 |
| --- | ---------- | --------- | ---- | ---------------------------- |
| 1 | **项目名称** | 系统自动带入 | 只读 | 显示拟报名的投标项目名称 |
| 2 | **项目编号** | 系统自动带入 | 隐藏字段 | 内部项目编号,用于后台关联,页面不展示 |
| 3 | **公司名称** | SRM注册信息 | 只读 | 统一社会信用代码对应的企业全称 |
| 4 | **联系人** | SRM注册信息 | 只读 | 供应商主联系人姓名 |
| 5 | **联系电话** | SRM注册信息 | 只读 | 供应商注册手机号 |
| 6 | **电子邮件** | SRM注册信息 | 只读 | 供应商注册邮箱 |
| 7 | **投标标段** | 系统配置 | 可多选 | 仅当项目分标段时显示;可多选或全选 |
| 8 | **业绩证明材料** | 上传 / 用户档案 | 可编辑 | 首次上传自动归入用户档案,下次自动调出;用户可删除或新增 |
## 提交成功反馈页面
```svg
```
## 业绩证明材料管理规则
```mermaid
flowchart LR
subgraph 首次报名
A[上传业绩材料] --> B[提交报名]
B --> C[系统自动归入
用户档案]
end
subgraph 后续报名
D[进入报名页] --> E[系统自动调出
用户档案材料]
E --> F{用户操作}
F -->|选用已有| G[直接使用]
F -->|删除| H[从本次报名移除
(档案中保留)]
F -->|新增| I[上传新材料]
I --> J[归入档案]
G --> K[提交报名]
H --> K
J --> K
end
```
|规则|说明|
|---|---|
|**首次上传**|用户上传的业绩材料在报名提交后,系统自动复制一份归入用户档案(用户档案表),标记来源为“报名上传”|
|**后续复用**|用户进入报名页时,系统从用户档案中读取历史业绩材料,以列表形式展示,用户可直接选用|
|**删除**|用户在本次报名中删除某材料,仅从本次报名清单移除,用户档案中仍保留,不影响后续使用|
|**新增**|用户上传新材料,归入档案的同时也纳入本次报名,后续报名可继续复用|
|**去重**|系统按文件名+哈希值去重,同一文件不重复存储|
### 提交成功(邮件/站内信)
|项目|内容|
|---|---|
|**标题**|【STP平台】报名提交成功通知|
|**正文**|尊敬的 XX科技有限公司:
您对【2026年生产用原材料框架协议采购(标段A)】的报名已成功提交。
我们将对您的报名资格进行审核,审核结果将通过邮件和站内信通知您,请耐心等待。
如需查看报名状态,请登录STP平台“我的报名”页面。
🔗 [https://stp.bhtz.com/my-registrations](https://stp.bhtz.com/my-registrations)|
## 状态机与内部处理逻辑
| 状态码 | 状态名称 | 描述 | 触发动作 |
| ----------------- | ------ | --------------- | ----------------------- |
| `DRAFT` | 草稿 | 供应商正在查看报名页,尚未提交 | 保存草稿 |
| `SUBMITTED` | 已提交 | 确认提交报名,等待审核 | 触发AI初审,生成审核任务 |
| `AI_PASS` | AI自动通过 | 资质审核通过 | 进入“报名通过名单”候选池 |
| `MANUAL_REVIEW` | 人工评审中 | 需采购/供应商管理专员确认 | 推送待办,超时催办 |
| `REJECTED` | 审核不通过 | 资质不符/存在风险 | 发送拒绝原因,允许在截止前重新提交 |
| `APPROVED` | 报名通过 | 审核通过,已纳入报名通过名单 | **等待招标方案评审通过**(此处为关键状态) |
| `BID_PLAN_PASSED` | 招标方案通过 | 招标方案已过审 | **发送缴费通知**,进入后续流程 |
| `CANCELLED` | 已取消 | 供应商主动取消 | 归档取消记录 |
## 关键业务规则与异常处理
| 场景 | 处理方式 |
| ------------------------ | --------------------------------------- |
| **同一供应商重复报名** | 系统检测到同一税号或统一信用代码的供应商已报名,提示“已报名,不能重复提交”。 |
| **资质文件大小/格式不符** | 前端限制 + 后端二次校验,不符合时返回明确错误提示。 |
| **报名截止时间已过** | 按钮置灰,提示“报名已截止”,不允许新提交。 |
| **==联合体投标(待确定,留扩展接口)==** | 允许在报名时添加联合体成员(需分别提供资质),系统自动校验成员关联关系。 |
| **无感登录票据过期** | 跳转时若票据超时,提示“登录状态已过期,请重新登录”,跳转至登录页。 |
| | |
## 通知与提醒策略
| 触发事件 | 通知方式 | 接收方 |
| --------------- | ----------------- | ----- |
| 审核通过/不通过 | 站内信 + 邮件 | 供应商 |
| 缴费提醒(含截止时间) | 站内信 + 邮件 + 短信(可选) | 供应商 |
| 财务确认到账 | 站内信 | 供应商 |
| 招标文件可下载 | 站内信 + 邮件 | 供应商 |
| 投标截止前24h/1h | 站内信 + 邮件 | 供应商 |
| 人工评审任务待办 | 站内信 + 邮件 | 评审人员 |
| 财务审批待办 | 站内信 + 邮件 | 财务人员 |
| 系统异常告警(支付回调失败等) | 飞书/短信 | 系统管理员 |
### 报名审核通过 → 缴费通知
| 项目 | 内容 |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **标题** | 【STP平台】报名审核通过通知 |
| **正文** | 尊敬的 XX科技有限公司:
您对【2026年生产用原材料框架协议采购(标段A)】的报名已通过审核,已纳入本项目报名通过名单。 请及时登录STP平台查看和下载招标文件。
如有疑问,请联系招标专员:王工 010-8888xxxx
|
## 性能与安全要求
- **并发报名**:支持单项目100+供应商同时报名,响应时间≤3秒。
- **文件上传**:支持断点续传,单个文件≤500MB,总大小≤2GB。
- **数据加密**:报名表单中的联系人手机号、身份证号采用字段级加密存储
- **日志审计**:所有报名操作(登录、提交、审核、缴费)均记录审计日志,保留≥7年。