feat: expand superadmin edits and minio docs

This commit is contained in:
2026-01-17 19:32:46 +08:00
parent 3af5b20bcc
commit 984a404b5f
25 changed files with 2688 additions and 36 deletions

View File

@@ -0,0 +1,65 @@
# MinIO Storage Smoke Test
This note records local MinIO setup for S3-compatible storage simulation.
## Docker setup (local)
Image sources used in this environment:
- `docker.hub.ipao.vip/minio/minio:latest`
- `docker.hub.ipao.vip/minio/mc:latest`
Start MinIO (console on 9001):
```bash
sudo -n docker run -d --name quyun-minio \
-p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
docker.hub.ipao.vip/minio/minio:latest server /data --console-address ":9001"
```
## Bucket init
```bash
mkdir -p /tmp/quyun-mc
sudo -n docker run --rm --network host -v /tmp/quyun-mc:/root/.mc docker.hub.ipao.vip/minio/mc:latest \
alias set local http://127.0.0.1:9000 minioadmin minioadmin
sudo -n docker run --rm --network host -v /tmp/quyun-mc:/root/.mc docker.hub.ipao.vip/minio/mc:latest \
mb -p local/quyun-assets
sudo -n docker run --rm --network host -v /tmp/quyun-mc:/root/.mc docker.hub.ipao.vip/minio/mc:latest \
ls local
```
## Config sample
```toml
[Storage]
Type = "s3"
AccessKey = "minioadmin"
SecretKey = "minioadmin"
Region = "us-east-1"
Bucket = "quyun-assets"
Endpoint = "http://127.0.0.1:9000"
PathStyle = true
```
Use the bundled config file for local runs:
```bash
ENV_LOCAL=minio make serve
```
## Smoke test (optional)
```bash
sudo -n docker run --rm --network host -v /tmp/quyun-mc:/root/.mc -v "$(pwd)":/work -w /work docker.hub.ipao.vip/minio/mc:latest \
cp ./README.md local/quyun-assets/smoke/README.md
sudo -n docker run --rm --network host -v /tmp/quyun-mc:/root/.mc docker.hub.ipao.vip/minio/mc:latest \
ls local/quyun-assets/smoke
```
## Cleanup
```bash
sudo -n docker rm -f quyun-minio
```

View File

@@ -30,3 +30,5 @@ PathStyle = true
```
For AWS S3, set `Endpoint` with `https://` (e.g., `https://s3.amazonaws.com`) and keep `PathStyle` as `false` unless your provider requires path-style access.
For local MinIO setup and a smoke test, see `docs/storage_minio_smoke_test.md` (includes `ENV_LOCAL=minio`).

View File

@@ -5,7 +5,7 @@
## 当前范围与约束
- 认证仅使用 JWT不做 OAuth/Cookie 方案)。
- 支付集成暂不做,订单/退款仅按既有数据结构做流程与统计。
- 存储仅使用本地 FS 模拟,真实 Provider 延后统一接入
- 存储需要接入本地 MinIO 进行真实 Provider 模拟,保留本地 FS 作为兜底
- 多租户路由强隔离(`/t/:tenantCode/v1` + TenantResolver已启用后续仅做细节优化。
## 统一原则
@@ -63,11 +63,63 @@
**测试方案**
- 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高优先
### 4) ID 类型统一int64 / model 注入)(已完成)
### 7) ID 类型统一int64 / model 注入)(已完成)
**需求目标**
- 所有业务 ID 使用 `int64`,路由参数统一 `:id<int>`
@@ -79,7 +131,7 @@
**测试方案**
- 关键接口:正常请求 + 参数类型错误时返回明确错误。
### 5) 内容访问策略完善(资源权限与预览差异化)(已完成)
### 8) 内容访问策略完善(资源权限与预览差异化)(已完成)
**需求目标**
- 媒体资源访问遵循:未购仅预览,已购全量,作者/管理员全量。
- 签名 URL 或下载地址生成前进行权限校验。
@@ -96,7 +148,7 @@
**测试方案**
- 未登录/未购/已购/作者/管理员的可见资源集合一致性。
### 6) 审计参数传递规范化(已完成)
### 9) 审计参数传递规范化(已完成)
**需求目标**
- 审计服务禁止自行读取 `ctx`,改为显式传入操作者信息。
@@ -111,7 +163,7 @@
## P2中优先
### 7) 运营统计报表(曝光/转化/订单/退款)(已完成)
### 10) 运营统计报表(曝光/转化/订单/退款)(已完成)
**需求目标**
- 提供租户维度与时间范围的核心指标统计与导出。
@@ -127,7 +179,7 @@
**测试方案**
- 统计口径一致性;筛选组合;导出任务可用性。
### 8) 超管后台治理能力(健康度/异常监控/内容审核)(已完成)
### 11) 超管后台治理能力(健康度/异常监控/内容审核)(已完成)
**需求目标**
- 提供超管对租户的健康指标、异常趋势、内容合规审核。
@@ -142,7 +194,7 @@
**测试方案**
- 审核状态流转有效性;异常阈值命中结果。
### 9) 性能优化(避免 N+1已完成
### 12) 性能优化(避免 N+1已完成
**需求目标**
- 列表/统计场景避免逐条查询。
@@ -157,17 +209,17 @@
## P3延后
### 10) 真实存储 Provider 接入
### 13) 真实存储 Provider 接入(生产)
**需求目标**
- 接入 OSS/云存储,统一上传/访问路径策略。
- 接入 OSS/云存储(生产环境),统一上传/访问路径策略。
**技术方案(后端)**
- 通过配置注入 Provider保留本地 FS 作为 dev fallback。
- 通过配置注入 Provider保留本地 FS/MinIO 作为 dev fallback。
**测试方案**
- 本地 FS + 真实 Provider 套配置可用性。
- 本地 FS + MinIO + 真实 Provider 套配置可用性。
### 11) 支付集成
### 14) 支付集成
**需求目标**
- 最终阶段对接真实支付。
@@ -191,6 +243,9 @@
- ID 类型已统一为 int64仅保留 upload_id/external_id/uuid 等非数字标识)。
- 内容资源权限与预览差异化(未购预览、已购/管理员/成员全量)。
- 审计操作显式传入操作者信息(服务层不再依赖 ctx 读取)。
- 超管全量可编辑(租户创建补齐、创作者设置/结算账户/用户资料写入口)。
- 通知模板支持编辑(超管接口 + 前端编辑入口)。
- 本地 MinIO 模拟真实存储 Provider本地容器与文档指引
- 运营统计报表overview + CSV 导出基础版)。
- 超管后台治理能力(健康度/异常监控/内容审核)。
- 性能优化(避免 N+1订单/租户列表批量聚合 + topics 聚合)。