cat-shark
|
0bc46270a7
|
fix(ci): 使用 apt-get 替代 apk (Ubuntu runner)
|
2026-07-19 20:43:43 +08:00 |
|
cat-shark
|
8e2dd566e2
|
fix: 解决 deploy.yml 冲突
|
2026-07-19 20:12:59 +08:00 |
|
cat-shark
|
312048c013
|
fix: lowercase jobs
|
2026-07-19 19:20:06 +08:00 |
|
cat-shark
|
642472dcfe
|
fix: use /tmp/kubeconfig (writable)
|
2026-07-19 19:19:52 +08:00 |
|
cat-shark
|
13419a8946
|
fix: add curl install before kubectl download
|
2026-07-19 19:18:24 +08:00 |
|
cat-shark
|
958b6b48b2
|
fix(ci): 修复 Gitea Actions 部署配置
- 修复变量名: github.sha → gitea.sha
- 添加 Docker Registry 认证步骤
- kubectl 版本修正为 v1.30.0
- 添加部署超时控制(5 分钟)
- 添加部署失败自动回滚机制
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-19 19:13:45 +08:00 |
|
cat-shark
|
02a51659c6
|
fix: add docker login before push (registry requires auth)
|
2026-07-19 19:11:34 +08:00 |
|
cat-shark
|
bd6fad30ca
|
fix: try apk instead of apt-get for docker-cli
|
2026-07-19 19:08:40 +08:00 |
|
cat-shark
|
27450de42a
|
fix: add docker.io install for step container (no docker CLI in runner image)
|
2026-07-19 19:02:22 +08:00 |
|
cat-shark
|
f59761432b
|
ci: replace actions/checkout with git clone (no Node.js in runner)
|
2026-07-19 18:56:03 +08:00 |
|
cat-shark
|
a2fa894a33
|
ci: use unique image tags, add kubectl setup
|
2026-07-19 18:54:19 +08:00 |
|
cat-shark
|
042b24b0ed
|
add Dockerfile for Node.js/TS AI service
|
2026-07-19 18:54:03 +08:00 |
|
cat-shark
|
3611054587
|
Switch to manual trigger (workflow_dispatch)
|
2026-07-19 18:14:04 +08:00 |
|
cat-shark
|
5d4750fb2d
|
Add CI/CD pipeline
lpt-ai Build & Deploy / build-and-deploy (push) Failing after 11s
|
2026-07-19 18:07:26 +08:00 |
|
developer
|
35b2381d1c
|
docs: update README
|
2026-07-19 16:55:47 +08:00 |
|
developer
|
3fce54f2cf
|
升级 vitest 依赖至 v4.1.10
|
2026-07-09 00:12:33 +08:00 |
|
cat-shark
|
200f0881a5
|
feat(lpt-ai):新增 /fetch-title 网页标题抓取接口
POST /fetch-title { url } → { url, title }
- 服务端 fetch 目标页面,正则提取 <title> 标签
- 10 秒超时,抓取失败时返回 title: null
- 请求日志记录到 logStore
|
2026-07-04 22:34:07 +08:00 |
|
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 |
|