peanut
235b08e01d
docs:ClarificationCard 选项切换修复设计
2026-07-22 21:49:21 +08:00
peanut
6bf726d6a0
小程序对话页面优化
2026-07-22 21:36:11 +08:00
peanut
ef23f3f51b
docs: 记录 SSE 流式传输修复的测试结果
2026-07-21 23:54:51 +08:00
peanut
bc2f9538f0
docs: 记录 SSE 流式传输修复的部署验证
2026-07-21 23:50:08 +08:00
peanut
82b138280b
fix: 移除 console.log 中的敏感信息(firstQuery 文本、payload 完整内容)
2026-07-21 23:47:17 +08:00
peanut
748fc18c84
feat: 前端添加 SSE 事件诊断日志,确认 originalQuery 传递
2026-07-21 23:43:48 +08:00
peanut
adeaa7a506
fix: 修复 nginx SSE 配置(添加 HTTP/1.1,移除冗余配置)
2026-07-21 23:40:38 +08:00
peanut
feaf8922c5
docs: 记录 nginx SSE 配置优化
2026-07-21 23:34:23 +08:00
peanut
406f9b77b4
feat: 优化 SSE 转发逻辑,使用严格行读取和显式 flush
2026-07-21 23:28:00 +08:00
peanut
2b6dc72744
docs:创建 SSE 流式传输与历史列表保存修复实施计划
2026-07-21 23:24:14 +08:00
peanut
0c9ab9b974
docs:补充前端代码完整示例,移除占位符
2026-07-21 23:19:40 +08:00
peanut
461f993ab1
docs:SSE 流式传输与历史列表保存修复设计
2026-07-21 23:18:18 +08:00
peanut
3d1cc24fc4
fix: SSE 流式转发从 RestTemplate 改用 OkHttp,支持真正的逐行流式读取,解决缓冲导致的一下子全出来问题
2026-07-21 22:48:52 +08:00
peanut
b24e176579
feat: 标签顺序改为全部/短篇/中篇/长篇/收藏夹;增加SSE事件诊断日志定位novel_done未触发问题
2026-07-21 21:56:22 +08:00
peanut
3813f91b8d
feat: 历史列表分类改为固定5标签(全部/中篇/短篇/长篇/收藏夹),移除状态筛选,后端保存length改为short
2026-07-21 21:15:31 +08:00
peanut
9b496bb42a
fix: 撤回 typewriter 改动,novel 改用直接累加 delta 保证流式输出
...
之前用 useTypewriterStream.writer.push + 同步读 visibleText 有时序问题:
writer 的 visibleText 由内部 setInterval 异步推进,push 后立即同步读得到空串,
气泡一直空白。
撤回 typewriter 改动,恢复 novel_delta 直接 lastNovel.content += delta,
SSE 本身就是流式推送,每次到达即显示。
保留 confirmOutline / modifyOutline 的 pendingNextResponse = true 修复(loading)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-21 20:43:11 +08:00
peanut
6afec090e4
fix: 大纲确认/修改时显示 loading + novel 消息使用 typewriter 逐字流式输出
...
- confirmOutline / modifyOutline 中设置 pendingNextResponse.value = true
解决大纲确认/修改后等待响应期间无 loading 的问题
- novel_start 时为 novel 消息创建独立 typewriter writer 实例(novelWriters Map)
- novel_delta 时通过 writer.push() 推送增量,逐字渲染 visibleText
- novel_done 时 finish writer 并同步最终文本,清理 writer 实例
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-21 20:33:52 +08:00
peanut
7b53821cec
fix: 澄清卡片 allow_custom 时允许纯自定义输入提交
...
- canSubmit 逻辑重构:纯文本卡片只需 customText 非空
- 有选项卡片:满足最小选择数,或(allow_custom 且 customText 非空)即可提交
- 修复其他,请简单描述输入自定义内容后提交按钮灰显的问题
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-21 20:25:24 +08:00
peanut
9a215a89e9
fix: 新生成短篇剧本刷新到历史列表 + 分类标签从实际数据动态生成
...
- novel_done 事件处理中调用 store.fetchScripts() 刷新剧本列表
- typeTabs 从硬编码改为 computed,根据实际 length 值动态生成
- activeType 默认值从 'long' 改为 'all'(显示全部)
- 过滤逻辑改为精确匹配 length 字段
- 移除无效的 '风格' 硬编码分类标签
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-21 08:39:14 +08:00
peanut
1f5ad3abe2
fix: 大纲修改意见输入框改 textarea,增高并完整显示 placeholder
...
- input 改为 textarea + auto-height,支持多行输入
- min-height 64rpx 保证 placeholder 完整显示(原来被压扁截断)
- max-height 120rpx 限制约 2 行,超出滚动显示最新底部内容
- line-height 1.5 比例协调,改动幅度小
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-20 23:52:46 +08:00
peanut
7c3bd5c0e3
fix: 心愿实现页面用 pendingNextResponse 标志修复第二轮 loading 显示
...
- 新增 pendingNextResponse ref 标志等待下一个 assistant 响应
- showChatLoading 改用该标志判断,替代不可靠的最后消息 role 判断
- submitClarification 移除重复 addResultMessage,消除重复用户气泡
- 规避 mp-weixin 对 v-for 中 computed 数组的错误编译导致的页面空白
- runGeneration/clarification/outline/novel_start/novel_done 正确设置标志
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-20 23:37:21 +08:00
peanut
4b3fa1552c
fix: 第二轮 loading 不显示 — 用 filteredResultMessages 替代函数调用,避免 mp-weixin 编译丢失
2026-07-20 23:08:42 +08:00
peanut
f8d6e881df
fix: 恢复 addResultMessage + 渲染层过滤,避免重复气泡同时支持后续 loading
2026-07-20 22:57:24 +08:00
peanut
4afc632cac
fix: 移除澄清卡片提交后的重复用户气泡(label 已在卡片内显示)
2026-07-20 21:55:35 +08:00
peanut
f1ad9a6b47
test: H5 验证澄清卡片 label 显示 + AI 问题显示
2026-07-20 21:36:13 +08:00
peanut
180d21b66c
fix: 已回答状态显示 AI 的问题(question)
2026-07-20 21:28:03 +08:00
peanut
41c2112c5b
fix: 澄清卡片已回答用 label 显示,后端 payload 仍用 value
2026-07-20 21:25:09 +08:00
peanut
412d3f3a9a
docs: 澄清卡片已回答显示修复实施计划
2026-07-20 21:17:34 +08:00
peanut
8693b3febc
docs: 澄清卡片已回答显示修复设计(label 替代 value + 显示 AI 问题)
2026-07-20 21:15:36 +08:00
peanut
d560f63d70
fix: chat 视图 loading 在等待首个 assistant 响应期间持续显示
2026-07-20 00:19:19 +08:00
peanut
979fcb5897
docs: 心愿实现 chat 视图 loading 标识修复实施计划
2026-07-20 00:17:18 +08:00
peanut
95ce23f172
docs: 心愿实现 chat 视图 loading 标识修复设计
2026-07-20 00:16:05 +08:00
peanut
4884099b9b
fix: 收藏 toggle 用原生 SQL 绕过逻辑删除,彻底解决重新收藏冲突
2026-07-19 23:59:54 +08:00
peanut
c0245d37fb
fix: 收藏 toggle 支持重新收藏(修复逻辑删除与 unique key 冲突)
2026-07-19 23:56:41 +08:00
peanut
3666c3d530
fix: 收藏 toggle 增加实体存在性和权限校验(IDOR 修复)
2026-07-19 23:42:53 +08:00
peanut
33b24450db
feat: 人生事件和剧本收藏从 localStorage 切换为真实 API
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-19 23:24:04 +08:00
peanut
dd11cfae73
feat: 人生事件和剧本收藏从 localStorage 切换为真实 API
...
- 后端:新增 t_event_favorite 表(UNIQUE KEY + MyBatis-Plus Entity)
- 后端:LifeEventController 新增 /favorite/toggle、/favorite/page、/favorite/check 三个真实端点
- 后端:EventFavoriteService 完整 CRUD,含 toggle/分页/批量查询/状态检查
- 后端:删除旧的 favorite-placeholder mock 端点
- 前端:life-event/detail.vue 从 localStorage 假收藏切换为真实 API + localStorage 缓存防闪烁
- 前端:ScriptLibraryView.vue 从 localFavorites 切换为 checkFavoriteScript 真实 API
- 前端:stores/app.js 新增 toggleEventFavorite / checkEventFavorite 方法
- 修复:审核发现的 UNIQUE 约束缺失、未使用 watch 导入、Controller 参数注解遗漏、Controller 委托 Service 构造 Response
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-19 23:23:40 +08:00
peanut
a3bfad099a
docs: 收藏功能真实 API 化实施计划
2026-07-19 22:25:39 +08:00
peanut
bebb7f1667
docs: 收藏功能真实 API 化设计文档 v2(沿用独立收藏表架构)
2026-07-19 22:16:15 +08:00
peanut
ce9c9a8dc5
chore: 撤回旧收藏设计文档,改用独立收藏表方案
2026-07-19 22:13:17 +08:00
peanut
10d3c72082
docs: 收藏功能真实 API 化设计文档
2026-07-19 22:07:34 +08:00
peanut
05ea918ee1
feat(script-favorite): update toggleFavorite to use backend API
...
- Import toggleFavoriteScript from epicScript service
- Change toggleFavorite from sync local-only to async with API call
- Implement optimistic update pattern: update local cache first, then call backend
- Rollback on API failure with error toast
- Preserves localFavorites for offline/fast-render scenarios
2026-07-19 21:51:20 +08:00
peanut
50f1bdba38
feat(script-favorite): add favorite API wrappers to epicScript.js
...
- toggleFavoriteScript: POST /epicScript/favorite/toggle
- getFavoriteScriptPage: GET /epicScript/favorite/page
- checkFavoriteScript: GET /epicScript/favorite/check
- Added to default export object
2026-07-19 21:48:00 +08:00
peanut
74fa304cd9
feat(script-favorite): add 3 favorite endpoints to EpicScriptController
...
- POST /epicScript/favorite/toggle: toggle favorite for a script
- GET /epicScript/favorite/page: paginated favorite list
- GET /epicScript/favorite/check: check if script is favorited
- Add ScriptFavoriteToggleRequest, ScriptFavoriteResponse, ScriptFavoriteService imports
- Inject ScriptFavoriteService via @Autowired
2026-07-19 21:43:46 +08:00
peanut
9d352f40a0
feat(script-favorite): add ScriptFavoriteServiceImpl
...
- toggleFavorite: upsert via logical-delete check + save, @Transactional
- getFavoritePage: paginate favorites then fetch EpicScript details
- getFavoritedScriptIds: batch IN query for checking multiple scripts
- isFavorited: count > 0 check for single script
- getFavoriteCount: total count for current user
- Uses UserContextHolder for userId, consistent with project pattern
2026-07-19 21:41:54 +08:00
peanut
674188f471
feat(script-favorite): add ScriptFavoriteService interface
...
- toggleFavorite: toggle favorite status for a script
- getFavoritePage: paginated list of user's favorite scripts
- getFavoritedScriptIds: batch check which scripts are favorited
- isFavorited: check single script favorite status
- getFavoriteCount: count user's total favorites
2026-07-19 21:41:28 +08:00
peanut
62ca1730b9
feat(script-favorite): add ScriptFavoriteResponse DTO
...
- Fields: scriptId, isFavorited, favoriteTime
- Used by toggle/check endpoints to return favorite status
2026-07-19 21:41:14 +08:00
peanut
0d27d1a072
feat(script-favorite): add ScriptFavoriteToggleRequest DTO
...
- Single field: scriptId with @NotBlank validation
- Uses javax.validation.constraints.NotBlank matching project convention
2026-07-19 21:41:02 +08:00
peanut
d74d8b22c6
feat(script-favorite): add ScriptFavoriteMapper
...
- Extends BaseMapper<ScriptFavorite>
- Standard MyBatis-Plus mapper pattern matching project convention
2026-07-19 21:40:06 +08:00
peanut
489131a04b
feat(script-favorite): add ScriptFavorite entity
...
- Extends BaseEntity for id, createTime, updateTime, isDeleted
- Maps to t_script_favorite table via MyBatis-Plus @TableName
- Fields: userId, scriptId
2026-07-19 21:39:47 +08:00