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
653f057b51
feat(01-02): aiapp/admin.py 注册 CredentialSlotAdmin(脱敏 + 单例新增 + 禁删)
...
- import 追加 CredentialSlot 与 common.utils.mask_token
- 新增 CredentialSlotAdmin(覆盖 CRED-02):
- list_display 含计算字段 access_token_masked(仅末 4 位明文)
- fieldsets 分「凭据信息」明文可写 + 「元数据」updated_at 只读折叠
- has_add_permission 已存在记录时返回 False(隐藏增加按钮)
- has_delete_permission 永远返回 False(含批量动作)
- 不修改既有 BotAdmin / ChatMessage 注册块
2026-05-07 17:42:36 +08:00
20036eeb2f
docs(01-01): 完成凭据槽位数据层 plan,落地 SUMMARY 与 state 更新
...
- 新增 SUMMARY.md:3 task / 3 commit / 32+42+26 行代码 / mask_token + CredentialSlot + 0004 迁移
- STATE.md:completed_plans 0→1(50%),下一步切到 Plan 01-02
- ROADMAP.md:Plan 01-01 勾选完成,进度表 1/2 In progress
- REQUIREMENTS.md:CRED-01 勾选完成,traceability 状态 Pending→Done
- 探针数据契约固化:DB pk=1 / access_token='probe_secret_xxxx' 留给 Plan 01-02 浏览器 checkpoint
2026-05-07 17:39:53 +08:00
a475fe4600
feat(01-01): 自动生成并应用 0004_credentialslot 迁移
...
- 由 python manage.py makemigrations aiapp 自动生成(未手写)
- CreateModel(name='CredentialSlot') 含 id/app_id/access_token/updated_at 四列
- python manage.py migrate aiapp 退出码 0;showmigrations 显示 [X]
- shell 自检:首访 created=True app_id='' / 二次 save 后 count=1 obj2.pk=1
- N 次 save 守恒断言通过:CredentialSlot.objects.count() == 1
- 探针数据已写入 DB:pk=1 / app_id='probe_app' / access_token='probe_secret_xxxx'
(Plan 02 Task 2 浏览器 checkpoint 依赖此值,对应脱敏期望串 *************xxxx)
- 覆盖需求 CRED-01 数据库 schema 落地
2026-05-07 17:35:58 +08:00
30c7caff41
feat(01-01): aiapp 新增 CredentialSlot 单例模型
...
- 在 aiapp/models.py 末尾追加 CredentialSlot(不动 Bot / ChatMessage)
- 字段:app_id CharField(128) / access_token CharField(512) / updated_at auto_now
- 单例三件套:pk=1 + save() 钩子重定向 + get_solo() 类方法(1:1 复刻 AffinitySetting)
- 不引入 gettext_lazy / created_at,沿用仓库中文 verbose_name 实操约定
- 覆盖需求 CRED-01 模型层
2026-05-07 17:34:38 +08:00
a9c25eb2ac
feat(01-01): 新增 common/utils.py 含 mask_token 工具函数
...
- 落地 mask_token(token, visible_tail=4, mask_char='*') 通用脱敏函数
- 末 N 位明文保留;空/短输入兜底(短于 visible_tail 时全脱敏防长度泄露)
- 不依赖 Django,纯 Python utility,供 Phase 1 Admin / Phase 3 日志 formatter 复用
- 覆盖需求 CRED-01 工具支撑部分
2026-05-07 17:33:49 +08:00
343b5d0fee
docs(01): STATE.md 切到 Ready to execute(Phase 1 PLAN ×2 已提交)
2026-05-07 17:31:01 +08:00
68f4ceb0b9
docs(01): Phase 1 PLAN.md ×2(01-01 模型迁移工具 + 01-02 Admin 修改记录),plan-checker 通过 1 轮修订
2026-05-07 17:30:49 +08:00
ca7bd4a133
docs(01): Phase 1 RESEARCH.md(aiapp 归属 + 复刻 AffinitySetting 单例 + 新建 mask_token)
2026-05-07 17:30:46 +08:00
0fab2aac36
docs(01): 据 researcher 发现修正 CONTEXT.md(i18n 跟仓库字面量约定,app 归属锁定 aiapp,单例复刻 AffinitySetting)
2026-05-07 17:09:13 +08:00
ddc7360f60
docs(01): 从用户内联约束生成 Phase 1 CONTEXT.md(PRD 快速通道)
2026-05-07 16:57:31 +08:00
4637998420
docs(qy_lty): 生成 Milestone v1.0 ROADMAP(3 个 phase)
...
3 个串行 phase(粒度 coarse):
1. 凭据槽位数据层(CRED-01, CRED-02)— DB 单例 + Django Admin
2. 管理端读写接口(CRED-03, CRED-04)— /api/v1/admin/credential-slot/ GET+PUT
3. 客户端读取与日志脱敏(CRED-05, CRED-06)— /api/credential-slot/ 明文 GET + 阿里云日志过滤
REQUIREMENTS.md Traceability 段回填 6/6 映射;STATE.md 切到 Phase 1 待启动状态。
2026-05-07 16:42:37 +08:00
8ae12ca86c
docs(qy_lty): 定义 Milestone v1.0 需求(CRED-01~06)
...
通用凭据槽位 6 项 Active 需求:
- CRED-01 单例模型 + 迁移(pk=1 强制约束)
- CRED-02 Django Admin 注册(脱敏列表 + 编辑明文 + 隐藏新增)
- CRED-03 管理端 GET(admin token 鉴权,Access Token 末 4 位掩码)
- CRED-04 管理端 PUT(admin token 鉴权,全字段覆写 + get_or_create)
- CRED-05 客户端 GET(user token 鉴权,明文返回供手机/设备端使用)
- CRED-06 阿里云日志过滤(PUT 请求体 + admin GET 响应体两条泄露路径)
候选优先级段保留为下一周期参考。
2026-05-07 16:29:19 +08:00
ab3d728a08
docs(qy_lty): 启动 Milestone v1.0 通用凭据槽位
...
PROJECT.md 加入「本期 Milestone」段:全局单例 APP ID + Access Token 凭据存储,
管理端读写 + 客户端读取 + 日志脱敏;前端联动 milestone 在 qy-lty-admin 另起。
STATE.md 切换到 v1.0 状态:当前位置 = 需求定义中(roadmap 待生成)。
2026-05-07 16:29:10 +08:00
7223c52e9f
docs: bootstrap GSD workflow with brownfield documentation pass
2026-05-07 10:43:16 +08:00
64a8cb8f7b
docs: map existing codebase
2026-05-07 10:37: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
0330124b19
fix: pass through paragraph=true empty-text terminator in subv handler
...
Build and Deploy LTY / build-and-deploy (push) Successful in 9m27s
火山 SubtitleMode=1 下,paragraph=true 的事件 text 字段是空字符串,
作为段落终止的独立信号;之前 strategy B 的 `if not text.strip(): continue`
直接吞掉了这个信号,导致 buffer 永远 flush 不出来、AI 字幕全部丢失。
只在文本空且非 paragraph 终止时跳过;终止信号本身不进 buffer,但触发
已累积分片的拼接落库。Mode=0 行为不变(其 paragraph=true 事件 text 非空)。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 16:03:44 +08:00
c70bee7295
feat: update device interaction views
...
Build and Deploy LTY / build-and-deploy (push) Successful in 11m6s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 17:41:44 +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
e57f681040
feat: update userapp views
...
Build and Deploy LTY / build-and-deploy (push) Successful in 1h9m26s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 18:48:04 +08:00
90c6feb5a5
feat: update userapp utils
...
Build and Deploy LTY / build-and-deploy (push) Successful in 11m52s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:05:23 +08:00
29b4913723
feat: update RTC bot migration and device interaction consumers
...
Build and Deploy LTY / build-and-deploy (push) Successful in 9m19s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 18:08:05 +08:00
59b178f8f4
feat: update AI app views/urls and add RTC bot migration
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:55:52 +08:00
4de4595ec0
feat: update CI/CD pipeline for multi-env deploy and use mirror registry
...
Build and Deploy LTY / build-and-deploy (push) Successful in 7m50s
- Add dev branch trigger and environment-based config (prod/dev)
- Switch to Volcano container registry with retry logic
- Use mirror images for Docker base images (daocloud.io)
- Add dynamic domain/DB/Redis config per environment
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:33:32 +08:00
9bf46cb8af
fix new .
2026-04-04 15:18:52 +08:00
05be93546b
feat: update device interaction serializers and add fallback device command
...
Build and Deploy LTY / build-and-deploy (push) Successful in 50m22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 14:03:03 +08:00
7d05339e05
feat: update device interaction module
...
Build and Deploy LTY / build-and-deploy (push) Successful in 54m40s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 10:57:12 +08:00
a8add9dc6e
feat: update device interaction module
...
Build and Deploy LTY / build-and-deploy (push) Successful in 29m50s
- Update apps, consumers, and serializers
- Add scheduler and tasks modules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 18:03:08 +08:00
c0fe1f502b
feat: update card models, admin pages, and add migrations
...
Build and Deploy LTY / build-and-deploy (push) Successful in 1h5m35s
- Update card models, serializers, views and URLs
- Update dances, songs, users admin pages and API modules
- Add card migrations (merge furniture into decoration)
- Update middleware and settings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 16:38:48 +08:00
55ca2cbdaf
feat: update card views/serializers and admin sidebar
...
Build and Deploy LTY / build-and-deploy (push) Successful in 47m12s
- Add new card API endpoints and serializers
- Update sidebar navigation
- Update claude settings permissions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 11:35:11 +08:00
afa88c142b
feat: 实现设备动态绑定方案(步骤1-5)
...
- 步骤1: MacAddressLoginView 增强,返回 code=4010(未绑定)/4011(不存在),支持自动激活
- 步骤2: 新增 bind_status 接口,设备端轮询查询绑定状态(无需认证)
- 步骤3: 新增 register 设备自注册接口,首次开机自动注册(无需认证)
- 步骤4: UserDeviceSerializer 增加 mac_address 字段
- 步骤5: WebSocket 新增 device_info 消息类型,支持设备状态上报和广播
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 15:53:33 +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