徐湛茗
B2B SaaS / Workflow Design / Full-stack Build / Procurement System

招投标采购协同平台

让采购流程从“多人表格协作”,变成可追踪、可协同、可审计的数字化系统。

Role

产品经理 / 产品设计师 / 全栈 Vibe Coding 开发者

Timeline

2025 – 2026

Client

某大型政企客户

Type

B2B SaaS

项目快照

Procura 是面向 B 端企业的招投标采购全流程平台。它支持采购端与供应商端双门户、状态机驱动的项目生命周期、严格的供应商数据隔离、独立审批流与审计留痕,并已完成 Windows Server + IIS + SQL Server 生产环境部署演练。

挑战

问题:传统招投标依赖邮件、Excel 与人工核对:流程状态分散、供应商数据易泄露、审批留痕缺失、版本管理混乱。

受影响者:采购员、采购领导、供应商、系统管理员、审计人员

为什么现有方式不够好:线下协作导致信息不同步、合规风险高、归档耗时,且无法满足公网开放的安全要求。

约束:供应商隔离是上线验收的“一票否决项”;需要在有限团队内完成从 0 到 1 的全栈构建。

产品定义

目标用户

  • 采购员创建项目、管理标的、邀请供应商、比价定标
  • 采购领导审批关键节点、掌握项目进度、查看审计日志
  • 供应商仅查看自己被邀请的项目、提交报价与资质、接收通知
  • 系统管理员配置用户/角色/权限、管理通知模板、监控系统安全

MVP 边界

先跑通“项目创建 → 邀请供应商 → 投标报价 → 开标比价 → 定标审批”的最小闭环,再叠加保证金、多轮竞价、审计留痕。

成功标准

采购方与供应商在同一系统内完成全流程,任何供应商都无法横向访问其他供应商数据。

关键决策路径

Signal

供应商 A 可能通过猜测项目 ID 查看供应商 B 的报价和附件。

Insight

在招投标场景,数据隔离不是“增强功能”,而是“生死线”。

Options
  • 依赖后端接口权限逐个检查
  • 将供应商 ID 作为租户维度,统一在数据层隔离
Decision

在全部供应商相关接口增加 supplierId 租户隔离校验,文件下载走受控接口并记录 FileTrace。

Why:只有从数据层统一隔离,才能避免遗漏;下载留痕满足审计要求。

Impact:公网探测确认供应商隔离边界正确,敏感路径全部 404,平台从“功能可用”推进到“生产安全可用”。

Signal

项目状态、供应商参与状态、审批状态经常交织,前端按钮控制容易出错。

Insight

复杂流程不能只靠前端 if/else,必须有服务层状态机兜底。

Options
  • 状态字段 + 前端控制
  • 服务层状态机集中管理状态转换
Decision

设计独立状态机:项目从草稿到归档,供应商从待投标到中标/未中标,关键转换由后端控制。

Why:状态机让流程可预测、可测试,也便于后续扩展并行审批与异常分支。

Impact:减少了大量状态相关 Bug,审批与开标流程在测试用例中可稳定复现。

Signal

发布审批、废标审批、供应商资料变更审批逻辑各不相同,硬编码会迅速膨胀。

Insight

审批是跨业务的通用能力,应该抽象为可配置模型。

Options
  • 每个业务模块自己实现审批
  • 抽象 ApprovalInstance + ApprovalNode 模型
Decision

采用通用审批模型:业务类型 + 业务 ID + 审批节点链,每个节点记录审批人、结果、意见与时间。

Why:一次抽象,多处复用;节点级留痕满足审计;未来新增审批类型无需改动框架。

Impact:支持发布、废标、资料变更等多种审批,审批记录可追溯。

系统设计

采购管理端
Vue + Vite项目/标的/审批/日志
供应商端
Vue + Vite受邀项目/报价/资质/通知
接入层
IIS 10 反向代理HTTPS / HSTS / 安全响应头
API 服务
NestJS + PrismaRBAC / 状态机 / 审批流
数据层
SQL Server文件存储审计日志

数据流

采购方创建项目 → 邀请供应商 → 供应商提交报价/资质 → 开标后比价 → 审批定标 → 归档导出。所有关键操作记录前后快照。

AI / 工作流

非 AI 驱动产品,但在 Vibe Coding 阶段使用 AI 工具辅助实现 CRUD、状态机与测试用例,加速从需求到可运行系统的闭环。

核心产品体验

localhost:3000
标的列表
采购端核心页

标的列表

解决的问题:采购员需要统一管理多个项目、标的与状态。

  • · 按项目名称、状态、时间筛选
  • · 状态标签与内部可见性控制
  • · 一键创建标的

价值:让采购项目的全生命周期状态一目了然,减少信息散落在表格中的风险。

构建与交付

设计:先定义角色权限矩阵与状态机,再设计页面流程;把“供应商隔离”作为架构性要求而非事后补丁。

技术栈:Vue 3 + Vite 前端;NestJS + Prisma + TypeScript 后端;SQL Server 数据库;pnpm + Turbo monorepo;Vitest + Supertest 测试。

Vibe Coding:独立完成需求分析、数据库设计、API 开发、前端页面与部署脚本;使用 AI 工具辅助生成模板代码与测试用例。

部署交付:完成 Windows Server 2019 + IIS 10 + SQL Server 2019 部署演练;配置 HTTPS、安全响应头、登录限流与敏感路径屏蔽。

结果与价值

  • 构建 18+ 个后端业务模块、30+ 张核心数据表、160+ 个测试用例
  • 实现采购端与供应商端双门户,支持项目、标的、报价、审批、保证金、通知、日志全链路
  • 通过供应商数据隔离、独立审批流、版本化资料与审计留痕,满足公网生产安全要求
  • 完成生产环境部署与安全加固,形成可交付的运维 Runbook

复盘

被验证的假设:B2B 流程产品的价值首先来自“状态可信、数据可控、流程可追”。

当前局限:前端 UI 仍有提升空间;移动端供应商体验未重点优化。

下一阶段优先:引入电子签章、在线评标与合同管理,扩展平台闭环。

对 B2B 产品的理解:复杂流程数字化不是把线下表格搬到线上,而是用状态机与权限把组织协作规则固定下来。

保密说明:界面中的供应商名称、项目名称与金额已做脱敏处理;客户信息使用“某大型政企客户”代替。