Files
lingxi/apps/api/package.json
T
Stev_Wang 633765f10f
ci / 质量门禁 (push) Successful in 6m4s
feat(media): A6 任务中心 API、SSE 进度与队列骨架
背景:A6-BE-01..05 与 A6-INF-01,打通「提交 → 队列 → SSE 进度 → 完成/失败 → 取消 / 仅重试失败项」闭环,为 B3 / M1 的真实任务提供统一协议。
改动:
- API media 模块:POST/GET /media-tasks、详情、SSE(Last-Event-ID 续推 + 15s 心跳 + 800ms 落库轮询)、取消(只影响未开始项)、仅重试失败项;Idempotency-Key 24h(异步提交 202;同 key 同 body 返回同一任务且不重复审计,不同 body 40902);范围外统一 404;
- 队列骨架:BullMQ 5 九队列(5 组独立启停)、Outbox dispatcher(Redis 锁 + FOR UPDATE SKIP LOCKED + jobId 幂等 + 指数退避/死信)、worker 按 QUEUE 启停、demo 演练处理器(事务 + 行锁 + 取消/重试/幂等)、优雅退出与心跳;
- 监控:GET /api/v1/health/queues、GET /api/v1/metrics(Prometheus 0.0.4)、infra/monitoring 告警规则与接入说明;
- 通用:AuditInterceptor 支持幂等重放 skipAudit(默认行为不变)、AppModule 接线、.env.example 的 QUEUE 语义、bullmq 5.81.5 / worker @prisma/client / worker 覆盖率依赖。
影响面:OpenAPI 新增 6 个端点(openapi:diff 无破坏性变更);API 进程新增 outbox dispatcher 与 metrics/health 路由;worker 新增 BullMQ 消费;未改旧审计导出链路与既有接口。
回滚:回滚提交并停止 worker 新队列消费;task/outbox 新表数据不影响旧功能,可按需保留。
验证:api 单测 257、集成 92(连跑 2 次)、worker 27、shared 197;typecheck / lint / format:check / build / openapi:diff 全绿;本地真实 worker 启用 9 队列心跳,/health/queues、/metrics 实测,/media-tasks 未登录 401。
2026-11-04 21:52:35 +08:00

46 lines
1.2 KiB
JSON

{
"name": "@lingxi/api",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "tsx watch src/main.ts",
"build": "tsc -p tsconfig.build.json",
"start": "node dist/main.js",
"typecheck": "tsc -p tsconfig.json --noEmit",
"test": "vitest run --coverage",
"test:int": "vitest run --config vitest.int.config.ts"
},
"dependencies": {
"@fastify/cors": "11.3.1",
"@fastify/helmet": "13.2.0",
"@fastify/static": "10.1.8",
"@lingxi/shared": "workspace:*",
"@nestjs/common": "11.2.8",
"@nestjs/core": "11.2.8",
"@nestjs/jwt": "12.0.3",
"@nestjs/platform-fastify": "11.2.8",
"@nestjs/swagger": "11.4.7",
"@prisma/client": "6.19.3",
"argon2": "0.45.1",
"bullmq": "5.81.5",
"dotenv": "18.0.9",
"fastify": "5.12.7",
"ioredis": "5.11.1",
"nestjs-pino": "5.3.1",
"pino": "10.4.0",
"pino-http": "11.0.0",
"reflect-metadata": "0.2.2",
"rxjs": "7.8.2",
"zod": "3.25.76"
},
"devDependencies": {
"@nestjs/testing": "11.2.8",
"@types/node": "24.19.2",
"@vitest/coverage-v8": "3.2.7",
"pino-pretty": "13.2.0",
"tsx": "4.23.15",
"typescript": "5.9.3",
"vitest": "3.2.7"
}
}