10 KiB
10 KiB
TODOlist(需求梳理 + 技术方案)
目标:作为后续开发与测试的对照清单,明确范围、方案、接口、数据与测试策略。
当前范围与约束
- 认证仅使用 JWT(不做 OAuth/Cookie 方案)。
- 支付集成暂不做,订单/退款仅按既有数据结构做流程与统计。
- 存储需要接入本地 MinIO 进行真实 Provider 模拟,保留本地 FS 作为兜底。
- 多租户路由强隔离(
/t/:tenantCode/v1+ TenantResolver)已启用,后续仅做细节优化。
统一原则
- 所有后端改动遵循
backend/llm.txt规范与 GORM-Gen 访问方式。 - 分层约束:Controller 仅做绑定与调用,业务与 DB 仅在
services。 - 每个需求至少配套:接口说明 + 数据变更(如有)+ 关键业务校验 + 单元测试。
P0(必须先做)
1) 租户成员体系(加入/邀请/审核)(已完成)
需求目标
- 完成租户成员生命周期:申请加入、审核通过/拒绝、邀请加入。
- tenant_only 内容在“成员审核通过”后可访问;未审核需前置引导。
技术方案(后端)
- API
- 申请加入:
POST /t/:tenantCode/v1/tenants/:id<int>/join - 取消申请:
DELETE /t/:tenantCode/v1/tenants/:id<int>/join - 接受邀请:
POST /t/:tenantCode/v1/tenants/:id<int>/invites/accept - 管理员审核:
POST /t/:tenantCode/v1/creator/members/:id<int>/review - 邀请成员:
POST /t/:tenantCode/v1/creator/members/invite
- 申请加入:
- DB
- 使用现有
tenant_join_requests/tenant_invites表(如已存在则复用;缺失则通过迁移新增)。
- 使用现有
- Service
- 校验:用户是否已是成员/是否已申请;审核流转合法性;邀请有效期。
- 申请成功后写
tenant_join_requests;审核通过写tenant_users。 - 对
tenant_only内容访问:需要tenant_users.status=verified或已购买。
测试方案
- 申请加入:重复申请拦截。
- 审核通过后,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 上传分支。
4) 超管全量可编辑(补齐写操作缺口)(已完成)
需求目标
- 超管可对系统内现有对象执行“修改/新增/删除/审核”等操作,不受租户边界限制。
- 补齐已存在能力但缺少
/super/v1写入口的模块。
技术方案(后端)
- 租户创建完善
POST /super/v1/tenants:补齐expired_at(基于duration)与tenant_users管理员成员关系写入。
- 创作者设置超管入口
- 新增
GET /super/v1/creators/:tenantID<int>/settings - 新增
PUT /super/v1/creators/:tenantID<int>/settings - 复用
services.Creator.GetSettings/UpdateSettings,由超管直传 tenantID + operatorID。
- 新增
- 收款账户超管管理
- 新增
POST /super/v1/creators/:tenantID<int>/payout-accounts - 新增
PATCH /super/v1/payout-accounts/:id<int>(编辑/禁用/备注) - 复用现有收款账户结构体与校验逻辑。
- 新增
- 用户资料超管编辑
- 新增
PATCH /super/v1/users/:id<int>(允许更新昵称/头像/实名标记等基础字段)。
- 新增
测试方案
- CreateTenant 后
expired_at与tenant_users均落库。 - 超管可读取/更新创作者设置,权限校验通过。
- 超管可新增/编辑收款账户。
- 超管可更新用户资料,字段校验生效。
5) 通知模板支持编辑(已完成)
需求目标
- 支持模板更新、启用/停用,避免误建模板不可修正。
技术方案(后端/前端)
- API
- 新增
PATCH /super/v1/notifications/templates/:id<int> - (可选)新增
DELETE /super/v1/notifications/templates/:id<int>
- 新增
- 前端:
Notifications.vue增加“编辑模板”弹窗与启用开关。
测试方案
- 编辑模板后列表与详情一致。
- 禁用模板后不允许用于群发(或提示不可用)。
6) 本地 MinIO 模拟真实存储 Provider(已完成)
需求目标
- 本地环境可用 MinIO 模拟真实 S3 Provider,验证上传/访问链路。
技术方案(后端/本地环境)
- Docker:拉起 MinIO(含 access/secret、bucket 初始化)。
Storage配置支持 S3/MinIO 模式(endpoint + path style)。- 更新
docs/storage_provider.md与新增 smoke test 文档。
测试方案
- 上传 -> MinIO -> 读取 URL 可访问。
- 本地 FS 与 MinIO 配置切换可用。
P1(高优先)
7) ID 类型统一(int64 / model 注入)(已完成)
需求目标
- 所有业务 ID 使用
int64,路由参数统一:id<int>。
技术方案(后端)
- Controller/DTO:
string→int64,补齐字段级中文注释。 - Service:移除
cast.ToInt64,使用int64与model注入。 - Swagger/Route:补齐
<int>约束。
测试方案
- 关键接口:正常请求 + 参数类型错误时返回明确错误。
8) 内容访问策略完善(资源权限与预览差异化)(已完成)
需求目标
- 媒体资源访问遵循:未购仅预览,已购全量,作者/管理员全量。
- 签名 URL 或下载地址生成前进行权限校验。
技术方案(后端)
- Service
Content.Get根据visibility + status + access决定MediaUrls。Common.GetAssetURL或资源下载接口增加权限校验参数(通过内容ID校验)。
- 规则
- public + 未购:仅 preview + cover
- tenant_only + 已购/成员/作者/管理员:完整
- private:仅作者/管理员
测试方案
- 未登录/未购/已购/作者/管理员的可见资源集合一致性。
9) 审计参数传递规范化(已完成)
需求目标
- 审计服务禁止自行读取
ctx,改为显式传入操作者信息。
技术方案(后端)
- 调整
services.Audit方法签名与调用方传参。 - 关键操作补齐操作者字段。
测试方案
- 审计记录落库含
operator_id,并覆盖缺参错误。
P2(中优先)
10) 运营统计报表(曝光/转化/订单/退款)(已完成)
需求目标
- 提供租户维度与时间范围的核心指标统计与导出。
技术方案(后端)
- API
- 总览:
GET /t/:tenantCode/v1/creator/dashboard(已有,需扩展) - 明细统计:
GET /t/:tenantCode/v1/creator/reports/overview - 导出:
POST /t/:tenantCode/v1/creator/reports/export
- 总览:
- Service
- 聚合:订单、退款、内容曝光(views/likes)、转化率(访问->成交)。
- 导出:同步 CSV(如需异步任务与下载链接,可在后续迭代补齐)。
测试方案
- 统计口径一致性;筛选组合;导出任务可用性。
11) 超管后台治理能力(健康度/异常监控/内容审核)(已完成)
需求目标
- 提供超管对租户的健康指标、异常趋势、内容合规审核。
技术方案(后端)
- API
- 租户健康度统计:
GET /super/v1/tenants/health - 内容审核流:
POST /super/v1/contents/:id<int>/review
- 租户健康度统计:
- Service
- 指标聚合 + 异常阈值定义。
- 审核状态流转与通知。
测试方案
- 审核状态流转有效性;异常阈值命中结果。
12) 性能优化(避免 N+1)(已完成)
需求目标
- 列表/统计场景避免逐条查询。
技术方案(后端)
- 引入批量查询/聚合 SQL,替换逐条查询。
- 重点:订单列表、租户列表统计。
测试方案
- 对比查询次数/耗时(可选) + 数据正确性。
P3(延后)
13) 真实存储 Provider 接入(生产)
需求目标
- 接入 OSS/云存储(生产环境),统一上传/访问路径策略。
技术方案(后端)
- 通过配置注入 Provider,保留本地 FS/MinIO 作为 dev fallback。
测试方案
- 本地 FS + MinIO + 真实 Provider 三套配置可用性。
14) 支付集成
需求目标
- 最终阶段对接真实支付。
技术方案(后端)
- 接入支付网关并补齐回调/退款逻辑。
测试方案
- 沙箱支付 + 回调验签。
已完成
- 租户成员体系(加入/邀请/审核)。
- 鉴权与权限收口(AuthOptional/AuthRequired、super_admin 校验、Super.Login/CheckToken)。
- 上传会话归属测试补齐(UploadPart owner mismatch)。
- ID 类型统一(int64 / model 注入,upload_id 等非数值标识除外)。
- 内容访问策略完善(资源权限与预览差异化)。
- 审计参数传递规范化(Audit 显式传参)。
- 内容可见性与 tenant_only 访问控制。
- OTP 登录流程与租户成员校验(未加入拒绝登录)。
- ID 类型已统一为 int64(仅保留 upload_id/external_id/uuid 等非数字标识)。
- 内容资源权限与预览差异化(未购预览、已购/管理员/成员全量)。
- 审计操作显式传入操作者信息(服务层不再依赖 ctx 读取)。
- 超管全量可编辑(租户创建补齐、创作者设置/结算账户/用户资料写入口)。
- 通知模板支持编辑(超管接口 + 前端编辑入口)。
- 本地 MinIO 模拟真实存储 Provider(本地容器与文档指引)。
- 运营统计报表(overview + CSV 导出基础版)。
- 超管后台治理能力(健康度/异常监控/内容审核)。
- 性能优化(避免 N+1:订单/租户列表批量聚合 + topics 聚合)。
- 多租户强隔离(/t/:tenantCode/v1 + TenantResolver)。
里程碑建议
- M1:完成 P0
- M2:完成 P1
- M3:完成 P2