Add project overview and repository documentation for client-motong. Co-authored-by: Cursor <cursoragent@cursor.com>
331 lines
12 KiB
Markdown
331 lines
12 KiB
Markdown
# 标书管理系统(Bid Management System)
|
||
|
||
> **定位**:面向企业投标业务的全流程智能管理平台,覆盖从招标文件导入、AI 需求分析、标书生成与审核,到最终提交投标的完整链路。所有环节在同一平台内流转,无需切换工具。
|
||
|
||
---
|
||
|
||
## 目录
|
||
|
||
- [项目背景](#项目背景)
|
||
- [系统全景](#系统全景)
|
||
- [核心功能模块](#核心功能模块)
|
||
- [技术架构](#技术架构)
|
||
- [仓库结构](#仓库结构)
|
||
- [快速开始](#快速开始)
|
||
- [开发规范](#开发规范)
|
||
- [部署说明](#部署说明)
|
||
- [团队与角色](#团队与角色)
|
||
- [路线图](#路线图)
|
||
|
||
---
|
||
|
||
## 项目背景
|
||
|
||
传统投标流程高度依赖人工,存在以下痛点:
|
||
|
||
- 招标文件格式多样(PDF / Word / 扫描件),人工阅读耗时且易遗漏关键要求
|
||
- 标书撰写重复劳动多,不同项目间内容复用困难
|
||
- 各省投标平台操作差异大,人工填报效率低、出错率高
|
||
- 项目进度、文件版本、审核意见分散在多个工具中,协作成本高
|
||
|
||
**本系统目标**:通过 AI + 流程自动化,将投标团队从重复性事务中解放出来,专注于核心策略与差异化竞争。
|
||
|
||
---
|
||
|
||
## 系统全景
|
||
|
||
整个投标业务流程在平台内完整闭环,分为以下阶段:
|
||
|
||
```
|
||
[手工下载招标文件]
|
||
↓
|
||
[上传 & 解析] 文件导入平台 → 自动解压 → 结构化解析(PDF/Word/OCR)
|
||
↓
|
||
[AI 需求分析] 提取资质要求、技术规格、评分标准、报价限制、截止时间
|
||
↓
|
||
[标书生成] 基于模板 + RAG 知识库 + 大模型,自动生成标书初稿
|
||
↓
|
||
[人工审核] 在平台内在线编辑、批注、版本管理,审核通过后归档
|
||
↓
|
||
[信息 & 文件提取] 从定稿标书中提取投标所需的结构化数据与附件清单
|
||
↓
|
||
[自动投标] RPA 驱动省级投标桌面软件,自动填报信息、附加文件、提交
|
||
↓
|
||
[流程结束 / 存档]
|
||
```
|
||
|
||
> **说明**:招标文件下载为**手工操作**,由投标人员从各省招投标平台自行下载后上传至本系统,系统不介入下载环节。
|
||
|
||
---
|
||
|
||
## 核心功能模块
|
||
|
||
### 1. 标书管理(Bid Project)
|
||
|
||
- 投标项目的全生命周期管理(创建、进行中、已提交、已归档)
|
||
- 项目基本信息录入:项目名称、招标单位、截止时间、所属省份、预算区间
|
||
- 文件版本管理:标书草稿多版本保存与对比
|
||
- 项目状态看板:直观展示各项目当前所处阶段
|
||
|
||
### 2. 文件处理(Document Processing)
|
||
|
||
- 支持手工上传招标文件(ZIP 压缩包 / PDF / Word)
|
||
- 自动解压,识别文件类型并分类存储
|
||
- 文档解析引擎:
|
||
- 文本型 PDF → `pdfplumber`
|
||
- Word 文档 → `mammoth / python-docx`
|
||
- 扫描件 → OCR(PaddleOCR,针对中文优化)
|
||
- 解析结果结构化存储,供后续 AI 分析调用
|
||
|
||
### 3. AI 需求分析(AI Analysis)
|
||
|
||
- 调用大模型(Claude / GPT / DeepSeek,可在 API 配置中切换)对解析内容进行理解
|
||
- 自动提取并结构化以下关键信息:
|
||
- 资质要求(营业执照类型、ISO 认证、业绩门槛等)
|
||
- 技术规格与参数要求
|
||
- 评分标准及各项权重
|
||
- 报价格式与最高限价
|
||
- 提交方式与截止时间
|
||
- 合规预检:对比企业已有资质,自动标记缺失项并发出预警
|
||
|
||
### 4. RAG 知识库(Knowledge Base)
|
||
|
||
- 存储历史中标标书、行业模板、企业资质文件、常用话术
|
||
- 支持文件上传入库(PDF / Word),自动向量化索引
|
||
- 标书生成时自动检索相关内容作为参考上下文,提升生成质量
|
||
- 支持知识库分类管理(按行业、地区、项目类型)
|
||
- 支持手动维护:增、删、更新文档
|
||
|
||
### 5. 标书生成(Bid Writing)
|
||
|
||
- 基于预设模板(Word / Markdown)+ RAG 检索内容 + 大模型生成标书初稿
|
||
- 模板管理:按行业和省份维护模板库,支持上传自定义模板
|
||
- 在线富文本编辑器(Tiptap):直接在平台内对生成内容进行修改、批注
|
||
- AI 质检:生成后自动检查需求覆盖率、格式合规性,给出评分与改进建议
|
||
- 支持导出为 Word / PDF 格式
|
||
|
||
### 6. 人工审核(Review)
|
||
|
||
- 审核工作流:起草 → 内审 → 终审 → 定稿
|
||
- 支持多人协作审核,批注与修改意见绑定到具体段落
|
||
- 审核历史可追溯,所有版本均可回溯
|
||
- 审核通过后锁定定稿版本,触发后续流程
|
||
|
||
### 7. 自动投标 / RPA(Auto Submit)
|
||
|
||
- 维护省份与投标桌面软件的映射配置(各省软件版本、下载地址)
|
||
- 从定稿标书中提取结构化数据(公司信息、报价、技术响应等)
|
||
- 通过 RPA(`pywinauto` / `uiautomation`)驱动省级桌面投标软件,自动完成:
|
||
- 信息填报
|
||
- 附件上传
|
||
- CA 证书 / U 盾签章
|
||
- 任务执行状态实时回显,支持截图存档
|
||
- 异常自动报警,触发人工介入流程
|
||
|
||
### 8. API 配置(API Config)
|
||
|
||
- 在平台内统一管理所有外部 AI 服务的接入配置
|
||
- 支持配置项:
|
||
- 大模型供应商(Claude / OpenAI / DeepSeek / 本地模型)
|
||
- API Key、Base URL、模型版本、最大 Token 数
|
||
- 各模块使用哪个模型(分析模块 / 生成模块可分别配置)
|
||
- 配置加密存储,仅管理员可见
|
||
|
||
### 9. 权限管理(Permission)
|
||
|
||
- 基于 **RBAC + ABAC(Casbin)** 的细粒度权限控制
|
||
- 内置角色:
|
||
- **超级管理员**:全部权限
|
||
- **项目经理**:项目管理、审核审批、查看报表
|
||
- **标书撰写员**:文件上传、标书编辑、提交审核
|
||
- **只读审查**:仅查看,不可修改
|
||
- 支持按组织架构(部门)隔离项目数据
|
||
- 操作日志全量记录,满足合规审计需求
|
||
|
||
---
|
||
|
||
## 技术架构
|
||
|
||
### 总体架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────┐
|
||
│ 前端(apps/admin) │
|
||
│ Vite 5 + React 19 + Ant Design Pro │
|
||
│ Tiptap 编辑器 / AntV Charts 数据可视化 │
|
||
└────────────────────┬────────────────────────┘
|
||
│ REST API / WebSocket
|
||
┌────────────────────▼────────────────────────┐
|
||
│ 后端(apps/api) │
|
||
│ NestJS 10 + Prisma 6 + Casbin │
|
||
│ BullMQ 异步队列 + Redis 缓存 │
|
||
│ 阿里云 OSS 文件存储 + JWT 鉴权 │
|
||
└──────────┬──────────────────┬───────────────┘
|
||
│ │
|
||
┌──────────▼──────┐ ┌────────▼───────────────┐
|
||
│ MySQL 8 │ │ Python 微服务 │
|
||
│ 业务数据 │ │ FastAPI │
|
||
│ ChromaDB │ │ 文档解析(OCR/PDF/Word) │
|
||
│ 向量索引 │ │ RPA 自动投标引擎 │
|
||
└─────────────────┘ └────────────────────────┘
|
||
```
|
||
|
||
### 技术栈一览
|
||
|
||
| 层次 | 技术 |
|
||
|------|------|
|
||
| 前端框架 | Vite 5、React 19、Ant Design Pro |
|
||
| 富文本编辑 | Tiptap |
|
||
| 数据可视化 | AntV Charts、Recharts |
|
||
| 后端框架 | NestJS 10+ |
|
||
| ORM | Prisma 6 |
|
||
| 数据库 | MySQL 8 |
|
||
| 缓存 / 队列 | Redis 7 + BullMQ |
|
||
| 权限引擎 | Casbin(RBAC + ABAC)|
|
||
| 向量数据库 | ChromaDB |
|
||
| 文件存储 | 阿里云 OSS |
|
||
| AI 接入 | Claude API / OpenAI / DeepSeek |
|
||
| 文档解析 | pdfplumber、PaddleOCR、mammoth |
|
||
| RPA 引擎 | pywinauto、uiautomation(Windows)|
|
||
| Python 服务 | FastAPI |
|
||
| 认证 | JWT + Passport |
|
||
| 包管理 | pnpm workspace |
|
||
| 容器化 | Docker + Docker Compose |
|
||
|
||
---
|
||
|
||
## 仓库结构
|
||
|
||
本项目采用多仓库组织,位于 `client-motong` 组织下:
|
||
|
||
| 仓库 | 说明 |
|
||
|------|------|
|
||
| `all-commons` | **通用公共库**(本仓库):文档、共享规范、通用工具 |
|
||
| `bid-management` | **标书管理系统**主仓库,包含前端、后端及各业务模块 |
|
||
|
||
### `bid-management` 内部结构
|
||
|
||
```
|
||
bid-management/
|
||
├── apps/
|
||
│ ├── admin/ # 前端(React 19 + Ant Design Pro)
|
||
│ └── api/ # 后端(NestJS + Prisma)
|
||
├── modules/
|
||
│ ├── bid-project/ # 投标项目管理
|
||
│ ├── bid-document/ # 文件处理模块
|
||
│ ├── bid-analysis/ # AI 需求分析
|
||
│ ├── bid-writing/ # 标书生成与审核
|
||
│ ├── bid-knowledge/ # RAG 知识库管理
|
||
│ └── bid-submit/ # 自动投标(RPA 任务)
|
||
├── packages/
|
||
│ ├── shared/ # 共享类型、常量、工具
|
||
│ ├── module-sdk/ # 业务模块开发 SDK
|
||
│ └── ui/ # 共享 UI 组件
|
||
├── services/
|
||
│ └── python-worker/ # Python 微服务(OCR + RPA)
|
||
├── docker/ # Docker 配置
|
||
├── docs/ # 详细技术文档
|
||
└── scripts/ # 脚手架与运维脚本
|
||
```
|
||
|
||
---
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- Node.js >= 20
|
||
- pnpm >= 9
|
||
- Docker & Docker Compose
|
||
- Python >= 3.11(仅 python-worker 需要)
|
||
- Windows 环境(RPA 模块运行必须)
|
||
|
||
### 启动步骤
|
||
|
||
```bash
|
||
# 1. 克隆主仓库
|
||
git clone https://git.jc2009.com/client-motong/bid-management.git
|
||
cd bid-management
|
||
|
||
# 2. 安装依赖
|
||
pnpm install
|
||
|
||
# 3. 启动基础设施(MySQL + Redis)
|
||
docker compose -f docker/docker-compose.dev.yml up -d
|
||
|
||
# 4. 配置环境变量
|
||
cp .env.example .env
|
||
# 编辑 .env,填写数据库连接、OSS 配置、AI API Key 等
|
||
|
||
# 5. 初始化数据库
|
||
pnpm db:migrate
|
||
pnpm db:seed
|
||
|
||
# 6. 启动开发服务
|
||
pnpm dev
|
||
```
|
||
|
||
启动后访问:
|
||
- 前端管理后台:`http://localhost:5173`
|
||
- 后端 API:`http://localhost:3000`
|
||
- API 文档(Swagger):`http://localhost:3000/docs`
|
||
|
||
---
|
||
|
||
## 开发规范
|
||
|
||
- 新增业务模块请使用脚手架:`pnpm module:create`
|
||
- 代码风格遵循 `.eslintrc.js` 和 `.prettierrc` 配置
|
||
- 提交信息遵循 Conventional Commits 规范(`feat:` / `fix:` / `chore:` 等)
|
||
- 所有 PR 须经过 Code Review 后合并到 `main`
|
||
- 数据库变更必须通过 Prisma Migration,不允许直接修改表结构
|
||
- 详见 `docs/DEVELOPMENT.md`
|
||
|
||
---
|
||
|
||
## 部署说明
|
||
|
||
- **前后端**:Docker 容器化部署,支持 Linux 服务器
|
||
- **RPA 模块**(python-worker):必须运行在 **Windows 环境**,用于驱动省级投标桌面软件
|
||
- **生产环境**配置详见 `docker/docker-compose.prod.yml`
|
||
- 详细部署流程见 `docs/DEPLOYMENT.md`
|
||
|
||
---
|
||
|
||
## 团队与角色
|
||
|
||
| 角色 | 职责 |
|
||
|------|------|
|
||
| 产品 / 项目经理 | 需求管理、进度跟踪、客户沟通 |
|
||
| 前端开发 | `apps/admin` 及各模块前端页面 |
|
||
| 后端开发 | `apps/api`、业务模块、队列任务 |
|
||
| Python 开发 | 文档解析引擎、RPA 自动投标引擎 |
|
||
| 测试 | 功能测试、RPA 流程回归测试 |
|
||
| 运维 | 部署、监控、备份 |
|
||
|
||
---
|
||
|
||
## 路线图
|
||
|
||
### 阶段一(MVP)
|
||
- [ ] 项目管理基础功能
|
||
- [ ] 文件上传与解析(PDF / Word / OCR)
|
||
- [ ] AI 需求提取与结构化展示
|
||
- [ ] 标书初稿生成(模板 + 大模型)
|
||
- [ ] 在线审核与导出
|
||
|
||
### 阶段二(自动化)
|
||
- [ ] RAG 知识库建设与检索优化
|
||
- [ ] 标书质量评分与自动改进建议
|
||
- [ ] API 配置中心(多模型切换)
|
||
- [ ] RPA 自动投标(覆盖主要省份)
|
||
|
||
### 阶段三(智能化)
|
||
- [ ] 基于历史中标数据的报价策略建议
|
||
- [ ] 多项目并行管理与资源调度
|
||
- [ ] 移动端审核通知
|
||
- [ ] 数据统计与投标胜率分析
|
||
|
||
---
|
||
|
||
> 如有疑问,请联系项目负责人或在对应仓库提交 Issue。 |