docs: refine moderation and signup policy

This commit is contained in:
QiuSW
2026-07-06 10:44:13 +08:00
parent e4565de0c4
commit eedc35cc4b
10 changed files with 225 additions and 16 deletions
+3 -1
View File
@@ -38,10 +38,12 @@
- 模块职责以 `04-architecture.md` 为准,不跨层偷写逻辑。
- **点数余额只能经 `apps/billing` 修改**:余额存 `UserWallet`(与 auth `User` 分离),扣点锁 wallet 行;API 层/Admin/用户端都不得直接写 `points_balance`。
- **API Key 哈希存储**(sha256),明文只在生成时返回一次;不存明文、任何页面不回显。
- **对外 API 只挂 API Key 认证,不挂 SessionAuthentication**;用户端页面用 session + CSRF,自助注册须邮箱验证、生成接口须限流。
- **对外 API 只挂 API Key 认证,不挂 SessionAuthentication**;用户端页面用 session + CSRF;自助注册**免邮箱验证**(`ACCOUNT_EMAIL_VERIFICATION="none"`,邮箱仍必填且唯一)、生成接口须限流。
- **用户端与后台账号分离**:portal 与 `/admin/` 共用同一个 Django 会话(同一 `sessionid`),后台访问只多一道 `is_staff` 门槛。因此 **终端用户一律 `is_staff=False`**(普通用户登 portal 进不了后台,无泄露);**运营用专用 admin superuser 登录 `/admin/`,不要拿这个账号登 portal**——账号分离(方案 A)就是「解耦入口」的正解,不要为同账号双会话去拆 cookie/子域名。详见 `04-architecture.md`。
- **对外接口只接受能力别名,不接受具体模型名**;新增供应商必须走 `apps/ai/providers/` 的适配器,不在 API 层写供应商分支逻辑。
- 计费按别名定价,不按具体模型 SKU;不要把模型名写进对外契约或调用方文档。
- 供应商 `api_key` 必须加密存储、使用时解密,不落明文、不在 admin 回显。
- **内容安全顺序**:若启用 prompt 敏感词过滤,必须在 `image_url` 下载 / `image_base64` 大图处理 / 别名解析 / 计费预扣之前审核 prompt;命中时返回 `content_blocked`,不扣点、不写 `CallRecord` / `PointsLedger`、不调上游。详细规则见 `docs/moderation.md`。
- 接口形状以 `api.md` 为准,运营后台路由以 `routes.md` 为准。
## 5. 代码规范