后端 FastAPI 六层结构(api/services/repositories/models/schemas/core), 统一响应信封、全局异常、日志脱敏;6 张表经 Alembic 迁移建库,SQL 留存 db/migration;登录鉴权含图形验证码(Redis GETDEL 防重放)、JWT、登录限流、 登出黑名单(TTL=令牌剩余有效期)、登录日志。 前端 Vue3 + TS + Element Plus 骨架,含登录页、路由守卫、请求封装与 Vite 代理。 工程配置:uv 锁定 Python 3.12、ruff 检查与格式化、editorconfig、gitattributes。 测试 184 项(单元 155 / 集成 29)全绿,浏览器端到端 8 项通过。 Co-Authored-By: Claude Code <noreply@anthropic.com>
10 lines
442 B
Python
10 lines
442 B
Python
"""请求/响应模型层(Pydantic)。
|
||
|
||
分层约束:
|
||
- 禁止把 ORM 对象直接作为 `response_model` 返回,必须在本层完成转换
|
||
- 入参校验(含长度、格式、取值范围)在此层声明,业务校验放 `services/`
|
||
|
||
本项目特有要求:密码字段必须按**字节数**校验而非字符数 ——
|
||
bcrypt 5.0 起对超过 72 字节的密码直接抛 ValueError,而中文一个字符占 3 字节。
|
||
"""
|