feat: add portal allauth account flow
This commit is contained in:
+25
@@ -728,3 +728,28 @@
|
||||
- `git diff --check`:通过,仅 Windows CRLF 提示。
|
||||
- 阻塞:T-306 功能无阻塞;完整大套件仍受远程 MySQL 连接稳定性影响。生产真实支付仍需微信 / 支付宝商户密钥、证书与 SDK 配置;真实 AI 上游 smoke 仍需配置 `AI_KEY_ENCRYPTION_KEY` 并导入 AiModel/ModelAlias。
|
||||
- 下一步:领取 T-501 注册 / 登录(allauth)。
|
||||
|
||||
## 2026-07-03 T-501 注册 / 登录(allauth)
|
||||
|
||||
- 状态:DONE
|
||||
- 变更:
|
||||
- `requirements.txt`:新增 `django-allauth>=65.18,<66`,本机安装到 65.18.0。
|
||||
- `config/settings.py` / `config/urls.py`:接入 `allauth` / `allauth.account`、allauth authentication backend、`AccountMiddleware`、邮箱验证 mandatory、登录/登出跳转、邮件 backend 配置、项目模板优先级、`accounts/` 路由与 portal 页面路由。
|
||||
- `apps/portal/`:新增 `CmhubAccountAdapter`,allauth 注册成功后创建 `UserWallet(points_balance=0)`,不写赠点流水;新增 `/signup`、`/login`、`/logout`、`/dashboard` 路由,最小 dashboard 只读显示点数余额;新增 Bootstrap 模板与中文验证邮件模板。
|
||||
- `apps/portal/tests.py`:覆盖注册创建未验证邮箱与 0 点钱包、无赠点流水、未验证邮箱不能登录、已验证用户登录/dashboard/登出、dashboard session 保护、登录 POST CSRF 保护。
|
||||
- 同步更新 `.env.example`、`README.md`、`docs/00-ai-start-here.md`、`docs/03-tech-stack.md`、`docs/04-architecture.md`、`docs/api.md`、`docs/routes.md`、`docs/env.md`、`docs/06-tasks.md`、`docs/current-state.md`、`docs/project-brief.md`、`docs/project-onepager.md`、`docs/phase-2-review.md`。
|
||||
- 验证:
|
||||
- `./init.ps1`:开工前通过,依赖同步与 `manage.py check` 正常。
|
||||
- `py -3.12 -m pip install -r requirements.txt`:通过,安装 `django-allauth 65.18.0`。
|
||||
- `py -3.12 manage.py check`:通过,0 issues。
|
||||
- `py -3.12 -m py_compile config\settings.py config\urls.py apps\portal\adapters.py apps\portal\urls.py apps\portal\views.py apps\portal\tests.py`:通过。
|
||||
- `py -3.12 manage.py test apps.portal --noinput --keepdb --verbosity 2`:通过,5 tests OK。
|
||||
- `py -3.12 manage.py makemigrations --check --dry-run`:通过,No changes detected。
|
||||
- `py -3.12 manage.py migrate --noinput`:通过,应用 `account.0001` ~ `account.0009`;MySQL 对 allauth `account.EmailAddress` 条件唯一约束提示 `models.W036`,第三方表的条件约束不会创建。
|
||||
- `py -3.12 manage.py test apps.users apps.portal --noinput --keepdb --verbosity 2`:通过,7 tests OK。
|
||||
- `py -3.12 -m compileall apps config`:通过。
|
||||
- `py -3.12 manage.py shell -c "from django.test import Client; r=Client().get('/login'); print(r.status_code); print(r.content[:120])"`:通过,`/login` 返回 200;修正模板优先级后确认返回项目内 `portal/base.html` 模板。
|
||||
- `py -3.12 manage.py test --noinput --keepdb --verbosity 2`:首次在 6 分钟工具超时内无结果;随后设置 `$env:MYSQL_CONNECT_TIMEOUT='90'`、`$env:MYSQL_READ_TIMEOUT='180'`、`$env:MYSQL_WRITE_TIMEOUT='180'` 后重跑通过,95 tests OK,234.743s;修正模板优先级后再次完整重跑通过,95 tests OK,301.722s。
|
||||
- 阻塞:T-501 功能无阻塞。生产邮箱验证需要配置真实邮件服务;当前默认 console backend 只适合本地开发。allauth 的 `EmailAddress` 条件唯一约束在 MySQL 上有第三方模型警告,但本项目账本唯一性由 `user.email` 唯一约束承担。
|
||||
- 决策:不引入 crispy-forms;T-501 只需要简单 allauth 表单,MVP 先用 Django form + Bootstrap 模板。注册路径只初始化 0 点钱包,不创建 `PointsLedger`,避免被误解为注册赠点。
|
||||
- 下一步:领取 T-502 API Key 自助管理页。
|
||||
|
||||
Reference in New Issue
Block a user