Skip to content
AmakuraiPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

知遇 · AI 智能售后平台

一个可本地运行的中文电商售后平台:用户查询订单、咨询 AI、确认售后申请,客服领取并处理工单,管理员维护知识库、账号、工单分配和对话记录。

AI 使用真实接口,不含模拟 AI 开关。 未提供 API 密钥时,账号、订单、物流和工单照常工作;AI 页面明确显示“待配置”。初始化订单和企业资料是演示数据。

快速启动(Windows)

需要 Java 21、Maven 3.9+、Node.js 22.12+ 或 24、Docker Desktop(Linux 容器)。首次启动需要下载 Maven、npm 依赖和 Docker 镜像。

在项目根目录运行 PowerShell:

# 仅首次复制;已有 .env 时保留自己的配置
Copy-Item .env.example .env
./scripts/start-local.ps1

如果 Windows 执行策略阻止脚本,可仅对当前进程执行 Set-ExecutionPolicy -Scope Process Bypass,再运行上面的启动命令。

脚本启动带持久化卷的 MySQL、Redis,构建并后台启动三个 Java 服务,等待健康检查通过,最后启动前端开发服务器。访问 **http://127.0.0.1:5173**。Java 日志在 logs/。

已构建时使用 ./scripts/start-local.ps1 -SkipBuild;只启动后端使用 -BackendOnly。修改 Java 代码后先运行 ./scripts/stop-local.ps1,再启动构建。修改 .env 后也需要重启 Java 服务。

停止 Java 服务:./scripts/stop-local.ps1。前端在其终端按 Ctrl+C;数据库可用 docker compose stop 停止。普通停止与重启保留全部数据。不要用删除数据卷的命令当作停止命令。

演示账号

所有初始账号密码为 Aftercare@2026,登录页也提供填入账号按钮。

账号 角色 用途
customer 用户 五笔示例订单、售后申请、工单和 AI 咨询
customer2 用户 一笔独立订单,用于检查归属隔离
agent 客服 领取、留言、内部备注、解决工单和内部知识检索
admin 管理员 用户、客服、分配、知识库、模型状态、全部对话

注册的新用户拥有独立账号,初始没有订单。示例账号仅在业务库为空时生成;重启不会覆盖密码或业务数据。

地址与存储

入口 默认地址
Vue 开发页面 http://127.0.0.1:5173
网关 http://localhost:8080/api
Business Service / Swagger http://localhost:8081/swagger-ui/index.html
AI Service / Swagger http://localhost:8082/swagger-ui/index.html
各服务健康检查 对应端口的 /actuator/health
MySQL 127.0.0.1:3307
Redis Search + JSON 127.0.0.1:6380

MySQL 业务库为 aftercare_business,AI 库为 aftercare_ai,各服务使用独立账号。Redis 开启 AOF 和 Search/JSON 模块。原始文档默认存放 data/uploads/。数据库和 Redis 使用 Docker 命名卷;后端开发模式的上传文件使用本地目录。

配置真实 AI

在根目录 .env 中填入后端密钥:

DEEPSEEK_API_KEY=你的DeepSeek密钥
GEMINI_API_KEY=你的GoogleAIStudio密钥
DEEPSEEK_MODEL=deepseek-flash
GEMINI_MODEL=gemini-embedding-2
GEMINI_DIMENSIONS=1536

本地模式重新启动 Java 服务;容器模式运行 docker compose --profile full up -d --no-build ai,让新环境变量进入容器。然后用管理员打开“模型连接”,分别测试聊天和向量连接。页面中的“已配置”只表示有密钥,点击测试才会实际调用提供商并显示结果。密钥不经过前端,不会在响应中返回。

然后进入“企业知识库”,为三份初始化资料点击“建立索引”,等待“索引就绪”,再点击“发布”。文档可见范围分别为“客户可见”和“仅内部可见”;不要将内部操作规范改成公开资料。索引操作会产生实际模型调用。

可配置 DEEPSEEK_BASE_URL、GEMINI_BASE_URL、AI_REQUEST_TIMEOUT_SECONDS 和 RAG_SIMILARITY_THRESHOLD。默认关闭 DeepSeek 思考模式。Gemini 使用 Developer API 原生 REST,逐块请求、单块单向量,默认 1536 维,不传旧版 task_type。模型或维度变化后,需要新增版本、重建索引并发布;不同索引不会混用。

无密钥、鉴权失败、额度限制、超时与检索失败均有明确错误提示,不会生成虚构回答。后端机器必须能够访问配置的模型 API 地址。

完整 Docker 启动

不安装本地 Java、Maven、Node 时,可由多阶段 Dockerfile 完成构建。先停止本地 Java 服务以释放 8080 端口,再运行:

docker compose --profile full up -d --build
docker compose --profile full logs -f business ai gateway

访问 **http://localhost:8090**。Nginx 提供前端并关闭 SSE 缓冲。首次启动请等待 Java 日志显示服务就绪。容器模式的原始文件使用 uploads 命名卷,与本地开发模式的 data/uploads/ 不同;切换模式需要同时迁移原始文件并保持 AI 库中的路径一致。在线编辑的 FAQ 不依赖原始文件路径。

已实现功能

  • 用户端:注册登录、历史咨询、订单搜索、物流详情、可编辑售后草稿、确认建单、公开留言、补充信息、取消、关闭、重新打开和评价。
  • 客服端:工作概览、待领取与我的工单、关联订单和已分配工单的来源对话、公开回复、内部备注、等待补充与解决、内部知识检索。
  • 管理端:统计趋势、全部订单和工单、领取与分配/转派、优先级、账号创建/修改/禁用/重置密码、文档和 FAQ 版本、索引任务与重试、检索测试、对话与工具调用审计、模型连接测试。
  • 真实 AI:DeepSeek 流式回答、多轮上下文、按角色开放工具、Gemini 向量检索、真实引用、订单卡片、售后草稿卡片。模型没有创建正式工单或执行任意 SQL 的工具。
  • 工单可靠性:数据库事务、确认草稿幂等、领取条件更新、状态校验、内部备注隔离、持久化处理时间线。

工程结构

common/             JWT、Redis 会话、鉴权过滤器、错误与分页、MyBatis 数据访问
business-service/   账号、示例订单、物流、草稿、工单、评价、统计
ai-service/         模型适配、工具、SSE、会话、解析、索引任务、知识检索
gateway/            Spring Cloud Gateway WebFlux、路由、追踪、限流
frontend/           Vue 3 + TypeScript 三角色界面、Playwright
infra/              Java Dockerfile、数据库初始化脚本
scripts/            Windows 启停与测试脚本
docs/               架构接口、演示步骤、测试说明
sample-documents/   可上传的示例企业资料

版本:Java 21、Spring Boot 4.0.8、Spring Cloud 2025.1.3、Spring AI 2.0.1、MyBatis Starter 4.0.1、MySQL 8.4、Redis 8.2。前端使用 Vue 3、TypeScript、Vite、Vue Router、Pinia、Element Plus、ECharts。Jedis 显式使用 7.4.1,以满足 Spring AI RedisVectorStore 的 RedisClient 接口要求。npm 依赖由 lockfile 固定。

验证与演示

# Java 单元测试;真实数据库集成测试默认跳过
./scripts/test.ps1

# 使用本地 MySQL、Redis 跑权限、事务、索引、SSE 集成测试
./scripts/test.ps1 -Integration

# 前端类型检查与生产构建
cd frontend
npm.cmd ci
npm.cmd run build
npx.cmd playwright install chromium
npm.cmd run test:e2e

前端流协议单元测试:在 frontend 目录执行 npm.cmd run test:unit(Node.js 24)。

浏览器测试需要先启动前后端,默认访问 5173;可通过 APP_URL 修改入口。测试会用演示账号创建验收工单和 FAQ,请对演示数据运行。Java 集成测试使用独立的 aftercare_business_test、aftercare_ai_test 库,真实 Redis Search;只有付费模型的 HTTP 边界使用测试夹具,这些夹具不进入生产应用。

完整操作见 演示步骤,实现细节见 架构与接口,验证范围与待验收项见 测试说明,Docker 与 Windows 启动问题见 本地排障。

本机已通过两家真实模型连接测试和 DeepSeek 订单/物流查询。知识库的中文命中质量、完整售后草稿闭环及不同故障场景仍需按演示步骤继续验收,详见测试说明。支付退款、实时物流接口、多租户、即时人工聊天和扫描件 OCR 不在首版范围;退款、换货、维修结果由客服记录在工单中。

参考官方说明:Spring Cloud、Spring AI DeepSeek、Gemini Embeddings、MyBatis Starter、Redis 8。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages