5290fa4423ef0d9dab850875d9a07ebd2f53e51d
新增文件: - 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 个测试通过
lpt-ai
LPT 学习进度跟踪系统的独立 AI 服务。将 LLM 相关能力从 Java 主服务中剥离,便于独立迭代、增加安全层与沙箱。
能力
| 端点 | 方法 | 说明 |
|---|---|---|
/health |
GET | 健康检查,返回 LLM 可用状态 |
/ai/aggregate-report |
POST | 将学习残片聚合为学习报告 |
/ai/generate-mind-map |
POST | 从报告/残片生成思维导图大纲 |
快速开始
cp .env.example .env
# 编辑 .env,填入 LLM_API_KEY
npm install
npm run dev
未配置 LLM_API_KEY 时服务可启动,但 AI 端点返回 503,由调用方(Java 后端)降级到内置规则。
请求示例
curl -X POST http://localhost:5199/ai/aggregate-report \
-H "Content-Type: application/json" \
-d '{
"taskName": "Java 并发编程",
"expectation": "理解线程池核心参数",
"fragments": [
{"content": "corePoolSize 是核心线程数,即使空闲也不回收"},
{"content": "workQueue 满了之后才会创建超过 core 的线程"}
]
}'
架构位置
LPT 前端 (Vue) ──► LPT 后端 (Java/Spring Boot) ──► lpt-ai (TS/Fastify) ──► SiliconFlow API
Java 后端是唯一调用方;本服务不直接暴露给前端,不做鉴权(部署在内网)。
后续规划
- 输入内容安全过滤(Prompt 注入防护)
- 输出审核
- 多模型路由(按任务复杂度选择模型)
- 用量与成本监控
- SSE 流式输出
Description
Languages
TypeScript
98.7%
Dockerfile
1.3%