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
98bc9961ba
feat: M2-07 — RAG Chat module with sessions, messages, citations
...
Deploy API Server / build-and-deploy (push) Failing after 33s
- ChatSession/ChatMessage/ChatCitation Prisma models
- CAPI: create/list sessions, send message, get history, delete
- Admin AAPI: view user sessions and messages
- Content safety integration on user input
- Placeholder RAG pipeline (real pipeline in M3)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:39:14 +08:00
06351c7381
feat: M2-06 — Artifact model + KnowledgeItem.learnable + Admin AAPI
...
Deploy API Server / build-and-deploy (push) Successful in 39s
- Artifact base model for future FlashcardSet/Quiz/StudyGuide
- KnowledgeItem.learnable boolean (default true) for M3 LearningSession
- Admin AAPI: GET candidates (by status/kbId), GET items (by kbId)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:34:24 +08:00
9520d1f549
feat: M2-04 — Ingestion & Indexing, ImportStepLog + Admin monitor AAPI
...
Deploy API Server / build-and-deploy (push) Successful in 42s
- ImportStepLog model for tracking each import pipeline step
- Admin AAPI: import list, detail with step logs, retry failed
- Admin page: ImportMonitor with drawer detail view
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 13:12:16 +08:00
3602fb6cdb
fix: add missing opposite relation fields for Prisma validation
...
Deploy API Server / build-and-deploy (push) Failing after 33s
- KnowledgeBase.folders ← KnowledgeFolder.knowledgeBase
- KnowledgeSource.references ← SourceReference.source
- KnowledgeChunk.references ← SourceReference.chunk
Fixes P1012 Prisma schema validation errors in CI build.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 11:40:36 +08:00
b3bce7ff78
feat: M2-03 — Material & Source, SourceReference citation tracking
...
Deploy API Server / build-and-deploy (push) Failing after 11s
- SourceReference model for artifact→chunk→source citation chain
- Admin source list + reference tracing endpoints
- Existing KnowledgeSource already covers Material status/version
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 11:31:46 +08:00
052cd5cba8
feat: M2-02 — Workspace + KnowledgeBase + Folder management
...
Deploy API Server / build-and-deploy (push) Failing after 11s
- Workspace + KnowledgeFolder Prisma models
- Folder CRUD: create/list/update/delete (soft-delete with children)
- Content Safety integration for KB title on create/update
- E2E: KB create, folder CRUD, admin KB list
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 11:23:58 +08:00
292e7e5638
feat: M2-01 — User & Account deepening, membership + deletion + devices
...
Deploy API Server / build-and-deploy (push) Failing after 33s
- UserDevice + AccountDeletionRequest Prisma models
- CAPI: membership query, deletion request/cancel, device list/remove
- AAPI: membership assign, deletion approve/reject, device view
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 11:18:56 +08:00
a08fd4970a
feat: M1-04 — Content Safety deepening, reports CAPI, violation records
...
Deploy API Server / build-and-deploy (push) Successful in 39s
- Add ViolationRecord table (Prisma + migration)
- CAPI POST /api/reports for user report submission
- AAPI reports list + handle, violations list + penalty apply
- Admin page: reports management + violation records tabs
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 10:53:19 +08:00
a5a592988a
fix: idempotent migration SQL + cleanup failed M1 tables in CI
...
Deploy API Server / build-and-deploy (push) Failing after 33s
- Use CREATE TABLE IF NOT EXISTS + INSERT IGNORE for M1 tables
- Add ModelRoute/ProviderConfig/FallbackEvent to CI cleanup step
- Fixes P3018 migration error from partially-applied first run
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 10:44:06 +08:00
5fd737967f
feat: M1-01~03 — AI Gateway deepening, Vector module, Task Queue deepening
...
Deploy API Server / build-and-deploy (push) Failing after 23s
M1-01 AI Gateway:
- DB-driven ModelRoute/ProviderConfig/FallbackEvent tables
- ModelRouter rewrite with loadFromDb() hot-reload
- Fallback event recording + AIUsageRecorded event publishing
- Admin AAPI: routes CRUD, provider enable/disable, fallback events log
M1-02 Vector & Retrieval:
- VectorService with Qdrant client (upsert/delete/search/rerank)
- Admin AAPI: collection status, vector count, reindex trigger
M1-03 Task Queue:
- 16 task types with default retry/timeout configs
- Task stats dashboard, worker status panel, batch retry endpoint
M0 audit fixes:
- ApiMetric retention policy (30-day cleanup)
- Content Safety integration in Files module
- Queue registration centralized (domain-events)
- SECRET_MASTER_KEY production validation
E2E tests:
- M0: 28 smoke tests covering all 14 M0 issues
- M1: 16 tests covering M1-01/02/03
- Mock infrastructure: prisma, ioredis, jose, bullmq, qdrant
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 10:18:07 +08:00
d32411760f
feat: M0-12 Secret & Vendor Asset — AES-256-GCM encrypted key storage + Admin AAPI
Deploy API Server / build-and-deploy (push) Successful in 38s
2026-05-23 20:36:39 +08:00
628bb31c98
fix: clean migrations — single working file for UserMembership+QuotaUsage+CostDailySummary
Deploy API Server / build-and-deploy (push) Successful in 39s
2026-05-23 20:30:02 +08:00
fd1897d385
feat: M0-11 — QuotaService + Redis deduction + Admin AAPI + CostDailySummary + UserMembership
Deploy API Server / build-and-deploy (push) Failing after 21s
2026-05-23 20:13:49 +08:00
99d03bb26c
feat: M0-10 — TaskLog table + task events + retry audit
Deploy API Server / build-and-deploy (push) Failing after 32s
2026-05-23 19:29:08 +08:00
2bd416c807
feat: M0-07 Observability — MetricsInterceptor + admin metrics AAPI
Deploy API Server / build-and-deploy (push) Successful in 36s
2026-05-22 23:19:31 +08:00
9e8f3dccd7
feat: M0-06 Content Safety — sensitive word check + admin AAPI
Deploy API Server / build-and-deploy (push) Has been cancelled
2026-05-22 23:12:39 +08:00
b5a983dc6b
feat: M0-04 Audit — async BullMQ writes + riskLevel + reason + SecurityEvent
Deploy API Server / build-and-deploy (push) Successful in 39s
2026-05-22 23:03:32 +08:00
a1ac07bf88
feat: M0-03 feature flag whitelist + more config integration
Deploy API Server / build-and-deploy (push) Successful in 37s
2026-05-22 23:00:47 +08:00
8d5ff27a3c
fix: MySQL compatible migration — replace double quotes with backticks
Deploy API Server / build-and-deploy (push) Successful in 38s
2026-05-22 22:50:33 +08:00
8d52214dd5
feat: M0-03 Config & Feature Flag — DB-backed config + Redis cache + Admin AAPI
Deploy API Server / build-and-deploy (push) Has been cancelled
2026-05-22 22:36:32 +08:00
997b3c0cdb
feat: admin cost management — CRUD + monthly summary + expiry
Deploy API Server / build-and-deploy (push) Successful in 39s
2026-05-22 15:40:24 +08:00
f2d3f3f13f
feat: add AdminMessage persistence + conversation title auto-set + messages API
Deploy API Server / build-and-deploy (push) Failing after 21s
2026-05-22 11:03:24 +08:00
f20bdc0d7a
feat: add conversation management — sessionId + X-Hermes-Session-Id + CRUD
Deploy API Server / build-and-deploy (push) Successful in 37s
2026-05-22 10:43:18 +08:00
b8a1fb0921
feat: add admin backend modules — dashboard, audit-log, admin-users
...
Deploy API Server / build-and-deploy (push) Successful in 10s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 17:22:48 +08:00
5a7c21dd60
feat: implement complete admin authentication system
...
Deploy API Server / build-and-deploy (push) Successful in 9s
- Add AdminRole enum (SUPER_ADMIN/ADMIN/OPERATIONS/DEVELOPER/READONLY) with hierarchy
- Add PasswordService (bcryptjs, 12 rounds), AdminTokenService (type=admin JWT)
- Add AdminAuthService: login/lockout/refresh/logout with audit logging
- Add AdminAuthController: /admin-api/auth/{login,refresh,logout,me}
- Add AdminAuthGuard: validates type=admin, user status, session, lockout
- Add AdminRolesGuard + @AdminRoles() decorator for RBAC
- Add AdminAuditService for audit log persistence
- Add AdminLoginRateLimit (10 req/15min per IP)
- Add prisma/seed.ts for SUPER_ADMIN initialization via env vars
- Update JwtAuthGuard to skip /admin-api/* and /internal/* paths
- Update main.ts to exclude admin-api/internal from global 'api' prefix
- Update jwt.config.ts with admin JWT secrets and expiry config
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 15:05:31 +08:00
e5c6113b25
feat: add admin_users, admin_sessions, admin_audit_logs tables
...
Deploy API Server / build-and-deploy (push) Successful in 13s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 14:39:38 +08:00
WangDL
1e7e4268ab
feat: 知识库新表 migration SQL
Deploy API Server / build-and-deploy (push) Successful in 57s
2026-05-19 22:14:55 +08:00
WangDL
df56a76079
feat: 知识库新模型 — KnowledgeSource/KnowledgeChunk/ImportCandidate/BackupJob/MembershipPlan
Deploy API Server / build-and-deploy (push) Successful in 1m16s
2026-05-19 22:09:44 +08:00
33f1cc1859
feat: P2 infrastructure — Docker Compose, shutdown hooks, Prisma migration
...
Deploy API Server / build-and-deploy (push) Failing after 1m1s
- B20: docker-compose.yml with MySQL 8.0, Redis 7, API, BullMQ Worker, Nginx
- B20: Dockerfile.worker + worker.module.ts + worker.main.ts for standalone worker
- B20: nginx/nginx.conf reverse proxy with gzip, /api/* routes, health check
- B21: app.enableShutdownHooks() in main.ts for graceful SIGTERM handling
- B22: migration adding objectKey/bucket to UploadedFile, AiUsageLog, WaitlistEntry
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 10:50:59 +08:00
6d7cbffc3b
feat: COS 对象存储接入 — CosStorageProvider + FilesModule
...
Deploy API Server / build-and-deploy (push) Failing after 3m0s
- 安装 cos-nodejs-sdk-v5,封装 CosStorageProvider(upload/download/delete/healthCheck)
- 重写 StorageService,新增 createUploadUrl/verifyUpload/getDownloadUrl/deleteObject
- 创建 FilesModule:POST /files/upload-url, POST /files/complete, GET /files/:id, DELETE /files/:id
- UploadedFile 新增 objectKey/bucket 字段
- 对象键格式 {userId}/{YYYYMM}/{sanitizedName}.{ext}
- 接入文件类型校验(ALLOWED_FILE_TYPES)+ 上传限流(10次/小时/用户)
- 配置文件 cos.longde.cloud → zhixi-1259685406 / ap-guangzhou
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 22:30:14 +08:00
007b56dad5
feat: AI三层架构 + 全局JwtAuthGuard + 12个Repository迁Prisma
...
Deploy API Server / build-and-deploy (push) Successful in 1m0s
- AI: 新三层架构 Provider→Gateway→Workflow(15文件,DeepSeek+MiniMax)
- Auth: 全局JwtAuthGuard + @Public()装饰器白名单路由
- DB: 12个Repository从Map/Array迁到Prisma
- Schema: 新增AiUsageLog、WaitlistEntry模型
- API: /api-docs-json加Basic Auth保护
- 清理: 删除infrastructure/ai、docs/旧文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 00:39:46 +08:00
fa69749884
refactor(auth): restructure auth system, align with iOS login flow spec
...
- Split AuthService into AppleAuthService, TokenService, AuthService
- Add dev-login endpoint (dev-only, disabled in production)
- AppleLoginDto: authorizationCode optional, add userIdentifier/email/fullName/nonce
- Login/refresh responses now include user object
- logout: single-token revoke + JwtAuthGuard protection
- users.repository: switch from in-memory Map to Prisma persistence
- JWT payload includes role, guards attach full user info to request
- Dual JWT secret support (JWT_ACCESS_SECRET / JWT_REFRESH_SECRET)
- Replace jwks-rsa+jsonwebtoken with jose library
- Prisma User model: add role field
- Independent DTO files with @Transform for empty string safety
- Add 5 iOS login flow documentation files
2026-05-13 17:31:50 +08:00
7e308b01cc
fix: Prisma binaryTargets linux-musl-openssl-3.0.x + Dockerfile 精简
Deploy API Server / build-and-deploy (push) Failing after 1m31s
2026-05-09 19:37:15 +08:00
35de65e99b
feat: 重构 api-server 为模块化单体架构,接入 MySQL + Redis
...
- 按 BACKEND-PLAN.md 将项目重构为 4 层架构:
config/ -> common/ -> infrastructure/ -> modules/
- 15 个业务模块,遵循 Controller → Service → Repository 分层
- infrastructure: PrismaService / RedisService / QueueService / AiService / StorageService
- common: guards / interceptors / filters / pipes / decorators / dto / types / utils
- Prisma schema 含 27 张表,MySQL 8.0 服务器 db push 成功
- Redis 7 接入: 限流/任务状态/分布式锁/队列预留
- ai-analysis 模块: 每日 50 次限流 + 重复提交锁 + 异步任务状态追踪
- document-import 模块: 异步导入流程 + 进度追踪
- notifications 模块: BullMQ notification 队列预留
- /health 端点实时返回 database + redis 连接状态
- Swagger 注册 15 个 tag,67 个路由全部映射
2026-05-09 18:25:04 +08:00