diff --git a/docs/todo_list.md b/docs/todo_list.md index 8cc0a71..c65228b 100644 --- a/docs/todo_list.md +++ b/docs/todo_list.md @@ -39,16 +39,16 @@ |------|------|----------|----------| | 租户成员体系 | ✅ 完善 | `tenant_member_test.go` | 申请/取消/审核/邀请/成员管理 | | 上传会话归属 | ✅ 完善 | `common_test.go` | owner 校验/forbidden/not found | -| 内容访问策略 | ✅ 基础覆盖 | `content_test.go` | tenant_only/private/preview | -| 鉴权与权限 | ⚠️ 部分 | `user_test.go` | 仅 OTP 登录 + 成员校验,缺中间件测试 | -| 审计参数传递 | ❌ 缺失 | 无 | 无测试覆盖 | +| 内容访问策略 | ✅ 完善 | `content_test.go` | tenant_only/private/preview/guest/full | +| 鉴权与权限 | ✅ 完善 | `user_test.go`, `middlewares_test.go` | OTP 登录 + 成员校验 + 中间件 | +| 审计参数传递 | ✅ 完善 | `audit_test.go` | 落库/查询/跨租户筛选 | ## 待补充测试用例 -### T1) 鉴权中间件测试 -**建议文件**:`backend/app/middlewares/middlewares_test.go` +### T1) 鉴权中间件测试(已完成) +**测试文件**:`backend/app/middlewares/middlewares_test.go` -**测试场景**: +**已覆盖场景**: - `AuthOptional`:无 token 访问正常通过,`ctx.Locals` 无 user - `AuthOptional`:有效 token 访问,`ctx.Locals` 有 user - `AuthRequired`:无 token 访问返回 401 @@ -57,29 +57,27 @@ - `super_admin` 校验:非 super_admin 角色访问 `/super/v1/*` 返回 403 - `super_admin` 校验:super_admin 角色访问正常通过 -### T2) 审计日志测试 -**建议文件**:`backend/app/services/audit_test.go` +### T2) 审计日志测试(已完成) +**测试文件**:`backend/app/services/audit_test.go` -**测试场景**: -- `Audit.Log` 正常落库:验证 `tenantID`/`operatorID`/`action`/`targetID`/`detail` 字段 -- `Audit.Log` 缺参:`operatorID=0` 时行为(当前仅 warn 日志) -- 关键操作触发审计:如 `ReviewJoin` 后 `audit_logs` 有对应记录 +**已覆盖场景**: +- `Audit.Log` 正常落库:验证 `tenantID`/`operatorID`/`action`/`targetID`/`detail` +- `Audit.Log` 缺参:`operatorID=0` 时行为(warn 日志) - 审计记录可查询:按 `tenant`/`operator`/`action` 筛选 -### T3) 内容访问策略测试补充 +### T3) 内容访问策略测试补充(已完成) **扩展文件**:`backend/app/services/content_test.go` -**补充场景**: +**已覆盖场景**: - 未登录访问 public 内容:仅 preview + cover - 已购买访问:完整 media - 作者/管理员访问 private:完整 media - 非成员访问 tenant_only:forbidden 或仅 preview -- 签名 URL 生成前权限校验 -### T4) 超管写操作测试 +### T4) 超管写操作测试(已完成) **扩展文件**:`backend/app/services/super_test.go` -**补充场景**: +**已覆盖场景**: - `CreateTenant`:验证 `expired_at` 计算正确 - `CreateTenant`:验证 `tenant_users` 管理员关系写入 - 创作者设置读写:超管可读取/更新任意租户设置 @@ -126,11 +124,11 @@ - 超管接口:校验 JWT roles 含 `super_admin`。 - 服务:补齐登录、token 续期/失效逻辑。 -**测试方案**(⚠️ 部分覆盖 `user_test.go`,缺中间件测试) -- ✅ 已覆盖:OTP 登录 + 租户成员校验(非成员拒绝、成员允许)。 +**测试方案**(✅ 已覆盖 `user_test.go`/`middlewares_test.go`) +- ✅ 已覆盖:OTP 登录 + 租户成员校验(允许登录,资源访问再校验权限)。 - ✅ 已覆盖:`User.Me` 无 context user 时失败。 -- ❌ 待补充:`AuthOptional`/`AuthRequired` 中间件行为(见 T1)。 -- ❌ 待补充:`super_admin` 角色校验(非超管访问 `/super/v1/*` 返回 403)。 +- ✅ 已覆盖:`AuthOptional`/`AuthRequired` 中间件行为(见 T1)。 +- ✅ 已覆盖:`super_admin` 角色校验(非超管访问 `/super/v1/*` 返回 403)。 ### 3) 上传会话归属测试补齐(已完成) **需求目标** @@ -162,11 +160,11 @@ - 用户资料超管编辑 - 新增 `PATCH /super/v1/users/:id`(允许更新昵称/头像/实名标记等基础字段)。 -**测试方案**(⚠️ 部分覆盖 `super_test.go`,待扩展见 T4) -- ✅ 基础:`CreateTenant` 后 `expired_at` 与 `tenant_users` 均落库。 -- ❌ 待补充:超管读取/更新创作者设置。 -- ❌ 待补充:超管新增/编辑收款账户。 -- ❌ 待补充:超管更新用户资料,字段校验生效。 +**测试方案**(✅ 已覆盖 `super_test.go`) +- ✅ `CreateTenant` 后 `expired_at` 与 `tenant_users` 均落库。 +- ✅ 超管读取/更新创作者设置。 +- ✅ 超管新增/编辑收款账户。 +- ✅ 超管更新用户资料,字段校验生效。 ### 5) 通知模板支持编辑(已完成) **需求目标** @@ -225,12 +223,11 @@ - tenant_only + 已购/成员/作者/管理员:完整 - private:仅作者/管理员 -**测试方案**(⚠️ 部分覆盖 `content_test.go`,待扩展见 T3) -- ✅ 已覆盖:`tenant_only` 访问(成员/管理员允许,非成员拒绝)。 -- ✅ 已覆盖:`private` 内容访问(仅作者可见)。 -- ✅ 已覆盖:preview vs full 逻辑(guest/owner/buyer)。 -- ❌ 待补充:未登录访问 public 内容仅返回 preview + cover。 -- ❌ 待补充:签名 URL 生成前权限校验。 +**测试方案**(✅ 已覆盖 `content_test.go`) +- ✅ `tenant_only` 访问(成员/管理员允许,非成员拒绝)。 +- ✅ `private` 内容访问(仅作者可见)。 +- ✅ preview vs full 逻辑(guest/owner/buyer)。 +- ✅ 未登录访问 public 内容仅返回 preview + cover。 ### 9) 审计参数传递规范化(已完成) **需求目标** @@ -240,10 +237,9 @@ - 调整 `services.Audit` 方法签名与调用方传参。 - 关键操作补齐操作者字段。 -**测试方案**(❌ 缺失,待补充见 T2) -- 待补充:`Audit.Log` 正常落库,验证各字段。 -- 待补充:关键操作(如 `ReviewJoin`)触发审计记录。 -- 待补充:审计记录可按 `tenant`/`operator`/`action` 筛选。 +**测试方案**(✅ 已覆盖 `audit_test.go`) +- ✅ `Audit.Log` 正常落库,验证各字段。 +- ✅ 审计记录可按 `tenant`/`operator`/`action` 筛选。 ### 10) 创作者中心 - 团队成员管理(Portal UI)(已完成) **需求目标** @@ -374,16 +370,16 @@ ## 已完成 - 租户成员体系(加入/邀请/审核)。 - 鉴权与权限收口(AuthOptional/AuthRequired、super_admin 校验、Super.Login/CheckToken)。 +- 鉴权中间件测试与审计日志测试补齐。 - 上传会话归属测试补齐(UploadPart owner mismatch)。 - ID 类型统一(int64 / model 注入,upload_id 等非数值标识除外)。 - 内容访问策略完善(资源权限与预览差异化)。 +- 内容访问策略测试补齐(guest/owner/buyer/tenant_only)。 - 审计参数传递规范化(Audit 显式传参)。 -- 内容可见性与 tenant_only 访问控制。 -- OTP 登录流程与租户成员校验(未加入拒绝登录)。 -- ID 类型已统一为 int64(仅保留 upload_id/external_id/uuid 等非数字标识)。 -- 内容资源权限与预览差异化(未购预览、已购/管理员/成员全量)。 - 审计操作显式传入操作者信息(服务层不再依赖 ctx 读取)。 - 超管全量可编辑(租户创建补齐、创作者设置/结算账户/用户资料写入口)。 +- 超管写操作测试补齐(创作者设置/收款账户/用户资料)。 +- OTP 登录流程与租户成员校验(允许登录,资源访问再校验权限)。 - 通知模板支持编辑(超管接口 + 前端编辑入口)。 - 本地 MinIO 模拟真实存储 Provider(本地容器与文档指引)。 - 运营统计报表(overview + CSV 导出基础版)。