65 lines
1.9 KiB
Markdown
65 lines
1.9 KiB
Markdown
|
|
# Task P01-002: Auth 模块(微信登录 + JWT)
|
|||
|
|
|
|||
|
|
## 元信息
|
|||
|
|
|
|||
|
|
| 字段 | 值 |
|
|||
|
|
|------|-----|
|
|||
|
|
| 状态 | `todo` |
|
|||
|
|
| 优先级 | P0 |
|
|||
|
|
| 依赖 | P01-001(DB Schema) |
|
|||
|
|
| 分配给 | Coder AI (Trae CN + GLM-4.6) |
|
|||
|
|
|
|||
|
|
## 输入
|
|||
|
|
|
|||
|
|
**要读的文件**:
|
|||
|
|
- `docs/02_系统架构/模块设计.md` — 3.1 Auth 模块 API 接口定义
|
|||
|
|
- `docs/02_系统架构/数据模型.md` — users 表结构(role + invitation_code 字段)
|
|||
|
|
- `projects/app/src/db/schema/*.ts` — P01-001 产出的 Drizzle Schema
|
|||
|
|
|
|||
|
|
**参考的 ADR**:
|
|||
|
|
- ADR-009: 用户相关数据访问权限
|
|||
|
|
|
|||
|
|
**上游依赖产出**:
|
|||
|
|
- P01-001: users 表 Drizzle Schema(user 类型定义)
|
|||
|
|
|
|||
|
|
## 输出
|
|||
|
|
|
|||
|
|
**要生成/修改的文件**:
|
|||
|
|
- `projects/app/src/modules/auth/auth.module.ts`
|
|||
|
|
- `projects/app/src/modules/auth/auth.controller.ts` — POST /auth/login(code2session + JWT 签发)
|
|||
|
|
- `projects/app/src/modules/auth/auth.service.ts` — 微信 code2session → 查/建用户 → 签发 JWT
|
|||
|
|
- `projects/app/src/modules/auth/auth.guard.ts` — AuthGuard(JWT 验证中间件)
|
|||
|
|
- `projects/app/src/modules/auth/dto/login.dto.ts`
|
|||
|
|
|
|||
|
|
**API**:
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| POST | /auth/login | code → JWT(新用户自动注册) |
|
|||
|
|
| GET | /auth/me | 当前用户信息 |
|
|||
|
|
|
|||
|
|
## 验收方法
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 编译检查
|
|||
|
|
npx tsc --noEmit
|
|||
|
|
|
|||
|
|
# 手动测试(需要微信小程序 code)
|
|||
|
|
curl -X POST http://localhost:3000/auth/login -d '{"code":"test_code"}'
|
|||
|
|
# 预期: 返回 { access_token, user }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 约束
|
|||
|
|
|
|||
|
|
- 不碰: `projects/app/tests/`、其他 modules/ 目录
|
|||
|
|
- 技术栈: NestJS + JWT + axios(调用微信接口)
|
|||
|
|
- 遵循: `.ai/prompts/coding/code-style.md`
|
|||
|
|
|
|||
|
|
## 完成报告
|
|||
|
|
|
|||
|
|
> Coder 完成后填写。Commit message 以 `[READY_FOR_TEST]` 结尾。
|
|||
|
|
|
|||
|
|
- [ ] 输出文件已生成
|
|||
|
|
- [ ] 验收命令通过
|
|||
|
|
- [ ] Commit: `{hash}`
|
|||
|
|
- [ ] Commit message: `feat(P01-002): Auth 模块(微信登录+JWT) [READY_FOR_TEST]`
|