wangdl
6ab54be309
feat: H0-11 RAG Chat 接入真实检索 + AI 生成管道
...
Deploy API Server / build-and-deploy (push) Failing after 19s
- sendMessage 从 KB 加载知识点内容作为上下文(最多 30 条/4000 字符)
- 通过 AiGatewayService 调用 DeepSeek 生成回答
- AI 回复附带引用来源(ChatCitation)
- AI Gateway 不可用时降级提示
- 知识库为空时引导用户先添加内容
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:31:33 +08:00
wangdl
5fe31a8805
feat: H0-10 存储空间统计 + 学习资产计数
...
Deploy API Server / build-and-deploy (push) Failing after 19s
- GET /users/me/storage(totalBytes/usedBytes/fileCount)
- GET /users/me/assets-summary(kbCount/itemCount/cardCount)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:29:22 +08:00
wangdl
d208fd7876
fix: User 模型补充 KnowledgeBaseSubscription 反向关联
...
Deploy API Server / build-and-deploy (push) Successful in 44s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:25:53 +08:00
wangdl
b9f8334245
feat: H0-08 KnowledgeBase 增加业务字段 + 订阅 + 发现 + 置顶 + 公开
...
Deploy API Server / build-and-deploy (push) Failing after 11s
Schema 新增:
- coverType/coverIcon/coverColor(封面类型/系统图标/颜色)
- visibility(private/public)
- isPinned(置顶)
- ownerType(user/official)
- isVerified(认证标识)
- KnowledgeBaseSubscription 表
API 新增:
- POST /knowledge-bases/:id/pin(切换置顶)
- PATCH /knowledge-bases/:id/visibility(切换公开/私有)
- POST /knowledge-bases/:id/subscribe(订阅)
- DELETE /knowledge-bases/:id/subscribe(取消订阅)
- GET /knowledge-bases/subscribed(已订阅列表)
- GET /knowledge-bases/discover(发现公开库)
增强:
- findAll 支持 visibility/ownerType 筛选 + 置顶优先排序
- findOne 公开库允许任何人查看
- update 支持所有新字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:24:21 +08:00
wangdl
4f59569b7c
feat: KB 列表返回 coverUrl(coverKey → 预签名下载URL)
...
Deploy API Server / build-and-deploy (push) Successful in 43s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 10:48:34 +08:00
wangdl
28caf1297f
feat: KnowledgeBase 支持封面图 coverKey 字段
...
Deploy API Server / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 10:42:58 +08:00
wangdl
c331d08644
feat: 知识点软删除 + 批量删除接口
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- DELETE /knowledge-items/:id 软删除(设 deletedAt)
- POST /knowledge-items/batch-delete 批量软删除
- softDelete 校验归属权 + 自动更新父KB的itemCount
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 22:47:22 +08:00
wangdl
b5de001dbb
fix: FileUploadRateLimit 10→200/小时,支持批量上传
...
Deploy API Server / build-and-deploy (push) Successful in 43s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 22:41:56 +08:00
wangdl
53a4cc118a
fix: 创建知识点时更新知识库 itemCount 计数
...
Deploy API Server / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 22:38:34 +08:00
wangdl
846ba43f8f
fix: COS domain fallback 从 cos.longde.cloud 改为空字符串
...
Deploy API Server / build-and-deploy (push) Successful in 44s
storage.config.ts 兜底值 cos.longde.cloud → ''
配合 CosStorageProvider 的 domain ? {...} : {} 逻辑,
彻底移除无效 TLS 证书的自定义域名。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 21:52:24 +08:00
wangdl
859156a59b
fix: COS 自定义域名空值时回退到原生域名
...
Deploy API Server / build-and-deploy (push) Successful in 45s
- CosStorageProvider 初始化时 Domain 为空不再传入 SDK
- 原生 COS 域名 (cos.ap-beijing.myqcloud.com) 有有效 TLS 证书
- 生产环境移除 STORAGE_COS_DOMAIN 配置
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 21:48:33 +08:00
wangdl
b9e6055400
fix: H0-01 彻底阻断生产环境 mock + 结构化错误码 + iOS Auth 合同文档
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- apple-auth.service.ts: verifyIdentityToken 增加 NODE_ENV 检查,
生产环境缺 APPLE_BUNDLE_ID 时运行时返回 401,不再走 mock
- 新增 CAPIErrorCode 语义错误码体系 (src/common/errors/)
- 新增 CapiException 携带 errorCode 的 HttpException 子类
- GlobalExceptionFilter 响应自动包含 errorCode 字段
- AuthService/JwtAuthGuard/AppleAuthService 全部改用 CapiException
- 新增 LoginResponseDto/RefreshResponseDto/LogoutResponseDto/UserDto
- Auth controller Swagger 添加 type 参数
- 新增 docs/ios-auth-api-contract.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 21:03:15 +08:00
wangdl
c6fd1731d5
fix(auth): OnModuleInit改为warn而非throw,避免生产缺APPLE_BUNDLE_ID时进程崩溃
Deploy API Server / build-and-deploy (push) Successful in 45s
2026-05-27 20:24:23 +08:00
wangdl
5fcfc87f84
fix(auth): H0-01 Apple登录—nonce验证+启动检查+fullName补写修复
Deploy API Server / build-and-deploy (push) Failing after 34s
2026-05-27 20:22:42 +08:00
6a13edc7fb
feat: H0 milestone — iOS integration blocking fixes
...
Deploy API Server / build-and-deploy (push) Successful in 44s
H0-01: Reject Apple login mock fallback in production
H0-02: Protect /internal/* with InternalAuthGuard (X-Internal-API-Key)
H0-03: JwtAuthGuard check user status (deletedAt, status)
H0-04: Refresh token check user status + revoke all on deleted
H0-05: User/admin JWT isolation (type=user/admin, enforce ADMIN_JWT_ACCESS_SECRET)
H0-06: Add DTOs for import/source/learning-session controllers
H0-07: 22 E2E tests (h0.e2e-spec.ts), 5 iOS integration docs
Tests: 47/47 (H0 22 + M0 25), no regression.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 16:55:04 +08:00
23988a1add
fix: add sudo to rsync deploy commands to fix permission errors
...
Deploy API Server / build-and-deploy (push) Successful in 40s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:41:57 +08:00
ee5ebb5766
fix: add BigInt JSON serialization patch for Prisma BigInt columns
...
Deploy API Server / build-and-deploy (push) Failing after 26s
UploadedFile.sizeBytes is BigInt → JSON.stringify throws TypeError.
Add BigInt.prototype.toJSON to convert to Number globally.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:38:46 +08:00
e36f9c9785
fix: project center — Gitea API wraps responses in {ok,data}, extract data field
...
Deploy API Server / build-and-deploy (push) Successful in 44s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:36:32 +08:00
b81b7fba92
fix: replace prisma migrate deploy with db push in CI pipeline
...
Deploy API Server / build-and-deploy (push) Successful in 41s
prisma migrate deploy requires pre-generated migration files which won't
exist when schema is edited directly. db push syncs schema directly.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:31:22 +08:00
75f8dd27e7
fix: project center — fix empty repo list + Gitea tab bug + add repo selector
...
Deploy API Server / build-and-deploy (push) Successful in 40s
- GiteaService: use /repos/search?q= with fallback to /user/repos, remove slow per-repo API calls
- Frontend: add RepoSelector dropdown to Issues/Milestones/Releases tabs
- Fix Gitea panel tab (was filtered out by conditional undefined)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:03:27 +08:00
7a7561363d
perf: add missing createdAt indexes to 7 models for admin query performance
...
Deploy API Server / build-and-deploy (push) Successful in 43s
- Affected: Notification, AiUsageLog, LearningSession, AiAnalysisResult,
DocumentImport, ReviewLog, ChatSession, ChatMessage
- All admin list queries use ORDER BY createdAt DESC — without indexes
these required full table scans on large tables
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:01:36 +08:00
2c164f46da
perf: reduce SSH connection timeout from 5s to 2s for server metrics
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- Remote metrics SSH ConnectTimeout: 5s → 2s
- Remote metrics SSH command timeout: 8s → 4s
- Health check SSH timeouts remain at 3s (already reasonable)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 19:57:55 +08:00
f599af1b3c
perf: add select clause to admin review query, exclude large TEXT columns
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- Only fetch display-needed columns, skip backText TEXT column
- Reduces data transfer and query time significantly
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 19:55:40 +08:00
8a6b103571
fix: add createdAt index to ReviewCard model to fix slow admin page load
...
Deploy API Server / build-and-deploy (push) Has been cancelled
The admin review list query uses ORDER BY createdAt DESC but there was no
index on createdAt, causing full table scan + filesort on large tables.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 19:55:01 +08:00
d241407424
fix: M4 audit — add DELETE decisions, PATCH user-agreements, regular user list endpoint
...
Deploy API Server / build-and-deploy (push) Successful in 44s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:56:54 +08:00
c6d01534c8
feat: M4-11 — vendor billing + secret lifecycle management
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- Add VendorBill Prisma model (provider/billMonth/amount/usageSummary)
- VendorBillController: CRUD bills, list/rotate/revoke secrets
- Secret lifecycle: active → expiring → expired/rotated/revoked
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:25:58 +08:00
b3176b8ead
feat: M4-10 — admin notification deepening (cost alerts, import failures, key expirations)
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- Add scope field to Notification model (user/admin)
- AdminNotificationsController: list, send, mark read
- Generate endpoints: cost-alert, import-failure, key-expiring
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:23:35 +08:00
c4089129c0
feat: M4-09 — compliance & safety module (policies, agreements, filings, data requests)
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- Add PrivacyPolicy, UserAgreement, FilingRecord, DataExportRequest Prisma models
- ComplianceController: privacy policies, user agreements, filings, deletion/export requests
- AAPI: /admin-api/compliance/* (6 resource groups)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:19:32 +08:00
cefc4d51c9
feat: M4-08 — release & decision module (changelogs, ADR, checklist)
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- Add DecisionRecord and ReleaseChecklist Prisma models
- ReleaseController: CRUD for changelogs, decisions, checklists
- AAPI: /admin-api/release/changelogs, /decisions, /checklists
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:14:53 +08:00
5d84769ac0
feat: M4-07 — Hermes Agent task/artifact management with approval workflow
...
Deploy API Server / build-and-deploy (push) Successful in 40s
- Add AgentTask and AgentArtifact Prisma models
- HermesAgentController: list tasks, approve/reject, list artifacts
- AAPI: GET /admin-api/hermes/tasks, POST approve/reject, GET /admin-api/hermes/artifacts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:10:37 +08:00
8abf94872a
feat: M4-06 — project center with Gitea API integration
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- GiteaService: query repos, milestones, issues, releases, runners
- ProjectCenterController: 5 AAPI endpoints
- Replace iframe-only GiteaEmbed with full ProjectCenter page
(repos table, issues, milestones cards, releases, runners, Gitea embed tab)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:06:19 +08:00
b188988e82
feat: M4-05 — reporting & export module (user/learning/review CSV)
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- Add ExportJob Prisma model
- ReportingService: userReport, learningReport, reviewReport
- ReportingController: GET export/users, export/learning, export/reviews
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:01:23 +08:00
76c42f437c
feat: M4-04 — backup & cleanup module with admin interface
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- Add CleanupJob Prisma model
- Create BackupService with backup/cleanup job tracking
- Create BackupController (AAPI: GET jobs, POST trigger backup, GET cleanup, POST cleanup)
- Supports cleanup types: soft-delete, api-metrics, task-logs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:56:26 +08:00
fc978a5e7f
feat: M4-03 — server health checks (Docker/MySQL/Redis/Qdrant/Gitea/Nginx/Worker)
...
Deploy API Server / build-and-deploy (push) Successful in 39s
- Add ServiceHealth Prisma model for health check records
- Add getHealthChecks() with local + remote service checks
- Add GET /admin-api/servers/health endpoint
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:51:20 +08:00
90e921366a
feat: M4-02 — admin learning data views (sessions, AI analysis, AI usage logs)
...
Deploy API Server / build-and-deploy (push) Successful in 44s
- Add AdminLearningController with 3 endpoints:
GET /admin-api/learning/sessions — learning sessions list
GET /admin-api/learning/analysis — AI analysis results
GET /admin-api/learning/ai-usage — AI usage logs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:45:43 +08:00
5816ddf488
fix: add missing userTrend/aiCallTrend fields to dashboard stats response
...
Deploy API Server / build-and-deploy (push) Successful in 43s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:41:53 +08:00
fb1c6fd216
feat: M4-01 — enhance admin dashboard with real metrics + caching
...
Deploy API Server / build-and-deploy (push) Successful in 40s
- Query real data: today's AI calls, cost, import count, failed tasks, active users, upcoming expirations
- Add Redis caching (TTL 120s) for dashboard stats
- Add POST /admin-api/dashboard/refresh endpoint
- Fix ignoreDeprecations in tsconfig (ts-jest incompatible)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:36:23 +08:00
783df02a26
chore: add CI debug screenshots to .gitignore
...
Deploy API Server / build-and-deploy (push) Failing after 19s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:24:39 +08:00
136490823c
chore: add prisma compiled seed files to .gitignore
...
Deploy API Server / build-and-deploy (push) Has been cancelled
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:24:23 +08:00
34065931dd
fix: silence baseUrl deprecation warning in TS 6.x
...
Deploy API Server / build-and-deploy (push) Failing after 18s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:20:50 +08:00
2bfa9ad7c3
fix: M3 audit — scheduleState persistence, AI→ReviewCard subscriber, ActiveRecall queue, streak bug, domain events
...
Deploy API Server / build-and-deploy (push) Successful in 41s
- M3-02: Add scheduleState to ReviewCard model + persist in updateCard/insertCard
- M3-02: Add ReviewCardSubscriber (OnEvent 'ai.analysis.completed' → generateCards)
- M3-02: Add AdminReviewController (GET /admin-api/reviews)
- M3-01: ActiveRecall now enqueues via AiAnalysisService instead of direct workflow call
- M3-01: FocusItem model adds source field, worker uses status:'open'
- M3-03: Fix streak calculation (break on gap), add StreakUpdatedEvent/DailyGoalAchievedEvent
- M3-03: Add LearningGoal/StreakRecord/LearningStats to Prisma schema
- M3-03: Fix FocusItem recommendation query (status:'pending' → 'open')
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:17:34 +08:00
8e5d722a1e
feat: M3-04/05/06 — Workspace Experience, Notification, Cache Module
...
Deploy API Server / build-and-deploy (push) Successful in 44s
M3-04: RecentItem/Favorite/SearchHistory models, Tag CRUD, global search, workspace dashboard
M3-05: NotificationPreference/PushToken/Template models, preferences, push tokens, admin templates
M3-06: CacheService with wrap() penetration protection, key naming conventions, admin cache management
E2E: 27 new tests for M3-04/05/06 (35/36 passing overall)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:01:34 +08:00
4be418ef4a
fix: TypeScript errors — string→number, activityDate, remove easeFactor from update
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- import-candidate: explicit any[] type for safeCandidates
- growth: date→activityDate (actual DailyLearningActivity field name)
- review: Number(rating) for SM-2 math, remove easeFactor from updateCard call
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:25:54 +08:00
3f2ba8ba93
fix: remove invalid distinct option from Prisma findMany
...
Deploy API Server / build-and-deploy (push) Failing after 19s
Prisma v5.22 findMany does not support distinct — handled in JS instead.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:23:36 +08:00
098b8055f5
feat: M3-03 — Growth & Retention, streak + recommendations
...
Deploy API Server / build-and-deploy (push) Failing after 19s
- GrowthService: streak calculation from DailyLearningActivity
- Recommendations: focus items, due review cards, new knowledge items
- New API: GET /api/activity/streak, GET /api/activity/recommendations
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:16:14 +08:00
cddcf57a93
feat: M3-02 — Review Engine, Anki SM-2 algorithm + schedule state machine
...
Deploy API Server / build-and-deploy (push) Failing after 19s
- Anki SM-2 interval calculation (learn/review/relearn states)
- Proper ease factor adjustment based on rating
- ScheduleState tracking (new/learning/review/relearning)
- ReviewSession submit returns nextReviewAt/scheduleState/intervalDays
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:11:58 +08:00
c840531eea
feat: M3-01 — Learning Engine, AIAnalysisCompleted event + FocusItem generation
...
Deploy API Server / build-and-deploy (push) Failing after 18s
- Publish AIAnalysisCompleted domain event after each AI analysis
- Auto-generate FocusItems from AI-identified weaknesses
- Review Engine subscribes to AIAnalysisCompleted to create ReviewCards
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:04:47 +08:00
3c242a807a
fix: M2-02/06 audit — system KB seed + candidate Content Safety
...
Deploy API Server / build-and-deploy (push) Failing after 19s
- SystemKnowledgeBaseSeed: auto-creates built-in 新手引导知识库
- Content Safety check on candidate accept() and createCandidates()
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:58:50 +08:00
0c07b59765
fix: add @Optional() to ContentSafetyService in RagChatService
...
Deploy API Server / build-and-deploy (push) Successful in 41s
Same issue as KnowledgeBaseService — NestJS can't resolve
ContentSafetyService in RagChatModule without @Optional().
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:46:30 +08:00
7ae94d9178
feat: M2-08 — Knowledge Ops, chunk viewer + RAG debug + candidate inspector
...
Deploy API Server / build-and-deploy (push) Failing after 33s
- Chunk viewer AAPI (by sourceId)
- RAG debug search endpoint
- KnowledgeOps admin page (candidate inspection, chunk management, RAG debug)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:43:23 +08:00