pmc 61e8374e6a fix(affinity-P1): WR-002~WR-009 + IN-001~IN-006 综合改进收尾
WR-002 UserLevelRewardGrant.device on_delete CASCADE → SET_NULL,加 device_snapshot_id,
  unique 改为 partial(device 非空时唯一),与 AffinityLog.device SET_NULL 对齐
WR-003 AffinityLog 删除 3 个低价值索引(user/rule_key/source -created_at 复合)
WR-004 event_id 改为 null=True,partial unique 用 isnull=False;RunPython '' → NULL
WR-005 seed 加 companion_30min 默认规则
WR-006 description 显式 default='';DEFAULT_LEVELS 全部补 description
WR-007 seed_affinity 每条 spec 独立事务,部分失败可重跑
WR-008 ParadiseUser.favorability 字段保留 + UserInfoSerializer 移除暴露 + [DEPRECATED] 标记
WR-009(见 Commit B:AffinityLevel.clean + save full_clean 多层兜底)
IN-001 5 个弃用字段 help_text 加 [DEPRECATED — 计划于 P2 完成后删除]
IN-002 DEFAULT_RULES/LEVELS/SETTING 抽到 userapp/affinity/defaults.py
IN-003 AffinitySetting.daily_cap RenameField → global_daily_cap(区分 AffinityRule.daily_cap)
IN-004 AffinityLog.__str__ 用 pk or 'new' 兜底 None
IN-005(见 Commit A:is_active → is_bound 改名)
IN-006(见 Commit C:0006 print 前缀改为 [migration 0006_...])

迁移 0009 手工修正:daily_cap 改名用 RenameField(保留数据),不是 Remove+Add;
event_id '' → NULL 数据兜底;UserLevelRewardGrant on_delete + conditional unique 重建。

详见 docs/REVIEW-affinity-P1.md WR-* / IN-* 与 FIX-REPORT.md。
2026-05-13 10:18:47 +08:00
..
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-04-13 11:05:23 +08:00
2026-03-17 13:17:02 +08:00

用户管理模块 (userapp)

概述

用户管理模块提供了完整的用户账号管理功能,包括:

  • 多种方式的用户注册(用户名注册)
  • 多种方式的用户登录(用户名登录、邮箱登录、手机验证码登录)
  • 用户信息管理
  • 密码重置
  • 第三方账号登录(通过 allauth 支持)

API 文档

详细的API文档请参考

  • 用户认证API文档 - 包含所有认证相关接口
  • Swagger API文档运行服务后访问 /swagger/ 路径

认证方式

系统支持两种认证方式:

  1. Token认证基于自定义的Redis存储Token用于API访问
  2. Session认证基于Django内置的session机制主要用于管理后台

目录结构

userapp/
├── models.py      # 用户模型定义
├── views.py       # API视图
├── serializers.py # 序列化器
├── urls.py        # URL路由配置  
├── utils.py       # 工具函数
└── authentication.py # 自定义认证类

登录注册流程

注册流程

  1. 用户名注册:
    • 访问 /api/user/auth/register/
    • 提供用户名、密码、确认密码
    • 可选提供邮箱和手机号

登录流程

系统支持多种登录方式:

  1. 用户名登录:

    • 访问 /api/user/auth/username/login/
    • 提供用户名和密码
    • 获取返回的令牌Token
  2. 邮箱登录:

    • 访问 /api/user/auth/email/login/
    • 提供邮箱和密码
    • 获取返回的令牌Token
  3. 手机验证码登录:

    • 先访问 /api/user/auth/phone/verify/ 获取验证码
    • 然后访问 /api/user/auth/phone/login/ 提供手机号和验证码
    • 获取返回的令牌Token

使用令牌

获取令牌后,在后续请求中添加以下请求头:

Authorization: Bearer {token}