diff --git a/docs/todo_list.md b/docs/todo_list.md index b110a34..4ea2ab0 100644 --- a/docs/todo_list.md +++ b/docs/todo_list.md @@ -2,6 +2,12 @@ > 目标:作为后续开发与测试的对照清单,明确范围、方案、接口、数据与测试策略。 +## 当前范围与约束 +- 认证仅使用 JWT(不做 OAuth/Cookie 方案)。 +- 支付集成暂不做,订单/退款仅按既有数据结构做流程与统计。 +- 存储仅使用本地 FS 模拟,真实 Provider 延后统一接入。 +- 多租户路由强隔离(`/t/:tenantCode/v1` + TenantResolver)暂缓,后续统一优化。 + ## 统一原则 - 所有后端改动遵循 `backend/llm.txt` 规范与 GORM-Gen 访问方式。 - 分层约束:Controller 仅做绑定与调用,业务与 DB 仅在 `services`。 @@ -32,11 +38,47 @@ - 审核通过后,tenant_only 可访问;未通过不可访问。 - 邀请链接过期/重复使用处理。 +### 2) 鉴权与权限收口(必需) +**需求目标** +- 受保护接口强制鉴权,超管接口增加 `super_admin` 角色校验。 +- 补齐 `Super.Login / CheckToken` 逻辑。 + +**技术方案(后端)** +- 中间件:拆分 `AuthOptional` / `AuthRequired`,路由按需使用。 +- 超管接口:校验 JWT roles 含 `super_admin`。 +- 服务:补齐登录、token 续期/失效逻辑。 + +**测试方案** +- 未登录访问受保护接口被拒绝。 +- 非超管访问 `/super/v1/*` 被拒绝。 + +### 3) 上传会话归属测试补齐 +**需求目标** +- 覆盖上传会话归属校验的服务测试(防止越权)。 + +**技术方案(后端)** +- 为 `Common.UploadPart` 增加服务测试,验证 owner mismatch 返回 `ErrForbidden`。 + +**测试方案** +- owner 与非 owner 上传分支。 + --- ## P1(高优先) -### 2) 内容访问策略完善(资源权限与预览差异化) +### 4) ID 类型统一(int64 / model 注入) +**需求目标** +- 所有业务 ID 使用 `int64`,路由参数统一 `:id`。 + +**技术方案(后端)** +- Controller/DTO:`string` → `int64`,补齐字段级中文注释。 +- Service:移除 `cast.ToInt64`,使用 `int64` 与 `model` 注入。 +- Swagger/Route:补齐 `` 约束。 + +**测试方案** +- 关键接口:正常请求 + 参数类型错误时返回明确错误。 + +### 5) 内容访问策略完善(资源权限与预览差异化) **需求目标** - 媒体资源访问遵循:未购仅预览,已购全量,作者/管理员全量。 - 签名 URL 或下载地址生成前进行权限校验。 @@ -53,11 +95,22 @@ **测试方案** - 未登录/未购/已购/作者/管理员的可见资源集合一致性。 +### 6) 审计参数传递规范化 +**需求目标** +- 审计服务禁止自行读取 `ctx`,改为显式传入操作者信息。 + +**技术方案(后端)** +- 调整 `services.Audit` 方法签名与调用方传参。 +- 关键操作补齐操作者字段。 + +**测试方案** +- 审计记录落库含 `operator_id`,并覆盖缺参错误。 + --- ## P2(中优先) -### 3) 运营统计报表(曝光/转化/订单/退款) +### 7) 运营统计报表(曝光/转化/订单/退款) **需求目标** - 提供租户维度与时间范围的核心指标统计与导出。 @@ -67,32 +120,13 @@ - 明细统计:`GET /t/:tenantCode/v1/creator/reports/overview` - 导出:`POST /t/:tenantCode/v1/creator/reports/export` - Service - - 聚合:订单、退款、内容曝光(views/likes)、转化率(访问->支付)。 + - 聚合:订单、退款、内容曝光(views/likes)、转化率(访问->成交)。 - 导出:异步任务 + 结果下载。 **测试方案** - 统计口径一致性;筛选组合;导出任务可用性。 ---- - -## P3(中优先) - -### 4) 审计与风控(敏感操作日志) -**需求目标** -- 所有关键业务操作(退款、审核、提现等)落审计。 - -**技术方案(后端)** -- 新增审计表或复用现有审计结构。 -- Service 层在关键点写审计记录(含操作者、目标对象、前后状态)。 - -**测试方案** -- 审计落库验证;关键流程失败时不写审计或写失败原因。 - ---- - -## P4(低优先) - -### 5) 超管后台治理能力(健康度/异常监控/内容审核) +### 8) 超管后台治理能力(健康度/异常监控/内容审核) **需求目标** - 提供超管对租户的健康指标、异常趋势、内容合规审核。 @@ -107,10 +141,59 @@ **测试方案** - 审核状态流转有效性;异常阈值命中结果。 +### 9) 性能优化(避免 N+1) +**需求目标** +- 列表/统计场景避免逐条查询。 + +**技术方案(后端)** +- 引入批量查询/聚合 SQL,替换逐条查询。 +- 重点:订单列表、租户列表统计。 + +**测试方案** +- 对比查询次数/耗时(可选) + 数据正确性。 + --- +## P3(延后) + +### 10) 多租户强隔离(路由 + TenantResolver) +**需求目标** +- `/t/:tenantCode/v1` 作为唯一入口,服务层强制 tenant_id 过滤。 + +**技术方案(后端/前端)** +- 中间件解析 tenant_code → tenant_id 并注入 ctx locals。 +- 前端 Router/API base 从 URL 解析 tenantCode。 + +**测试方案** +- 跨租户访问被拒绝;错租户路由返回 404。 + +### 11) 真实存储 Provider 接入 +**需求目标** +- 接入 OSS/云存储,统一上传/访问路径策略。 + +**技术方案(后端)** +- 通过配置注入 Provider,保留本地 FS 作为 dev fallback。 + +**测试方案** +- 本地 FS + 真实 Provider 两套配置可用性。 + +### 12) 支付集成 +**需求目标** +- 最终阶段对接真实支付。 + +**技术方案(后端)** +- 接入支付网关并补齐回调/退款逻辑。 + +**测试方案** +- 沙箱支付 + 回调验签。 + +--- + +## 已完成 +- 内容可见性与 tenant_only 访问控制。 +- OTP 登录流程与租户成员校验(未加入拒绝登录)。 + ## 里程碑建议 -- M1:完成 P0(成员体系 + 内容访问规则同步) -- M2:完成 P1(资源权限与预览差异化) -- M3:完成 P2(统计与导出) -- M4:完成 P3 + P4 +- M1:完成 P0 +- M2:完成 P1 +- M3:完成 P2