非功能性需求
1. 性能要求
| 指标 | 要求 |
|---|---|
| API 响应时间 | < 200ms(95% 请求) |
| 并发用户数 | 1000+(Octane 模式可进一步提升) |
| 数据库查询优化 | 预加载防止 N+1 查询 |
| 缓存策略 | 热点数据使用 Redis 缓存 |
| 队列异步处理 | 耗时操作(统计、AI 工具等)走队列 |
2. 安全要求
| 安全项 | 实现方式 |
|---|---|
| 密码加密 | 使用 Bcrypt 加密(rounds = 12) |
| API 认证 | 使用 Sanctum Token 认证 |
| 权限验证 | 敏感接口使用权限验证(permission/role 中间件) |
| SQL 注入防护 | 使用 Eloquent ORM / 查询构建器 |
| XSS 防护 | API Resource 输出转义 |
| CSRF 防护 | Web 接口启用,/admin/* 和 /api/* 豁免 |
| 请求频率限制 | 登录、验证码等接口设置 throttle |
| 操作审计 | 后台写操作自动记录审计日志 |
| CSP 内容安全策略 | 配置内容安全策略响应头 |
| Telescope 保护 | 生产环境默认禁用 |
3. 可扩展性
- 模块化设计:功能独立封装
- 微服务友好:API 化设计,易于拆分
- 支持水平扩展:无状态设计(Token 认证)
- 队列系统:异步任务处理
- AI Tool 可插拔:新工具只需实现 Tool 契约即可接入
4. 可维护性
| 规范项 | 要求 |
|---|---|
| 代码规范 | 遵循 PSR-12 标准,Laravel Pint 自动格式化 |
| 类型安全 | PHP 8.4 严格类型(declare(strict_types=1)),所有方法参数和返回值类型声明 |
| 注释完整 | 关键逻辑使用 PHPDoc,复杂处加内联注释 |
| 测试覆盖 | 单元测试 + 功能测试,PHPUnit 12 属性语法,覆盖率 >= 70% |
| 枚举统一 | 使用 PHP 8 Enum + HasLabel trait |
5. 可靠性
- 错误处理:统一的异常处理机制
- 日志记录:完整的日志记录(Monolog 多通道)
- 数据备份:支持数据库备份
- 故障恢复:队列失败重试、调度任务自动记录失败状态
文档来源:PRD 第 9 章