cat-shark
|
decebd143c
|
cleanup(lpt-ai):移除废弃的同步 API + 管理面板增加复制按钮
routes/ai.ts:
- 移除 /ai/aggregate-report、/ai/generate-mind-map、/ai/compare-recall
三个同步端点,仅保留 /health + 异步任务路由
- 清除不再需要的 import(chat、prompts、LlmError、logStore)
admin/routes.ts:
- 日志详情增加「复制到剪贴板」按钮,一键复制完整请求/响应/
prompt/参数文本,方便粘贴到外部工具调试
|
2026-07-04 17:31:50 +08:00 |
|
cat-shark
|
438045b57a
|
feat(lpt-ai):异步任务队列 + 提交/轮询路由
lpt-ai 新增异步任务处理能力,LLM 调用改为后台 Worker 顺序执行:
新增 src/task-queue.ts:
- createTask(type, params) → taskId(randomUUID)
- getTask(taskId) → { status, result?, error? }
- 单线程 Worker(setImmediate 链),同一时刻只处理一个 LLM 调用
- 按类型分派到对应的 prompt 函数
- TTL 清理:5 分钟/次,移除完成超过 1 小时的记录
- 异常隔离 + logStore 集成
修改 src/routes/ai.ts:
- POST /ai/tasks:接收 { type, params },返回 201 { taskId }
- GET /ai/tasks/:taskId:返回任务状态与结果(pending/running/done/failed)
- 旧同步端点完全不动,向后兼容
|
2026-07-04 16:38:48 +08:00 |
|
cat-shark
|
e549395e99
|
fix(lpt-ai):增加 LLM 超时到 2 分钟 + Fastify 连接超时 3 分钟
- LLM_TIMEOUT_MS 默认值 60000 → 120000
- Fastify connectionTimeout 设为 180000(3 分钟)
|
2026-07-04 16:16:20 +08:00 |
|
cat-shark
|
a5a1b848d0
|
fix(lpt-ai):回忆对比 prompt 改为平铺匹配列表格式,树标注交 Java 端
LLM 无法可靠输出完整嵌套树 JSON(之前的 matchedTree),
实际返回格式与预期不符导致前端对比展示异常。
修复:
- prompt 要求 AI 只输出平铺列表:matches(匹配对)、missedTitles、
extraNodes、recallRatio、evaluation,不再要求输出树结构
- matches 中的 standardTitle 明确要求与标准导图逐字一致
- 用户消息末尾追加明确提示「请输出 JSON(只包含五个字段)」
|
2026-07-04 16:08:45 +08:00 |
|
cat-shark
|
2b0bd87d79
|
feat(lpt-ai):新增 /ai/compare-recall — AI 语义化回忆对比
- prompts.ts:新增 compareRecallPrompt(),输出结构化 JSON
(matchedTree/MISSED|标注 + extraNodes + recallRatio + evaluation)
- routes/ai.ts:新增 POST /ai/compare-recall,temperature 0.2
自动清理 LLM 可能包裹的 ```json ``` 标记
- 日志记录完整请求/响应,管理员面板可回溯
|
2026-07-04 15:47:03 +08:00 |
|
cat-shark
|
3d94b45ef2
|
feat(admin):日志面板增加 prompt 详情 + 模型调用参数
展开日志详情后新增:
- Prompt 区域:System Prompt(蓝色背景)和 User Message(灰色背景)完整显示
- 调用参数:temperature、max_tokens 等
- 耗时:独立显示
修改:
- LogEntry 新增 messages? 和 params? 字段
- ai.ts 两个 handler 在日志中记录构造后的 messages 和调用参数
- 面板 toggleDetail 渲染 messages/params 区域
|
2026-07-04 12:37:35 +08:00 |
|
cat-shark
|
5290fa4423
|
feat(lpt-ai):管理员面板 —— 请求日志记录与查看
新增文件:
- src/admin/store.ts:环形缓冲区(200条),文件持久化为 data/logs.json
- src/admin/routes.ts:admin API(列表/详情/清除)+ 自包含 HTML 面板
- src/admin/index.ts:统一导出
面板功能:
- GET /admin:绿白配色自包含面板,零外部依赖
- 统计栏:总请求/成功/失败/平均耗时
- 日志表格:时间、端点、状态、错误、耗时、模型
- 点击行展开查看完整请求体/响应体
- 端点筛选下拉、一键清除
- 响应式布局
修改文件:
- src/routes/ai.ts:两个 AI handler 均注入日志记录
(记录时间戳、端点、模型、耗时、状态码、请求体、响应体、错误)
- src/index.ts:注册 adminRoutes
验证:
- npm run typecheck 通过
- npm test 4 个测试通过
|
2026-07-04 12:32:07 +08:00 |
|
cat-shark
|
29c8b0be4d
|
fix(lpt-ai):启动时未加载 .env 文件导致 LLM_API_KEY 始终为空
根因:项目未依赖 dotenv,启动脚本也未使用 --env-file,
process.env 中没有 LLM_API_KEY,isAvailable() 始终返回 false,
/health 端点返回 llmAvailable: false。
修复:
- index.ts 启动时手动读取 .env 并注入 process.env
(零依赖,兼容 tsx watch dev 和 node dist 两种启动方式)
- start 脚本保留 node --env-file=.env 双保险
- .gitignore 加入 .idea/
|
2026-07-04 11:22:08 +08:00 |
|
cat-shark
|
44c07d28bd
|
feat(AI服务):lpt-ai 独立服务初始版本
- Fastify + TypeScript,OpenAI 兼容接口对接 SiliconFlow
- POST /ai/aggregate-report:残片聚合为学习报告(支持预期对比)
- POST /ai/generate-mind-map:生成思维导图缩进大纲(与后端解析格式一致)
- Key 从环境变量读取且日志脱敏,未配置时返回 503 由调用方降级
- prompt 模板集中管理,vitest 单元测试
|
2026-07-03 23:48:51 +08:00 |
|