ziin ac9a352004 feat(chat): 为AI陪聊增加历史消息上下文支持
- ChatServiceImpl#message 现在会读取最近20条聊天记录作为LLM上下文
- 新增 callLLMWithHistory 方法,使用 Spring AI Message 构造对话历史
- KeyboardAiChatMessageService 新增 getRecentMessages 接口及实现,按时间正序返回指定条数消息
- 保持原有分页查询接口不变,仅补充上下文所需方法
2026-01-26 20:25:04 +08:00
2025-12-22 22:00:16 +08:00

Keyborad Backend

基于 Spring Boot 3.5.5 的后端服务,集成了 AI 能力、向量搜索、Apple 登录等功能。

技术栈

  • Java 17 + Spring Boot 3.5.5
  • Spring AI - LLM 对话和文本嵌入OpenAI 兼容 API
  • Qdrant - 向量数据库,支持语义搜索
  • PostgreSQL - 关系型数据库
  • MyBatis Plus - ORM 框架
  • Redis - 会话存储和缓存
  • Sa-Token - 认证授权框架
  • Knife4j - API 文档
  • X-File-Storage - 文件上传Cloudflare R2
  • MailerSend - 邮件服务

核心功能

认证系统

  • Apple Sign-In JWT 验证
  • Sa-Token 会话管理
  • 请求签名校验(防篡改/防重放)

AI 能力

  • LLM 对话(支持流式响应)
  • 文本嵌入1536 维向量)
  • 语义搜索Qdrant 向量检索)

通用功能

  • 统一响应格式
  • 全局异常处理
  • 国际化支持i18n
  • 请求日志记录

快速开始

环境要求

  • JDK 17+
  • Maven 3.8+
  • PostgreSQL 14+
  • Redis 6+

本地运行

  1. 克隆项目
git clone <repository-url>
cd keyborad-backend
  1. 配置数据库和 Redis
# 修改 src/main/resources/application-dev.yml
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/keyborad_db
    username: your_username
    password: your_password
  redis:
    host: localhost
    port: 6379
  1. 启动应用
mvn spring-boot:run
  1. 访问 API 文档
http://localhost:7529/api/doc.html

项目结构

src/main/java/com/yolo/keyborad/
├── controller/     # REST API 端点
├── service/        # 业务逻辑层
│   └── impl/       # 服务实现
├── mapper/         # MyBatis 数据库映射
├── model/
│   ├── entity/     # 数据库实体
│   ├── dto/        # 请求数据传输对象
│   └── vo/         # 响应视图对象
├── config/         # Spring 配置类
├── aop/            # AOP 拦截器
├── Interceptor/    # 请求拦截器
├── filter/         # Servlet 过滤器
├── exception/      # 异常处理
├── common/         # 通用工具类
└── utils/          # 工具类

配置说明

配置项 说明 默认值
server.port 服务端口 7529
server.servlet.context-path 上下文路径 /api
spring.profiles.active 激活配置文件 dev

API 认证

Sa-Token 认证

需要在请求头中携带 satoken 字段。

请求签名

部分接口需要签名校验,请求头需包含:

  • X-App-Id - 应用 ID
  • X-Timestamp - 时间戳
  • X-Nonce - 随机数
  • X-Sign - 签名

开发指南

详细的开发指南请参考 CLAUDE.md

License

MIT License

Description
No description provided
Readme 910 KiB
Languages
Java 100%