Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SRM采购知识与流程智能助手

Java Spring Boot LangChain4j

一个面向采购协同场景的个人 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

现有测试中包含依赖模型/外部服务的场景,只有在相应依赖和测试配置完整时才适合运行。详见本次交付报告中的实际验证结果。

About

面向 SRM 采购协同的 RAG 知识治理助手,支持混合检索、版本管理、角色权限过滤与引用回溯。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages