一个面向采购协同场景的个人 RAG / 知识治理作品集项目。它把供应商管理、寻源报价、价格库和采购订单协同中的制度、操作手册、FAQ、版本化政策与排障指南组织为可检索知识,并在回答中受文档权限约束。
配套项目:srm-agent 将结构化采购数据与本知识服务组合成可解释、可审计的多 Agent 工作流。
重要声明:本项目是个人技术作品,业务场景来自通用 SRM 领域经验。仓库中的公司、供应商、账号、单据、规则、错误码和示例文档均为虚构/合成内容;不包含、也不声称使用任何前雇主的代码、数据、文档或生产部署信息。
- 供应商注册、准入资料、资质有效期、年度复审与状态说明
- 寻源单创建、发布后变更、报价、澄清、评审与定标流程
- 价格库价格条目的审批、版本、生效期、过期和引用规则
- 采购订单下发、供应商确认、交期/数量变更、协同与关闭规则
- SRM 操作手册、常见问题、角色权限、版本政策和错误码排查
它的目标是让业务人员更快找到“制度怎么规定、页面怎么操作、异常怎么排查”,而不是替代采购业务系统。
这不是实时采购交易分析 Agent:项目不连接真实订单、报价、库存、预算、绩效或供应商主数据;不会查询实际订单状态、给出实时价格、代替审批或执行采购动作。对于这类问题,助手应说明流程边界,并提示到交易系统或由责任人确认。
Web(聊天 / 文档治理)
│
Spring Boot 3 + Sa-Token + MyBatis-Plus
│
LangChain4j:意图识别 → 查询改写 → 路由 → 检索增强生成
│
Elasticsearch(向量 + 全文) ─ MySQL(文档/版本/会话元数据)
│ └ Neo4j(可选:知识图谱/结构化关系)
MinIO(原文件) · Redis(会话/锁) · ONNX 重排序(可选)
- Java 21、Spring Boot 3.5、Reactor / SSE
- LangChain4j、OpenAI-compatible 模型接口(默认示例为 DashScope 兼容地址)
- Elasticsearch 混合检索、父子分段扩展、重排序和引用回溯
- 文档版本实体、版本变更说明、文档可见范围与角色过滤
| 角色 | 可检索知识 |
|---|---|
SUPPLIER_USER |
供应商公开流程、订单协同要求、对外 FAQ |
PURCHASER |
加上采购执行规则和价格库操作资料 |
PROCUREMENT_MANAGER |
加上采购管理制度与审核资料 |
ADMIN_SUPPORT |
全部资料及知识库维护/支持说明 |
当前角色由登录用户类型与员工岗位字段做演示映射,适合展示“检索前元数据过滤”的思路;它不是完整的企业 IAM 或数据权限体系。供应商账号不应访问内部评审、其他供应商报价、价格策略或定标意见。
可直接作为首次导入内容的 Markdown 位于 docs/seed-knowledge:
01:供应商准入资料、资格状态与年度复审02:寻源发布后变更和报价澄清规则03:价格库有效期与 V2.0 版本政策示例04:订单确认与交期/数量变更规则05:FAQ,以及E-SRM-403/409/422排障指南
文档首部标注了合成的版本、生效日期和建议可见范围。使用内部用户入口打开“SRM知识治理”,上传后选“按标题切分”;选择与文首一致的可见范围,再执行分段和向量存储。
- JDK 21、Maven 3.9+
- MySQL 8、Redis、Elasticsearch、MinIO
- 可选:Neo4j(图谱检索)和文档解析服务
- 一个 OpenAI-compatible Chat / Embedding API Key
配置文件 src/main/resources/application.yml 不包含任何真实密钥。最小配置示例:
export DASHSCOPE_API_KEY='your-api-key'
export SRM_DB_PASSWORD='local-dev-password'
export NEO4J_PASSWORD='local-dev-password'
./mvnw spring-boot:run仓库未包含 Maven Wrapper 时可使用:
mvn spring-boot:run默认访问地址为 http://localhost:8009。请先按本地数据库结构初始化合成用户和文档元数据;项目故意不提供通用密码或真实账号。随后访问:
/staff-login.html:内部采购/支持角色,维护知识文档/login.html:供应商角色,演示供应商可见知识/chat.html:知识问答
- 供应商准入需要提交哪些资料?
- 已发布的寻源单还能修改数量吗?
- 价格库中已经过期的价格可以用于新建订单吗?
- 供应商确认订单后,如何申请修改交期?
E-SRM-409价格有效期重叠该怎么排查?- 价格库 V2.0 相比 V1.2 增加了什么规则?
- 外部基础设施与模型服务由本地环境提供,未随仓库容器化;无服务时不能完成端到端运行。
- 现有权限实现是文档
accessibleBy元数据过滤,尚未实现采购组织、项目、供应商实体级 ACL。 - 版本实体记录文档快照与变更说明;政策生效日期主要作为文档内容/元数据治理约定,尚未实现自动按日期切换检索版本。
- SQL 和 Neo4j 路由骨架来自参考工程;作品集演示应优先导入文档知识,避免将其表述为生产级交易分析能力。
- 需要结合实际系统时,应以企业 IAM、审计、加密、脱敏、审批和实时数据接口重新设计,不能直接把本项目用于生产。
建议先执行:
mvn -DskipTests compile现有测试中包含依赖模型/外部服务的场景,只有在相应依赖和测试配置完整时才适合运行。详见本次交付报告中的实际验证结果。