cat-shark
5497dfc290
Add Kubernetes deployment configurations
...
- Add deployment.yaml with imagePullSecrets and env configuration
- Add service.yaml with ClusterIP configuration
- Configure LLM API key from Secret and other env from ConfigMap
- Ensures proper image pull authentication from private registry
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-20 21:24:09 +08:00
cat-shark
7841bac39d
feat(ci): 添加 imagePullSecret 自动创建步骤
2026-07-19 22:46:37 +08:00
cat-shark
a933cf1ed2
feat(ci): 添加部署失败时的调试输出
2026-07-19 22:27:01 +08:00
cat-shark
fd63ca698f
feat(ci): 使用时间戳标签确保每次部署都触发更新
2026-07-19 21:57:23 +08:00
cat-shark
e7bdaeb62e
fix(ci): 移除手动安装 docker.io
2026-07-19 20:57:00 +08:00
cat-shark
b9daf518e1
fix(ci): 使用绝对路径调用 apt-get (host 模式)
2026-07-19 20:50:14 +08:00
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