a9d00a49f9
fix(infra): 切换 Redis 至火山引擎实例 + 修复 channels 不支持 ACL username + .env 取消跟踪
...
Build and Deploy LTY / build-and-deploy (push) Successful in 8m34s
- 阿里云 Redis 实例 10054 RST 导致 /api/v1/admin/login/ 等接口全线 500,切到火山实例 (db /3, user zyc)
- CHANNEL_LAYERS hosts 由手工拼接 redis://:{pwd}@{host} 改为直接消费 REDIS_LOCATION,支持 ACL username
- .gitignore 恢复 qy_lty/.env 忽略,git rm --cached 移除跟踪;历史中旧密钥仍在,需另行 rotate
- 详见 qy_lty/docs/修改记录.md 2026-05-18 条目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 13:48:14 +08:00
cc8ffee168
docs(affinity-P2): 修改记录与任务清单同步 P2 完成状态
...
Build and Deploy LTY / build-and-deploy (push) Successful in 8m15s
- qy_lty/docs/修改记录.md 顶部追加 P2 阶段条目:service 层 6 模块 + admin API 7 视图的详细产出物清单 + 跨项目联动注意事项
- docs/好感度系统-开发任务清单.md:
- P2-01 ~ P2-12 状态从 ⬜ 改为 ✅ ,每条补充实际产出物路径与验证标准
- 变更记录加 P2 完成条目,记录 6 项 smoke test 全 PASS 与下一步 P3 指引
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 09:36:20 +08:00
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
2a28aa8b28
fix(affinity-P1): CR-003 修正 0006 数据迁移幂等性
...
旧 forward 用 target.favorability == 10 判断"未迁移",10 既是初始值也是衰减
常见值,重跑会覆盖合法数据;backward 用 != 10 反向判断会丢衰减回 10 的数据。
改用 AffinityLog source='data_migration' 标记做幂等:
- forward 写入新值时同步写一条 audit log,metadata 含原 ParadiseUser 值
- backward 遍历 audit log 反向恢复并删除标记,保证 forward/backward 可循环
同步:AffinityLog.SOURCE_CHOICES 追加 'data_migration' + 0008 AlterField 迁移
更新 Python 端 choices 校验。
option B 选择:直接重写 0006(dev 已跑过但 migrate_count=0 等于未动数据,
django_migrations 表已记录完成不会再跑)。生产部署前需确认 prod 未跑过 0006,
否则需 fake-reverse 流程,详见迁移文件 docstring 与 FIX-REPORT。
详见 docs/REVIEW-affinity-P1.md CR-003。
2026-05-13 10:13:31 +08:00
9a87f5e2b5
fix(affinity-P1): CR-002 + WR-001 加 Affinity 模型 DB CHECK 约束 + 单例硬约束
...
AffinityRule / AffinityLevel / AffinitySetting 三表共 13 条 CheckConstraint
覆盖 min ≤ max / 各类 cap > 0 / cooldown ≥ 0 / companion_time 配套字段必填 /
decay 区间合法 / initial ≤ max 等不变量。
AffinitySetting 加 pk=1 单例硬约束(CR-002 + WR-001 联动)+ save() 强制 pk=1,
形成事实单例防御并发首次插入重复行。
模型 clean() 提供 Python 级兜底(给 DRF / admin 友好错误信息);
AffinityLevel.save() 自动 full_clean 触发跨行区间不重叠校验(为 WR-009 铺路)。
详见 docs/REVIEW-affinity-P1.md CR-002 / WR-001。
2026-05-13 10:12:01 +08:00
33b302c773
fix(affinity-P1): CR-001 + IN-005 修复 UserDevice 软删语义 + is_bound 改名
...
UserDevice.is_active 改名为 is_bound(消除与 Device.is_active 的命名冲突),
新增 ActiveUserDeviceManager(active manager),4 处控制权解析调用点
(MAC 登录、bind_status、绑定校验、RTC token、绑定 endpoint)切换到
UserDevice.active.filter(...),避免 P2 软删后旧绑定者被签发 user-token、
WS 分组路由错误、RTC 房间归属错乱等安全 / 越权风险。
base_manager_name='objects' 保证 admin 默认 queryset 不受 active 过滤影响。
详见 docs/REVIEW-affinity-P1.md CR-001 / IN-005。
2026-05-13 10:10:14 +08:00
db4d5cf89d
docs(03-02): docs/修改记录.md 顶部追加 Phase 3 条目 (CRED-05 + CRED-06)
...
- 5 处文件改动汇总: aiapp/views.py + qy_lty/urls.py + common/logging/__init__.py + common/logging/filters.py + qy_lty/settings.py
- 修改类型: 新增
- 修改内容: 客户端 GET 接口明文返回 + AccessTokenMaskFilter 4 正则脱敏 + LOGGING 注册
- 修改原因: Milestone v1.0 收尾 phase, 客户端读取 + 日志防御性兜底
- 跨项目联动: 无 — 客户端给 Unity (LTY_Project / LTY_App_Project_URP) 用, 那两个 repo 各自维护; qy-lty-admin 不消费此接口
- qy-lty-admin/docs/修改记录.md mtime 验证未变, 不写互引
2026-05-08 10:30:14 +08:00
46d72b8b39
docs(02-02): 两端修改记录互引 Phase 2 接口契约(qy_lty + qy-lty-admin)
...
- qy_lty/docs/修改记录.md 顶部新增 [2026-05-07] Phase 2 — 管理端通用凭据槽位 REST 接口(GET 脱敏 / PUT 覆写)条目;跨项目联动字段引用 qy-lty-admin 同期条目
- qy-lty-admin/docs/修改记录.md 顶部新增 [2026-05-07] Phase 2 — 锁定后端通用凭据槽位 REST 接口契约(消费方文档化)条目;服务端联动字段引用 qy_lty 同期条目
- 两端 grep 双向命中互引闭环;Phase 1 已有两条条目位置不变
- CLAUDE.md「跨项目联动两端各写一条互相引用」规则首次落地(Phase 2 是 Milestone v1.0 首次跨项目接口契约暴露)
2026-05-07 23:07:38 +08:00
ddbcb7da5a
docs(01-02): qy_lty/docs/修改记录.md 顶部追加 Phase 1 两条条目(CRED-01 + CRED-02)
...
- 在第 23 行注释下、既有最新条目之上插入两条 [2026-05-07] Phase 1 条目
- 顺序:Admin 注册条目(CRED-02)在上、数据层条目(CRED-01)在下,最新在最前
- 两条都内嵌「跨项目联动: 无」字段(措辞含 'qy-lty-admin 同期 v1.0 前端集成 milestone 已规划但未启动')
- CRED-02 条目含「Phase 2 暴露 /api/v1/admin/credential-slot/ 接口时再做前后端联动」前瞻
- CRED-01 条目含「后续动作」段链接到 Phase 2 / Phase 3 计划
- 既有条目(GSD brownfield / CLAUDE.md 沟通语言 / 好感度 P1 / 历史条目)均未被破坏
2026-05-07 18:00:40 +08:00
7223c52e9f
docs: bootstrap GSD workflow with brownfield documentation pass
2026-05-07 10:43:16 +08:00
2d82b2ef7f
feat: implement affinity (favorability) system
...
Build and Deploy LTY / build-and-deploy (push) Successful in 8m44s
- Add affinity level/setting models and migrations
- Migrate favorability data to UserDevice
- Add management commands for userapp
- Add admin CLAUDE.md and docs
- Update affinity system design doc and task checklist
- Update device_interaction and userapp models
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 17:18:30 +08:00
a13a081105
feat: update device interaction views and modification log doc
...
Build and Deploy LTY / build-and-deploy (push) Successful in 9m16s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 17:14:51 +08:00
c1722413ad
feat: update AI app, device interaction, and docs
...
- Update aiapp views
- Update device_interaction consumers and views
- Update docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 11:55:42 +08:00
3b7c5c85f5
feat: update device interaction views, docs, and CLAUDE.md
...
Build and Deploy LTY / build-and-deploy (push) Successful in 9m14s
- Update device_interaction views
- Update admin README and CLAUDE.md
- Add affinity system design doc
- Add device chat record subtitle storage scheme doc
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 17:06:21 +08:00
bd95ba470c
feat: update admin panel, API modules, and add migrations
...
- Update food, outfits, props, home-decor pages and components
- Add permissions page and sidebar updates
- Update API client and all API modules (auth, food, dances, etc.)
- Add card model migrations for optional fields
- Update Django views, serializers, and authentication
- Add affinity level migrations and user app updates
- Add project documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:06:50 +08:00
0c610c1e49
first commit
2026-03-17 13:17:02 +08:00