招标文件审查与智能评标 AI 评审系统
面向商业化交付的 AI 招投标智能评审平台,支持SaaS 多租户与私有化部署双模运行。 核心能力:招标文件合规审查、围标串标检查、AI 智能辅助评标,支持按模块授权售卖、 自定义规则库/知识库、异步任务队列与对外 API。
本仓库为依据目录内设计文档搭建的项目框架(骨架),业务逻辑中标注
TODO处为待实现项。
技术栈(《架构设计文档》2.4)
层级 | 技术 |
|---|---|
后端 | Spring Boot 3.5.8 + Langchain4j(Java 17+) |
认证鉴权 | Sa-Token + JWT,MyBatis-Plus 多租户插件 |
业务库 | MySQL 8.0(字段级多租户隔离 tenant_id) |
向量库 | PostgreSQL + pgvector(HNSW 索引,RAG 检索) |
缓存/队列 | Redis(会话、缓存、任务队列) |
实时通信 | WebSocket(任务进度)+ SSE(AI 流式输出) |
前端 | Vue 3 + TypeScript + Vite + Element Plus(Vben 风格) |
部署 | Docker Compose(MySQL / pgvector / Redis / Ollama) |
目录结构
. ├── ai-bid-backend/ # 后端 Maven 多模块工程 │ ├── bid-common/ # 公共层:实体类、统一响应、租户上下文、模块编码 │ ├── bid-core/ # 核心层:业务服务、AI引擎(Langchain4j/RAG/pgvector)、 │ │ # 文档解析、任务队列、Mapper、多租户配置 │ ├── bid-gateway/ # 网关层:登录鉴权、License模块授权、接口限流拦截器 │ ├── bid-admin/ # 启动模块:REST控制器、SSE端点、全局异常、应用配置 │ └── pom.xml ├── ai-bid-frontend/ # 前端工程(Vue 3 + Vite + Element Plus) │ ├── src/api | views | router # 接口定义 / 页面视图 / 路由配置 │ └── ... ├── deploy/ # 部署目录(《打包部署文档》3.3) │ ├── docker-compose.yml # MySQL / pgvector / Redis / Ollama / 应用 / 前端 │ ├── .env.example # 环境变量模板 │ ├── nginx/nginx.conf # 反向代理 + WebSocket + SSE │ ├── deploy.sh # 一键部署脚本 │ └── init-sql/ # 数据库初始化(建表 + 向量扩展 + 初始数据) ├── *.pdf / *.png # 原始设计文档与架构图 └── README.md核心框架能力
多租户字段隔离:
MybatisPlusConfig中TenantLineInnerInterceptor自动注入/过滤tenant_id;租户上下文由登录拦截器写入TenantContext(ThreadLocal)。模块授权:
@RequireModule注解 +ModuleAuthInterceptor校验 License (模块编码:BID_REVIEW/COLLUSION_CHECK/BID_EVAL)。AI 引擎:Langchain4j
ChatLanguageModel/EmbeddingModel抽象,云端 (DashScope/OpenAI)与本地(Ollama 兼容端点)通过配置切换;RagService(向量检索上下文组装)+PgVectorStoreService(pgvector 读写)。异步任务:提交任务即入 Redis 队列,
TaskProcessor定时消费,按类型分发到 审查/评标/围串标检测服务。实时通信:
/api/ws/taskWebSocket 端点 +/api/stream/chatSSE 流式端点。统一规范:统一响应
{code, message, data}、分页pageNum/pageSize/total、 全局异常处理、操作审计表、接口限流(对外接口 60 次/分钟/租户)。
快速开始
开发环境(《打包部署文档》5.4)
准备 MySQL 8.0、PostgreSQL 15+(安装 pgvector 扩展)、Redis;
依次执行
deploy/init-sql/mysql/*.sql与deploy/init-sql/pg/*.sql。后端:
cd ai-bid-backend mvn spring-boot:run -pl bid-admin # 或 IDEA 启动 BidAdminApplication首次启动自动创建默认租户与管理员(admin / admin123)。
前端:
cd ai-bid-frontend pnpm install pnpm dev # http://localhost:5173配置 AI 模型:设置环境变量
DASHSCOPE_API_KEY(或修改bid-admin/src/main/resources/application.yml中langchain4j配置)。
Docker 一键部署(《打包部署文档》5.1)
cd deploy cp .env.example .env # 填写密码与 API Key ./deploy.sh # 本地 Ollama 需加 --profile gpu部署验证清单(《打包部署文档》9.2)
GET /actuator/health、/api/system/db-check、/api/system/ai-checkSwagger 接口文档:
http://<host>:8080/swagger-ui.html
第三方系统对接(开放 API)
对外开放接口前缀/api/open/v1/**,支持:
单点登录:
POST /api/open/v1/auth/token(SSO Token 交换)新建项目:
POST /api/open/v1/projects上传招投标文件:
POST /api/open/v1/documents/tender/upload、/bid/upload招标文件审查:
POST /api/open/v1/review/tender-check围标串标检查:
POST /api/open/v1/collusion/checkAI 智能评标:
POST /api/open/v1/review/bid-eval
鉴权方式:X-Api-Key或 SSO 交换后的AuthorizationToken。
完整对接说明、请求示例与错误码见docs/OPEN_API.md。
环境变量:OPEN_API_KEY、OPEN_API_TENANT_ID、OPEN_SSO_CLIENT_ID、OPEN_SSO_CLIENT_SECRET(见deploy/.env.example)。
数据库(《数据库设计文档》)
MySQL
ai_bid:24 张表,系统表sys_*(租户/用户/角色/权限/模块授权/许可证/日志), 业务表biz_*(项目/招标投标文件/评审任务与结果/规则/知识库/围串标)。PostgreSQL
ai_bid_vector:knowledge_base_vector向量表 + HNSW 索引。规范:utf8mb4 / utf8mb4_general_ci,主键雪花算法,金额
DECIMAL(18,2)。
注:原《数据库设计文档》PDF 末页截断(登录日志表不完整),
sys_login_log等 少量字段按框架惯例补充并在 SQL 中标注;另补充了sys_user_role、sys_role_permission关联表以支撑权限模型。
Prompt 工程与审查结果结构化(含
source_location原文定位约定)长文档切片(chunking)、BM25+向量混合召回与 Rerank
Word/Excel/OCR 解析器扩展
围标串标:硬件指纹提取、文本两两相似度、报价规律分析、风险加权评分
AI 评标:评标模板建模、分项打分、专家评分对比
License 数字签名解析与定时校验、规则版本管理、审计日志切面