冻结可控 Portal 自助注册的数据库、接口、状态、安全、并发、配置和测试契约,为原型及生产拆单提供唯一技术基线。
使用 migration 12,可逆 up/down:
users.email
portal_registration_policy
id TINYINT UNSIGNED PRIMARY KEY
enabled BOOLEAN NOT NULL DEFAULT FALSE
version BIGINT UNSIGNED NOT NULL DEFAULT 1
updated_at DATETIME(6)
portal_auth_events
registration_closed
account_unavailable
GET /register
POST /api/session/register
username
display_name
password
password_confirmation
^[a-z0-9][a-z0-9._-]{2,63}$
bcrypt:v1
GET /api/v1/chorus/registration-policy
PUT /api/v1/chorus/registration-policy
admin_audit_events
server.trusted_proxy_cidrs
X-Forwarded-For
registration.attempts: 5
registration.window_seconds: 900
Portal:
Admin:
确认后更新 Product-Requirements-Overview、Business-Rules-and-Glossary、Architecture-and-Code-Map、Local-Development-and-Verification、Deployment-and-Operations。
技术设计 v1 已整理完成,状态:待用户确认。
确认范围包括:migration 12、users.email 可空、默认关闭的数据库策略、Portal 注册 API 与错误契约、Admin 乐观锁开关、可信代理 IP 解析、独立注册限流、安全事件审计、事务内策略复核、自动化测试和回退边界。
用户于 2026-08-29 明确选择注册密码最少 6 位;设计保留最大 1024 字符和 bcrypt:v1,不引入邮箱验证、验证码、计费、点数或每日配额。
关联原型:#78。#77 与 #78 均确认前,不建立和实施生产代码工单。
用户于 2026-08-29 明确验收通过技术设计 v1。结论:数据库、API、安全、并发、配置、测试和回退基线已确认;允许据此拆分生产实现工单。
No dependencies set.
The note is not visible to the blocked user.
基本信息
目标
冻结可控 Portal 自助注册的数据库、接口、状态、安全、并发、配置和测试契约,为原型及生产拆单提供唯一技术基线。
数据设计
使用 migration 12,可逆 up/down:
users.email攓为可空;既有数据不修改。管理员建号仍可填写邮箱,自助注册不生成虚假邮箱。portal_registration_policy:id TINYINT UNSIGNED PRIMARY KEY,只允许 id=1;enabled BOOLEAN NOT NULL DEFAULT FALSE;version BIGINT UNSIGNED NOT NULL DEFAULT 1;updated_at DATETIME(6)。portal_auth_events:策略与并发
registration_closed(API)。account_unavailable,不区分并发或已存在。Portal API
GET /register:仅开放时渲染注册页。POST /api/session/register:CSRF 保护,JSON 最大 64 KiB。username、display_name、password、password_confirmation。^[a-z0-9][a-z0-9._-]{2,63}$。bcrypt:v1。Admin API
GET /api/v1/chorus/registration-policy:返回 enabled、version、updated_at。PUT /api/v1/chorus/registration-policy:请求 enabled 与当前 version;使用 CAS 更新,冲突返回 409。admin_audit_events,只记录 before/after、version、actor 和 request_id。客户端 IP 与限流
server.trusted_proxy_cidrs,默认空。X-Forwarded-For链;否则只使用 RemoteAddr,禁止无条件信任客户端 Header。registration.attempts: 5、registration.window_seconds: 900,同名环境变量可覆盖;生产必须显式配置。页面状态
Portal:
Admin:
测试与验收
风险与回退
文档影响
确认后更新 Product-Requirements-Overview、Business-Rules-and-Glossary、Architecture-and-Code-Map、Local-Development-and-Verification、Deployment-and-Operations。
技术设计 v1 已整理完成,状态:待用户确认。
确认范围包括:migration 12、users.email 可空、默认关闭的数据库策略、Portal 注册 API 与错误契约、Admin 乐观锁开关、可信代理 IP 解析、独立注册限流、安全事件审计、事务内策略复核、自动化测试和回退边界。
用户于 2026-08-29 明确选择注册密码最少 6 位;设计保留最大 1024 字符和 bcrypt:v1,不引入邮箱验证、验证码、计费、点数或每日配额。
关联原型:#78。#77 与 #78 均确认前,不建立和实施生产代码工单。
用户于 2026-08-29 明确验收通过技术设计 v1。结论:数据库、API、安全、并发、配置、测试和回退基线已确认;允许据此拆分生产实现工单。