Commit Graph

76 Commits

Author SHA1 Message Date
8632dcd282 docs(readme): 重写项目文档,更新技术栈与功能说明
feat(character): 新增人设详情接口并优化获取逻辑
2026-01-07 16:17:57 +08:00
090cb65c0b fix(controller): 修复文件上传参数绑定与异常处理
- FileController:把 @RequestParam 改成 @RequestPart 并去掉多余注解
- GlobalExceptionHandler:新增 MissingServletRequestPartException 拦截,返回 FILE_IS_EMPTY 错误码
- RequestBodyCacheFilter:跳过 multipart 请求,避免文件上传被缓存过滤器破坏
- UserServiceImpl:修正更新语句为 updateById,防止字段丢失
2026-01-05 20:26:37 +08:00
6ef1488e5f feat(invite): 新增H5邀请链接配置与返回
在 AppConfig 中增加 inviteConfig 及 h5Link 字段;
服务层改造 getUserInviteCode 返回 InviteCodeRespVO 并填充 h5Link;
Controller 简化调用逻辑,统一走服务层组装 VO。
2025-12-24 22:02:08 +08:00
b9197c4275 feat(invite): 新增用户邀请码创建与查询接口 2025-12-24 21:36:27 +08:00
1b7374e959 fix(controller): 将 themeId 参数改为可选 2025-12-23 14:09:26 +08:00
2b0fa71c40 [Claude Code] After prompt #0 2025-12-23 13:53:53 +08:00
c70a1bd0e2 feat(wallet): 新增分页DTO并统一交易记录接口入参 2025-12-22 19:30:20 +08:00
45d6058b90 fix(service): 修复查询用户主题时调用错误服务
将 KeyboardThemePurchaseService 改为 userThemesService,并调整查询条件从支付状态改为删除标记,确保获取正确的用户主题列表。
2025-12-22 18:31:04 +08:00
b068ab4d7c refactor(invite): 移除用户主动生成邀请码功能
- 删除 InviteCodeRespVO.java VO 类
- 移除 KeyboardUserInviteCodesService 及其实现中的 createInviteCode/getUserInviteCode 方法
- 删除 UserController 中 /inviteCode 查询接口
- 注册流程不再自动为用户创建邀请码,仅保留绑定逻辑
2025-12-19 15:15:53 +08:00
6638ff2ccc feat(invite): 添加邀请码注册与验证功能
- 新增邀请码实体、Mapper、Service 及 XML 配置
- 注册接口支持填写邀请码并建立绑定关系
- 邀请码校验包含存在性、状态、过期及次数限制
- 补充相关错误码:INVITE_CODE_* 与 RECEIPT_ALREADY_PROCESSED
2025-12-19 14:47:54 +08:00
419878a607 feat(invite): 新增用户邀请码功能
新增实体、Mapper、Service及Controller接口,支持注册时自动生成与用户查询个人邀请码
2025-12-18 19:20:25 +08:00
c4d0c60ea8 chore(core): 清理Demo代码并优化配置文件
删除DemoController和PostReviewStatusEnum等测试/废弃代码;
.gitignore、SaTokenConfigure、SendMailUtils、application.yml小幅更新;
AppleAppStoreConfig改用流式读取私钥,适配容器化部署。
2025-12-18 15:51:46 +08:00
abfac871fd feat(user): 新增用户反馈提交功能 2025-12-17 18:20:05 +08:00
198650556f feat(themes): 新增主题模糊搜索接口及鉴权放行
支持按名称模糊搜索主题,并标记用户已购状态;同步放开 /themes/search 无需登录访问
2025-12-17 16:57:39 +08:00
2621321dea refactor(chat): 拆分聊天逻辑至独立 ChatService 并提取 LLM 配置
将 ChatController 中的聊天与向量搜索流程整体迁移到 ChatServiceImpl,
新增 AppConfig.LLmConfig 集中管理系统提示语与最大消息长度,
消除控制器层复杂逻辑,提升可维护性与配置动态化能力。
2025-12-17 15:36:57 +08:00
86738e3d1b feat(chat): 新增聊天调用日志与动态配置支持
- 新增 KeyboardUserCallLog 实体及对应 Mapper、Service,用于记录每次聊天请求的模型、token、耗时、错误码等
- ChatController.talk() 在流式输出前后采集元数据,异步落库,支持错误码记录
- AppConfig 新增 QdrantConfig,支持 vectorSearchLimit 动态配置
- QdrantVectorService 改为从 Nacos 动态读取搜索条数,替代硬编码 limit=1
- UserController 登出时先清除用户会话再清除 token,避免并发异常
2025-12-17 15:03:23 +08:00
8e26488738 feat(config): 接入 Nacos 配置中心
- 新增 AppConfig、NacosAppConfigCenter 动态配置类
- 将 userRegisterProperties 的默认值改为运行时从 Nacos 读取
- 注册/创建用户时免费配额改为动态配置获取
- 增加 nacos-client 依赖并配置 dev 环境连接信息
2025-12-16 21:50:00 +08:00
cd6eca9cbb feat(apple): 支持App Store Server V2通知全类型处理
- 新增订阅、退款、偏好变更、消费请求等通知处理器
- 统一使用ResponseBodyV2DecodedPayload验签与分发
- 移除控制器层JWT解析逻辑,下沉至服务层
- 增加幂等、状态回滚及权益撤销/恢复能力
2025-12-16 15:50:35 +08:00
c54c14de58 refactor(service): 改用JWS验签,移除旧收据解析
废弃ReceiptUtility与AppStoreServerAPIClient,直接以SignedDataVerifier校验客户端传来的signedPayload(JWS),简化流程并减少一次网络IO。
2025-12-16 15:06:41 +08:00
c305dfaae4 fix(apple): 增加无效收据原因日志并补充订阅过期时间调试输出 2025-12-15 21:21:47 +08:00
0ad9de1011 fix(controller): 使用官方 SDK 验证 Apple 交易签名并解析 payload 2025-12-15 18:22:11 +08:00
d9a778f5aa refactor(apple-purchase): 重构苹果购买服务,增强可读性和健壮性 2025-12-15 15:15:10 +08:00
a70c1f4049 feat(apple): 新增服务器通知续订与JWT解析能力
- 支持解析Apple签名JWT并提取交易信息
- 新增processRenewNotification处理续订通知
- 添加测试用JWT生成、解析及发送重试记录示例
- 移除废弃ApplePayUtil,统一走新验证逻辑
2025-12-15 14:56:38 +08:00
c1dd4faf0e feat(apple): 新增苹果订阅通知接口并补充测试
- AppleReceiptController 新增 /apple/notification 端点,用于接收苹果服务器通知
- 调整路径前缀为 /apple,开放 /apple/receipt 与 /apple/notification 免登录
2025-12-12 20:37:43 +08:00
a24a795887 feat(purchase): 新增 Apple 内购完整链路
- AppleReceiptController 改造:验签后立刻落库并解锁权益
- 新增 ApplePurchaseService 处理业务:防重、写订单、发道具
- 新增 KeyboardUserPurchaseRecords 实体与 Mapper,记录用户购买
- ErrorCode 补充 RECEIPT_INVALID(50016)
- 删除过期 AGENTS.md,修正 i18n_message 表名与 CORS 白名单
2025-12-12 18:18:55 +08:00
2e16183cb8 feat(product): 新增键盘商品管理模块
新增商品实体、Mapper、Service、Controller 及 VO,支持商品列表、详情、订阅等接口;同步更新 Sa-Token 放行路径与 .gitignore
2025-12-12 14:15:30 +08:00
f391f9dfe1 feat(user): 新增VIP字段及完善MyBatis-Plus映射 2025-12-11 20:51:34 +08:00
07ff9a5ff2 feat(login): 新增用户登录日志记录功能
新增 KeyboardUserLoginLog 实体、Mapper、Service 及 XML,扩展 Apple 与普通登录接口,自动记录 IP、UA、平台、OS 及新用户标识。
2025-12-11 20:16:20 +08:00
e8ef359fcf feat(themes): 新增推荐主题与用户主题批量删除功能
- 新增 getRecommendedThemes:按真实下载量降序返回8个未购买主题
- 新增 batchDeleteUserThemes:支持用户批量逻辑删除已购主题
- 补充接口注释与 Swagger 文档,开放 /themes/recommended 免鉴权路径
2025-12-11 15:08:02 +08:00
262c822585 feat(theme): 新增主题详情查询接口
支持根据主题ID和用户ID查询主题详情,包含购买状态
2025-12-11 13:32:05 +08:00
77e8e9a2a7 feat(themes): 为主题列表接口增加用户购买状态标记
在 KeyboardThemesRespVO 中新增 isPurchased 字段;
selectThemesByStyle 方法增加 userId 参数并查询用户已购主题 ID,
返回结果标记当前用户是否已购买。
2025-12-10 20:36:01 +08:00
03dc005b38 feat(themes): 新增查询用户已购主题接口
在 KeyboardThemePurchaseService 及其实现中增加 getUserPurchasedThemes 方法,
通过用户ID获取已支付主题列表;同步新增 /themes/purchased 接口并放行鉴权。
补充 KeyboardThemesRespVO 缺失的 themePreviewImageUrl 字段。
2025-12-10 20:19:47 +08:00
1a6fb944b2 feat(theme): 支持购买记录查询并调整积分类型为BigDecimal
- 新增 /themes/purchase/list 接口,支持用户查询主题购买记录
- 将 KeyboardThemePurchase 中的积分字段由 Integer 改为 BigDecimal,确保金额精度
- 对应 Mapper XML 中 jdbcType 由 INTEGER 调整为 NUMERIC
- 补充 getUserPurchaseList 服务及返回 VO ThemePurchaseListRespVO
- 开放接口权限并完善跨域配置
2025-12-10 19:58:48 +08:00
22b97b99aa feat(purchase): 新增主题购买全流程接口
新增主题购买功能,包括余额校验、订单生成、交易记录等完整流程。同时扩展错误码支持余额不足、主题不存在等场景。
2025-12-10 19:40:27 +08:00
0d1545f568 feat(wallet): 新增用户钱包余额查询功能 2025-12-10 18:52:38 +08:00
5227b81acb feat(themes): 支持主题标签数组存储与按风格查询
- 新增 StringArrayTypeHandler 实现 PostgreSQL text[] ↔ Java String[] 映射
- 将 theme_tag 字段类型由 VARCHAR 改为 ARRAY,实体与 VO 同步调整为 String[]
- 移除废弃的 selectAllThemes 方法,统一使用 selectThemesByStyle(Long)
- 9999 风格 ID 保留查询全部上架主题逻辑,其余按风格过滤
- 开放 /themes/listByStyle 接口免鉴权,并修正 theme_status=true 查询条件
2025-12-10 15:55:55 +08:00
0447959f52 fix(chat): 增强聊天接口参数校验与异常处理
- 新增消息长度、空值、人设存在性等校验
- 补充 LLM 与向量搜索异常捕获及降级
- 统一返回错误码与日志,提升鲁棒性
2025-12-10 14:07:48 +08:00
5d2c5fa508 feat(file): 新增文件上传校验与错误码
- 支持图片格式与大小限制(最大5MB)
- 补充 FILE_NAME_ERROR、FILE_TYPE_ERROR、FILE_SIZE_EXCEED 错误码
- 移除 FileController.upload 的异常声明,统一由 BusinessException 处理
2025-12-10 13:46:48 +08:00
f4dc692e3b refactor(controller): 调整导入顺序并添加参数校验 2025-12-10 13:36:57 +08:00
1d258ce5ee fix(service): 修复 themeStyle=9999 时查询逻辑缺失 2025-12-09 19:50:39 +08:00
bdb4f009d0 fix(service): 修复 themeStyle=9999 时查询逻辑缺失 2025-12-09 19:49:23 +08:00
5ea763b1db fix(service): 修复 themeStyle=9999 时查询逻辑缺失 2025-12-09 16:28:47 +08:00
82c5552cd8 feat(service): 新增主题风格查询接口 2025-12-09 15:31:11 +08:00
29298c5dd6 feat(themes): 新增主题查询与风格筛选接口 2025-12-09 15:22:17 +08:00
fba6f0d729 feat(chat): 重构 LLM 流式输出并扩展 ChatSaveReq 字段
- 将原始整段 chunk 拆分为 3 字批次推送,降低前端卡顿
- ChatSaveReq 新增 userId、lang、liked 等 8 个字段并补充 Swagger 注解
- QdrantVectorService 改用 Map<String,JsonWithInt.Value> 载荷,新增 QdrantPayloadMapper 统一转换
2025-12-09 14:49:14 +08:00
39b19493e2 feat(chat): 新增保存润色结果向量接口并重构向量类型
- ChatController 新增 /save_embed 接口,接收 ChatSaveReq 保存用户选中润色句子的向量
- 统一向量参数由 List<Float> 改为 float[],降低 GC 压力
- 向量搜索增加 ≥0.9 相似度过滤,仅返回高置信结果
- 精简 DemoController 测试接口,下线冗余的 testSaveEmbed/testSearch
- 调整 Embedding 模型为 qwen3-embedding-4b,降低资源占用
- 放开 /chat/save_embed 匿名访问,适配前端直调
2025-12-08 20:45:15 +08:00
f72781d948 feat(user): 新增用户注册后默认分配5个人设 2025-12-08 18:51:16 +08:00
86601e772f feat(chat): 新增聊天润色与向量搜索接口
- ChatController 提供 /chat/talk SSE 流式对话,融合 LLM 输出与 Qdrant 向量检索
- 新增 ChatReq、ChatStreamMessage 等 DTO 与 Service 骨架
- 调整向量维度与集合名称,开放跨域并补充错误码
2025-12-08 18:05:27 +08:00
a577690499 feat(config): 新增异步线程池与WebMvc异步配置并扩展emoji字段支持 2025-12-08 14:43:52 +08:00
dc855ac33d feat(character): 新增未登录人设列表及详情接口
支持未登录用户按 rank、标签查看人设列表及详情,同步放行新接口并添加请求体缓存过滤器
2025-12-04 20:56:32 +08:00