637105cf64
主要变更: - 新增报名全流程 Mermaid 流程图,覆盖供应商端、STP平台内部及外部系统交互 - 重构页面流转图,简化登录验证流程,突出报名信息确认核心环节 - 重新设计报名信息确认页 SVG 原型,字段改为从 SRM 自动读取(只读), 增加投标标段多选、业绩证明材料管理(上传/档案复用)功能 - 新增提交成功反馈页面 SVG 原型 - 新增业绩证明材料管理规则(首次上传归入档案、后续自动调出、去重等) - 简化状态机,新增 BID_PLAN_PASSED 状态,明确招标方案评审通过后才触发缴费 - 补充报名审核通过通知模板 - 删除报名表单字段定义附录(字段已在页面元素定义表中体现) - 移除冗余性能要求描述,精简安全要求 - 文件变更:+319 行,-122 行
22 KiB
22 KiB
供应商招标报名模块
总体流程概述
供应商从获知招标公告到完成报名并获取投标资格,涉及公告浏览 → 身份认证 → 报名申请 → 资质审核 → 费用缴纳 → 文件获取 → 投标文件上传七大环节。本设计覆盖全流程的页面交互、系统跳转与内部处理逻辑,并充分复用现有 SRM 供应商库与统一认证体系。
%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#e91e63','lineColor':'#555','secondaryColor':'#f3f4f6'}}}%%
flowchart TD
subgraph 供应商端
A[浏览招标公告] --> B{是否已登录?}
B -- 是 --> D[点击“报名”]
B -- 否 --> C[登录/注册]
C --> D
D --> E[系统自动读取<br>联系人/手机号/营业执照]
E --> F[供应商确认信息并提交]
F --> G[报名提交成功<br>等待审核通知]
G --> H[收到审核结果通知]
H -- 通过 --> I[收到缴费通知<br>(招标方案评审通过后)]
H -- 不通过 --> J[查看拒绝原因]
J --> K{是否可重新提交?}
K -- 是 --> D
K -- 否 --> L[报名流程终止]
I --> M[进入缴费与投标环节<br>(后续流程)]
end
subgraph STP平台内部
STP1[接收报名请求] --> STP2[AI辅助资质审核<br>(核验已存证资质文件)]
STP2 --> STP3{是否需要人工评审?}
STP3 -- 是 --> STP4[推送人工评审任务]
STP3 -- 否 --> STP5[自动通过]
STP4 --> STP6[人工评审]
STP6 --> STP7[反馈结果]
STP5 --> STP8[更新报名状态]
STP7 --> STP8
STP8 --> STP9[形成报名通过单位名单]
STP9 --> STP10[发送审核结果通知]
STP10 --> STP11[等待招标方案评审通过]
STP11 -- 招标方案通过 --> STP12[发送缴费通知<br>解锁标书查看权限]
STP12 --> STP13[后续投标流程]
end
subgraph 外部系统
SRM[(SRM供应商库)]
OA[(OA审批系统)]
end
供应商端 -.-> STP平台内部
STP平台内部 -.-> SRM
STP平台内部 -.-> OA
SRM -- 供应商信息读取 --> STP2
OA -- 招标方案评审结果回调 --> STP11
页面流转与跳转设计
graph TD
A[招标公告详情页] -->|点击“立即报名”| B{登录检查}
B -->|未登录| C[登录/注册选择页]
C -->|选择登录方式| D[验证通过]
C -->|新用户注册| E[注册并同步至SRM]
E --> D
D --> F[报名信息确认页]
F -->|系统自动回填| G[联系人/手机号/营业执照<br>(只读展示,不可编辑)]
F -->|供应商可选择| H[投标标段(多选)]
F -->|供应商可填写| I[业绩简述/备注(可选)]
G --> J[确认信息并提交]
H --> J
I --> J
J --> K[报名提交成功页]
K --> L[等待审核通知(邮件/站内信)]
L --> M[审核通过/不通过通知]
M -->|不通过| N[查看原因,按需重新提交]
M -->|通过| O[报名通过名单公布<br>等待招标方案评审]
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
系统交互时序图
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 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 820" font-family="'Microsoft YaHei', 'PingFang SC', sans-serif">
<defs>
<filter id="shadow" x="-5%" y="-5%" width="110%" height="110%">
<feDropShadow dx="0" dy="4" stdDeviation="6" flood-opacity="0.06"/>
</filter>
<filter id="hoverShadow" x="-5%" y="-5%" width="110%" height="110%">
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-opacity="0.12"/>
</filter>
<linearGradient id="headerGrad" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#c2185b"/>
<stop offset="100%" stop-color="#e91e63"/>
</linearGradient>
<linearGradient id="btnGrad" x1="0" y1="0" x2="1" y2="0">
<stop offset="0%" stop-color="#c2185b"/>
<stop offset="100%" stop-color="#e91e63"/>
</linearGradient>
</defs>
<!-- 背景 -->
<rect width="1024" height="820" fill="#f5f7fa"/>
<!-- 顶部导航栏 -->
<rect width="1024" height="64" fill="#ffffff" stroke="#e8e8e8" stroke-width="1"/>
<circle cx="40" cy="32" r="16" fill="url(#headerGrad)"/>
<text x="64" y="38" font-size="20" font-weight="bold" fill="#c2185b">智慧招标平台</text>
<text x="760" y="38" font-size="14" fill="#666">欢迎,XX科技有限公司</text>
<rect x="880" y="18" width="36" height="36" rx="50%" fill="#f5f5f5"/>
<circle cx="898" cy="36" r="14" fill="#ccc"/>
<text x="898" y="40" font-size="12" fill="#666" text-anchor="middle">张</text>
<!-- 面包屑 -->
<text x="120" y="100" font-size="13" fill="#999">首页</text>
<text x="155" y="100" font-size="13" fill="#999">></text>
<text x="175" y="100" font-size="13" fill="#999">招标公告</text>
<text x="255" y="100" font-size="13" fill="#999">></text>
<text x="275" y="100" font-size="13" fill="#c2185b" font-weight="bold">报名确认</text>
<!-- 步骤条 -->
<rect x="120" y="120" width="784" height="40" rx="8" fill="#ffffff" stroke="#e8e8e8"/>
<circle cx="170" cy="140" r="14" fill="#c2185b"/>
<text x="170" y="145" font-size="12" fill="#fff" text-anchor="middle" font-weight="bold">1</text>
<text x="192" y="145" font-size="14" fill="#c2185b" font-weight="bold">阅读公告</text>
<line x1="280" y1="140" x2="360" y2="140" stroke="#c2185b" stroke-width="2"/>
<circle cx="330" cy="140" r="14" fill="#c2185b"/>
<text x="330" y="145" font-size="12" fill="#fff" text-anchor="middle" font-weight="bold">2</text>
<text x="352" y="145" font-size="14" fill="#c2185b" font-weight="bold">确认报名</text>
<line x1="440" y1="140" x2="520" y2="140" stroke="#ddd" stroke-width="2"/>
<circle cx="490" cy="140" r="14" fill="#ddd"/>
<text x="490" y="145" font-size="12" fill="#999" text-anchor="middle">3</text>
<text x="512" y="145" font-size="14" fill="#999">审核</text>
<line x1="600" y1="140" x2="680" y2="140" stroke="#ddd" stroke-width="2"/>
<circle cx="650" cy="140" r="14" fill="#ddd"/>
<text x="650" y="145" font-size="12" fill="#999" text-anchor="middle">4</text>
<text x="672" y="145" font-size="14" fill="#999">后续环节</text>
<!-- 主卡片 -->
<rect x="120" y="180" width="784" height="590" rx="10" fill="#ffffff" filter="url(#shadow)"/>
<!-- 项目信息头部 -->
<rect x="120" y="180" width="784" height="56" rx="10" fill="url(#headerGrad)"/>
<rect x="120" y="220" width="784" height="16" fill="url(#headerGrad)"/>
<text x="150" y="216" font-size="18" font-weight="bold" fill="#fff">报名信息确认</text>
<!-- 项目信息条 -->
<rect x="150" y="250" width="724" height="44" rx="6" fill="#fce4ec"/>
<text x="170" y="278" font-size="14" fill="#c2185b" font-weight="bold">项目名称:</text>
<text x="270" y="278" font-size="14" fill="#333">2026年生产用原材料框架协议采购</text>
<text x="620" y="278" font-size="13" fill="#999">项目编号:BH-PROC-2026-0018</text>
<!-- 信息提示 -->
<rect x="150" y="308" width="724" height="30" rx="4" fill="#e3f2fd"/>
<text x="170" y="329" font-size="13" fill="#1565c0">📋 以下信息已从您的注册资料中自动读取,请核对</text>
<!-- 表单区域 -->
<!-- 公司名称 -->
<text x="150" y="368" font-size="14" fill="#555">公司名称</text>
<rect x="150" y="378" width="340" height="36" rx="4" fill="#f9f9f9" stroke="#e0e0e0"/>
<text x="165" y="402" font-size="14" fill="#333">XX科技有限公司</text>
<!-- 联系人 -->
<text x="530" y="368" font-size="14" fill="#555">联系人</text>
<rect x="530" y="378" width="340" height="36" rx="4" fill="#f9f9f9" stroke="#e0e0e0"/>
<text x="545" y="402" font-size="14" fill="#333">张三</text>
<!-- 联系电话 -->
<text x="150" y="438" font-size="14" fill="#555">联系电话</text>
<rect x="150" y="448" width="340" height="36" rx="4" fill="#f9f9f9" stroke="#e0e0e0"/>
<text x="165" y="472" font-size="14" fill="#333">138-0000-8888</text>
<!-- 电子邮件 -->
<text x="530" y="438" font-size="14" fill="#555">电子邮件</text>
<rect x="530" y="448" width="340" height="36" rx="4" fill="#f9f9f9" stroke="#e0e0e0"/>
<text x="545" y="472" font-size="14" fill="#333">zhangsan@xx-tech.com</text>
<!-- 投标标段 -->
<text x="150" y="518" font-size="14" fill="#555">投标标段 <tspan fill="#e53935">*</tspan></text>
<rect x="150" y="528" width="340" height="36" rx="4" fill="#fafafa" stroke="#d0d0d0"/>
<text x="170" y="552" font-size="14" fill="#333">☑ 标段A(原材料)</text>
<text x="330" y="552" font-size="14" fill="#333">☐ 标段B(辅料)</text>
<text x="490" y="552" font-size="14" fill="#333">☐ 标段C(包装)</text>
<!-- 业绩证明材料 -->
<text x="150" y="598" font-size="14" fill="#555">业绩证明材料</text>
<text x="290" y="598" font-size="12" fill="#999">(首次上传将自动归入用户档案,下次可复用)</text>
<!-- 上传区域 -->
<rect x="150" y="608" width="724" height="80" rx="6" stroke-dasharray="6,6" fill="#fafafa" stroke="#ccc"/>
<text x="512" y="640" font-size="14" fill="#999" text-anchor="middle">📤 点击或拖拽上传业绩证明材料</text>
<text x="512" y="665" font-size="12" fill="#bbb" text-anchor="middle">支持 PDF、DOC、JPG 格式,单个文件不超过 20MB</text>
<!-- 已有档案材料(复用) -->
<rect x="150" y="700" width="724" height="1" fill="#eee"/>
<text x="150" y="722" font-size="13" fill="#888">📂 从用户档案中选用已有材料:</text>
<rect x="150" y="732" width="200" height="28" rx="4" fill="#e8f5e9" stroke="#a5d6a7"/>
<text x="165" y="752" font-size="13" fill="#2e7d32">✅ 2025年业绩报告.pdf</text>
<rect x="362" y="732" width="28" height="28" rx="50%" fill="#ef5350"/>
<text x="376" y="752" font-size="14" fill="#fff" text-anchor="middle">×</text>
<rect x="400" y="732" width="180" height="28" rx="4" fill="#e8f5e9" stroke="#a5d6a7"/>
<text x="415" y="752" font-size="13" fill="#2e7d32">✅ 2024年合同.pdf</text>
<rect x="592" y="732" width="28" height="28" rx="50%" fill="#ef5350"/>
<text x="606" y="752" font-size="14" fill="#fff" text-anchor="middle">×</text>
<!-- 按钮 -->
<rect x="150" y="780" width="100" height="38" rx="6" fill="#e8e8e8"/>
<text x="200" y="805" font-size="14" fill="#666" text-anchor="middle">返回</text>
<rect x="650" y="780" width="160" height="38" rx="6" fill="url(#btnGrad)" filter="url(#hoverShadow)"/>
<text x="730" y="805" font-size="14" fill="#fff" text-anchor="middle" font-weight="bold">确认提交报名</text>
<text x="650" y="818" font-size="11" fill="#999">提交后不可修改</text>
</svg>
页面元素定义表
| 序号 | 字段名称 | 数据来源 | 可编辑性 | 说明 |
|---|---|---|---|---|
| 1 | 项目名称 | 系统自动带入 | 只读 | 显示拟报名的投标项目名称 |
| 2 | 项目编号 | 系统自动带入 | 隐藏字段 | 内部项目编号,用于后台关联,页面不展示 |
| 3 | 公司名称 | SRM注册信息 | 只读 | 统一社会信用代码对应的企业全称 |
| 4 | 联系人 | SRM注册信息 | 只读 | 供应商主联系人姓名 |
| 5 | 联系电话 | SRM注册信息 | 只读 | 供应商注册手机号 |
| 6 | 电子邮件 | SRM注册信息 | 只读 | 供应商注册邮箱 |
| 7 | 投标标段 | 系统配置 | 可多选 | 仅当项目分标段时显示;可多选或全选 |
| 8 | 业绩证明材料 | 上传 / 用户档案 | 可编辑 | 首次上传自动归入用户档案,下次自动调出;用户可删除或新增 |
提交成功反馈页面
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 600" font-family="'Microsoft YaHei', 'PingFang SC', sans-serif">
<defs>
<filter id="shadow" x="-5%" y="-5%" width="110%" height="110%">
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-opacity="0.08"/>
</filter>
<linearGradient id="successGrad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#e8f5e9"/>
<stop offset="100%" stop-color="#f1f8e9"/>
</linearGradient>
</defs>
<rect width="1024" height="600" fill="#f5f7fa"/>
<!-- 顶部导航 -->
<rect width="1024" height="56" fill="#ffffff" stroke="#e8e8e8" stroke-width="1"/>
<text x="40" y="38" font-size="20" font-weight="bold" fill="#c2185b">智慧招标平台</text>
<!-- 成功卡片 -->
<rect x="262" y="80" width="500" height="420" rx="12" fill="#ffffff" filter="url(#shadow)"/>
<!-- 成功图标 -->
<circle cx="512" cy="170" r="50" fill="#4caf50"/>
<path d="M485 170 L505 190 L545 150" stroke="#fff" stroke-width="6" fill="none" stroke-linecap="round" stroke-linejoin="round"/>
<text x="512" y="260" font-size="24" font-weight="bold" fill="#333" text-anchor="middle">报名提交成功!</text>
<text x="512" y="300" font-size="15" fill="#666" text-anchor="middle">您的报名申请已提交,请耐心等待审核。</text>
<rect x="330" y="320" width="364" height="36" rx="6" fill="#fff8e1"/>
<text x="512" y="344" font-size="13" fill="#f57c00" text-anchor="middle">📌 审核结果将通过站内信、邮件、短信通知,请注意查收</text>
<!-- 分隔线 -->
<line x1="330" y1="370" x2="694" y2="370" stroke="#eee" stroke-width="1"/>
<!-- 快捷操作 -->
<text x="512" y="400" font-size="14" fill="#888" text-anchor="middle">您还可以:</text>
<rect x="330" y="415" width="160" height="36" rx="6" fill="#f5f5f5" stroke="#ddd"/>
<text x="410" y="439" font-size="14" fill="#555" text-anchor="middle">📋 查看我的报名</text>
<rect x="510" y="415" width="160" height="36" rx="6" fill="#f5f5f5" stroke="#ddd"/>
<text x="590" y="439" font-size="14" fill="#555" text-anchor="middle">📄 返回招标公告</text>
<rect x="362" y="468" width="300" height="36" rx="6" fill="#c2185b"/>
<text x="512" y="492" font-size="14" fill="#fff" text-anchor="middle" font-weight="bold">进入个人中心查看报名状态</text>
</svg>
业绩证明材料管理规则
flowchart LR
subgraph 首次报名
A[上传业绩材料] --> B[提交报名]
B --> C[系统自动归入<br>用户档案]
end
subgraph 后续报名
D[进入报名页] --> E[系统自动调出<br>用户档案材料]
E --> F{用户操作}
F -->|选用已有| G[直接使用]
F -->|删除| H[从本次报名移除<br>(档案中保留)]
F -->|新增| I[上传新材料]
I --> J[归入档案]
G --> K[提交报名]
H --> K
J --> K
end
| 规则 | 说明 |
|---|---|
| 首次上传 | 用户上传的业绩材料在报名提交后,系统自动复制一份归入用户档案(用户档案表),标记来源为“报名上传” |
| 后续复用 | 用户进入报名页时,系统从用户档案中读取历史业绩材料,以列表形式展示,用户可直接选用 |
| 删除 | 用户在本次报名中删除某材料,仅从本次报名清单移除,用户档案中仍保留,不影响后续使用 |
| 新增 | 用户上传新材料,归入档案的同时也纳入本次报名,后续报名可继续复用 |
| 去重 | 系统按文件名+哈希值去重,同一文件不重复存储 |
提交成功(邮件/站内信)
| 项目 | 内容 |
|---|---|
| 标题 | 【STP平台】报名提交成功通知 |
| 正文 | 尊敬的 XX科技有限公司: 您对【2026年生产用原材料框架协议采购(标段A)】的报名已成功提交。 我们将对您的报名资格进行审核,审核结果将通过邮件和站内信通知您,请耐心等待。 如需查看报名状态,请登录STP平台“我的报名”页面。 🔗 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年。