- W26: NestJS API + Next.js Web + Prisma + SQLite scaffold - W26: Lead 模型 + Crawler + 询价发布助手 (线索池 + 一键发布) - W29.x: MCP 集成 (Integration 模型 + connectMcp + publish_rfq 5 工具端到端跑通) - W30: 3 字段补充 (notes / quotationType / quotationDemand) - W31 P1: 自动填 enterpriseId / userId (Prisma companyUserId 字段 + get_app_identity tool + lead.service.ts publishArgs) - W31: detail 详情页 + admin UI 集成管理 (OpenAppListView + AuditLogListView) 关联: ~/Documents/02-平台开发/产品开发/F002-W31-交接文档.md GIT-AUDIT-REPORT-2026-06-24.md
2.0 KiB
2.0 KiB
apps/api — NestJS 10 后端
生成: 2026-06-05 分支: main
OVERVIEW
NestJS 10 后端,Prisma ORM + SQLite,提供 RESTful API。端口 4000。JWT 认证。
STRUCTURE
api/
├── src/
│ ├── admin/ # 管理后台(租户/用户/配置/计划)
│ ├── auth/ # JWT + Passport 认证
│ ├── audit-log/ # 审计日志
│ ├── comparison/ # 比价模块
│ ├── crawler/ # 采集器调度 + execSync 调用脚本
│ ├── image/ # 三阶段生图(图库→Bing→AI)
│ ├── inquiry/ # 询价
│ ├── lead/ # 线索(核心,评分/状态流转/跟进)
│ ├── product/ # 商品
│ ├── reports/ # 报表
│ ├── rules/ # 规则中心
│ ├── users/ # 用户管理
│ ├── prisma/ # Prisma 服务封装
│ ├── common/ # 公共装饰器/过滤器
│ ├── app.module.ts # 根模块(导入所有子模块)
│ └── main.ts # 启动入口
└── prisma/
└── schema.prisma # 数据模型(~15 个模型)
WHERE TO LOOK
| 任务 | 位置 | Notes |
|---|---|---|
| 新增 API 端点 | src/xxx/xxx.controller.ts |
ValidationPipe 全局自动转换 |
| 修改数据库模型 | prisma/schema.prisma |
改后必须 npm run db:init |
| 采集器调度 | src/crawler/ |
execSync 调用 scripts/tender-fetcher/ |
| 图片生成 | src/image/image.service.ts |
三阶段流水线 |
CONVENTIONS
- Prisma 变更三步:generate → migrate → seed(
db:init一站式) - 采集器脚本路径:
scripts/tender-fetcher/ - 无测试框架
- 端口 4000,CORS 白名单 localhost:3000/3001 + direv.cloud
- 静态文件
/uploads→public/uploads
ANTI-PATTERNS
- 不要在代码中硬编码脚本路径以外的文件路径
- 采集器 state 文件不要手动删除(中电建用
systemId_招采公告作 key)