docs: bootstrap GSD workflow with brownfield documentation pass

This commit is contained in:
pmc 2026-05-07 10:43:16 +08:00
parent 64a8cb8f7b
commit 7223c52e9f
5 changed files with 447 additions and 0 deletions

165
qy_lty/.planning/PROJECT.md Normal file
View File

@ -0,0 +1,165 @@
# QY LTY Backend洛天依统一后端服务
## What This Is
QY LTY Backend 是「洛天依Luotianyi智能陪伴产品」生态的统一 Django 后端,同时服务于 **3 个客户端**Unity 设备端(`LTY_Project`、Unity 移动 App`LTY_App_Project_URP`、Web 管理后台(`qy-lty-admin`。提供用户认证、AI 对话含语音、设备实时通信WebSocket + RTC、卡片/二维码、成就、订阅等综合能力。
## Core Value
**设备端与手机端通过同一个用户身份实时互通**——`device_{user_id}` 分组模型必须始终成立。一旦绑定/控制权解析、WebSocket 路由、RTC 房间号三者偏离同一 user_id整个产品的"陪伴"价值就坍塌了。其他能力(卡片、成就、订阅)可以暂时降级,这条不行。
## Requirements
### Validated
<!-- 已交付且在生产链路上跑通的能力,从 .planning/codebase/ 推断 -->
**用户与认证userapp**
- ✓ **AUTH-01** 自定义用户模型 `ParadiseUser`(含 gender、MBTI、interests 等画像字段)— existing
- ✓ **AUTH-02** Redis 后端 token 认证(`RedisTokenAuthentication`30 天 TTLkey `token:{token}` / `admin_token:{token}`)— existing
- ✓ **AUTH-03** 手机号 + 阿里云 SMS 验证码登录 — existing
- ✓ **AUTH-04** WeChat 社交登录django-allauth + Weixin provider— existing
- ✓ **AUTH-05** 设备端通过 MAC 换 user-token`POST /api/user/mac-login/`,按 `-bound_at` 取最新绑定者)— existing
**AI 对话与语音aiapp**
- ✓ **AI-01** 单轮 / 多轮文本对话(接 KimiOpenAI 兼容协议)— existing
- ✓ **AI-02** 多服务商语音抽象 `AudioService`(火山引擎 / 阿里云 NLS / 腾讯via `AUDIO_SERVICE_PROVIDER`)— existing
- ✓ **AI-03** 语音合成TTS+ 语音识别ASR通用接口 — existing
- ✓ **AI-04** 字幕落库(`ConversationSubtitle`+ Bot 配置管理 — existing
**设备交互device_interaction**
- ✓ **DEV-01** WebSocket 双通道:`/ws/device/`Header 鉴权)和 `/ws/device/token/{token}/`URL 鉴权)— existing
- ✓ **DEV-02** Channel Layer 分组模型 `device_{user_id}`,端到端唯一身份 — existing
- ✓ **DEV-03** 设备绑定 / 解绑 / 设主 / 状态查询 REST 接口 — existing
- ✓ **DEV-04** 设备心跳:消息触发刷新 Redis key `device:last_seen:{mac}`5 min TTL— existing
- ✓ **DEV-05** 设备状态写库(`Device.status` connected/disconnected— existing
- ✓ **DEV-06** "后绑挤先绑"控制权语义(`UserDevice.Meta.ordering = ['-bound_at']`)— existing
- ✓ **DEV-07** 火山引擎 RTC token 签发(`/api/device/rtc-token/get_by_mac/``room_id = room_{user_id}`)— existing
- ✓ **DEV-08** WebSocket 消息类型完整chat/weather/sing/dance/touch/flow_light/device_info/device_state/conversation_status/conversation_subtitle/factory_reset — existing
**卡片系统card**
- ✓ **CARD-01** 卡片分类管理 + 属性配置 — existing
- ✓ **CARD-02** 卡片批量生成 + 二维码 — existing
- ✓ **CARD-03** 卡片使用追踪 + 数据分析 — existing
**成就achievement_app**
- ✓ **ACH-01** 成就定义 + 稀有度等级 + 用户进度追踪 — existing
- ⚠️ **ACH-02** 成就解锁条件校验 — **TODO 占位**`achievement_app/views.py:139` 标记未实现,当前 endpoint 任意客户端可主张任意成就,详见 CONCERNS.md
**订阅subscription_app**
- ✓ **SUB-01** 用户订阅模型 + 订阅状态管理 — existing
- ✓ **SUB-02** APScheduler 定时任务调度(生产环境)— existing
**好感度系统userapp / device_interaction2026-04 完成 P1**
- ✓ **AFF-01** 设备级好感度计数(`UserDevice.favorability`,从 `ParadiseUser.favorability` 迁移)— existing
- ✓ **AFF-02** AffinityRule / AffinityLevel / AffinityLog / AffinityCounter / AffinitySetting / AffinityRewardClaim 6 张表 — existing
- ✓ **AFF-03** 配置驱动的规则 / 等级 / 奖励 / 上限 / 冷却 / 区间随机 — existing
- ⏳ **AFF-04** Service 层P2+ 接口层P3+ 客户端集成P4**未交付**,待后续 milestone
**视觉智能ali_vi_app**
- ✓ **VI-01** 阿里云人脸检测 / 识别 SDK 集成 — existing
**通用基础设施common**
- ✓ **INF-01** `StandardResponseMiddleware` 统一响应包装(`success` / `code` / `message` / `data`)— existing
- ✓ **INF-02** `CustomPageNumberPagination` 自定义分页(`page_size` 可调)— existing
- ✓ **INF-03** Aliyun OSS 文件上传抽象(`common/oss.py`)— existing
- ✓ **INF-04** Aliyun Log Service 生产日志集成 — existing
- ✓ **INF-05** Swagger / ReDoc API 文档自动生成drf-yasg— existing
**管理后台admin**
- ✓ **ADM-01** Django Admin 深度定制SimpleUI 主题 + 中英双语)— existing
- ✓ **ADM-02** `/api/v1/admin/` 命名空间为 Web 管理后台提供 REST 接口 — existing
**部署deployment**
- ✓ **DEP-01** Docker + docker-compose 容器化(端口 12012— existing
- ✓ **DEP-02** Daphne ASGI同时承载 HTTP + WebSocket— existing
- ✓ **DEP-03** PostgreSQL主库+ Redis缓存 + Channel Layer— existing
- ✓ **DEP-04** i18n 双语zh_HAns / envia django-rosetta — existing
### Active
<!-- 当前正在建设的目标。GSD 通过 phase 推动这一段;移到 Validated 才算完成 -->
(暂无 — 本次 `/gsd-new-project` 仅做 brownfield 文档化。下次新增功能 / 子系统时使用 `/gsd-new-milestone` 启动新 milestone把当时要交付的能力加到这一段然后 `/gsd-plan-phase` 拆 phase。
### Out of Scope
<!-- 明确排除项 + 理由。防止后续被无意识地拉回来 -->
- **Web 管理后台前端实现** — 在独立项目 `../qy-lty-admin/` 中维护Next.js 15 + React 19。本仓库**只**提供 `/api/v1/admin/` REST 接口,不写任何前端代码。
- **Unity 客户端业务逻辑** — 在 `C:\Unity2022project\LTY_App_Project_URP`(手机 App`C:\Unity2022project\LTY_Project`(设备端)独立维护。本仓库提供 HTTP / WebSocket / RTC 协议接口,不耦合客户端实现。
- **跨项目的混合修改记录** — 服务端 / 管理后台改动**各自记录**到本仓库 `docs/修改记录.md``qy-lty-admin/docs/修改记录.md`,跨项目联动**两端各写一条互相引用**不混在同一条目里CLAUDE.md 显式规定)。
- **会话完整管控(如 Sentry / APM 全链路追踪)** — 当前用阿里云日志服务,没有上 APM。如需要再开 milestone 评估。
- **多 Redis 实例 / Sentinel 集群** — 当前是单 RedisCONCERNS.md 标记为 HA 风险,但不在本次范畴内;待性能/可用性 milestone 决议。
- **真正意义的测试套件** — 当前 ≈10 个 test 文件中只有 1 个真正在测,无 mock 基础设施。这是 CONCERNS.md 标的 HIGH-severity 工程债,但需要独立 milestone 系统性修。
## Context
**生态位**本服务是「设备—App—管理端」三角的中心节点对所有客户端来说**它是唯一的真理来源**。
**对接客户端清单**(以 CLAUDE.md 为准):
| 客户端 | 路径 | 通讯方式 |
|--------|------|---------|
| LTY_App_Project_URP手机端 Unity URP | `C:\Unity2022project\LTY_App_Project_URP` | HTTP REST + WebSocket `/ws/device/` |
| LTY_Project设备端 Unity | `C:\Unity2022project\LTY_Project` | HTTP REST + WebSocket + RTC火山引擎 |
| qy-lty-adminWeb 管理后台) | `../qy-lty-admin/` | HTTP REST `/api/v1/admin/` |
**最近活跃工作**git log + 修改记录):
- 2026-04-24 ~ 至今好感度系统从「用户级单值」演进到「设备级独立计数」P1 数据层已上线P2/P3/P4 待后续 milestone
- 设备交互视图持续更新(最近 commit `a13a081`
- CI 触发性 commit 多次(`6c1cfde` / `ba16766` / `df85773`)—— 暗示 CI/CD 配置仍在调试
**已知工程现状**(详见 `.planning/codebase/`
- 整体规模约 168 个 Python 文件
- 测试覆盖**极低**(实质 ≈ 0是最大的工程债
- `device_interaction/views.py` 单文件 1867 行,承载 30+ action method —— 需要拆分但风险高(无测试保护)
- `requirements.txt` 不锁版本(无 lockfile—— 部署一致性靠 Docker 镜像保证
- Python 3.8 已 EOL2024-10需要规划升级
## Constraints
- **Tech stack**: Django 4.2.13 + DRF + Channels + Daphne — 已锁定,迁移成本极高
- **Tech stack**: Python 3.8EOL— 当前限制,但近期需升级
- **Tech stack**: PostgreSQL+ Redis缓存 + Channel Layer— 不可替换
- **Tech stack**: ASGI 必须,因为 WebSocket 是核心 — WSGI 路径 (`wsgi.py`) 仅作历史保留
- **Compatibility**: WebSocket 消息协议11 种 message type被 2 个 Unity 客户端依赖 — 任何新增字段必须向前兼容,删除字段需协调 3 方排期
- **Compatibility**: REST API 响应包装格式(`StandardResponseMiddleware` 输出的 `{success, code, message, data}`)被 `qy-lty-admin` 依赖 — 整体结构不可改
- **Compatibility**: `device_{user_id}` 分组命名 + `room_{user_id}` 房间命名是端到端的隐式契约 — 改名要同步 Unity / Volcengine RTC 配置
- **Documentation**: 每次代码改动**必须**追加到 `docs/修改记录.md` 顶部CLAUDE.md 强制规则,结构性文档变更同样适用)
- **Communication**: 与用户沟通使用中文CLAUDE.md「沟通语言」章节强制
- **Independence**: `qy_lty``qy-lty-admin` 独立维护,**修改记录、planning 工件不混合**
- **Security**: `.env` 不入库,所有 SDK secret 必须通过环境变量加载CONCERNS.md 已标 SECRET_KEY / DEBUG / CORS 多处需收紧)
## Key Decisions
| Decision | Rationale | Outcome |
|----------|-----------|---------|
| WebSocket 分组用 `device_{user_id}`(不是 `device_{mac}` | 让"同一用户"的多个端点(手机 + 设备)天然共享同一通信空间;同时一个设备同一时刻只能被最新绑定的用户控制,符合"陪伴"产品语义 | ✓ Good — 已支撑生产 |
| `UserDevice.Meta.ordering = ['-bound_at']` 隐式驱动控制权解析 | 实现"后绑挤先绑"语义无需显式状态机,依赖 ORM 默认排序 | ⚠️ Revisit — 语义正确但隐式,新人容易误删旧记录或绕过 ordering 直接 query建议改写为显式 `current_owner` 字段 |
| 30 天 token TTLRedis 后端) | 设备 + 手机端长期在线,短 TTL 体验差 | ✓ Good — 与产品形态匹配 |
| 多服务商音频抽象(`AudioService` 工厂) | Aliyun/腾讯/火山随时切换、降本调优 | ✓ Good — 实测有效,火山为当前默认 |
| `StandardResponseMiddleware` 统一包装响应 | 客户端只需处理一种响应壳层 | ✓ Good — 已被 3 个客户端依赖 |
| 设备级好感度vs 用户级)— 2026-04 P1 | 同一用户多设备时不互相污染好感度 | — Pending — 需 P2 service 层落地后才能完整验证 |
| 测试 MAC `AA:BB:CC:DD:EE:FF` 硬编码绕过绑定校验 | 早期开发便利 | ⚠️ Revisit — CONCERNS.md 标 HIGH上规模前必须替换为环境变量开关 |
| `.planning/` 锚定在 `qy_lty\`(不是 `Lila-Server\` | `qy_lty``qy-lty-admin` 是独立项目CLAUDE.md 规定各自维护 | ✓ Good — 2026-05-07 通过预创建空目录强制锚定生效 |
## Evolution
This document evolves at phase transitions and milestone boundaries.
**After each phase transition** (via `/gsd-transition`):
1. Requirements invalidated? → Move to Out of Scope with reason
2. Requirements validated? → Move to Validated with phase reference
3. New requirements emerged? → Add to Active
4. Decisions to log? → Add to Key Decisions
5. "What This Is" still accurate? → Update if drifted
**After each milestone** (via `/gsd-complete-milestone`):
1. Full review of all sections
2. Core Value check — still the right priority?
3. Audit Out of Scope — reasons still valid?
4. Update Context with current state
---
*Last updated: 2026-05-07 after brownfield documentation initialization (existing system mapped, no Active milestone yet — use /gsd-new-milestone to start the next cycle)*

View File

@ -0,0 +1,138 @@
# Requirements — QY LTY Backend
**初始化日期**: 2026-05-07
**类型**: Brownfield 文档化(从 `.planning/codebase/` 推断)
**状态**: 已落地能力归档完成Active milestone 待 `/gsd-new-milestone` 启动
---
## Validated已交付能力
以下需求均为 **2026-05-07 之前已上线** 的能力,从代码与 `docs/` 推断而来。任何修改都需要走完整 phase 流程,不要直接动。
### 用户与认证AUTH
- [x] **AUTH-01** 自定义用户模型 `ParadiseUser`(继承 AbstractUser含画像字段
- [x] **AUTH-02** Redis 后端 token 认证30 天 TTL
- [x] **AUTH-03** 手机号 + 阿里云 SMS 验证码登录
- [x] **AUTH-04** WeChat OAuthdjango-allauth + Weixin provider
- [x] **AUTH-05** 设备端 MAC 换 user-token`POST /api/user/mac-login/`
### AI 对话与语音AI
- [x] **AI-01** Kimi 单轮 / 多轮文本对话
- [x] **AI-02** 多服务商语音抽象(火山 / 阿里云 NLS / 腾讯)
- [x] **AI-03** TTS文本→语音+ ASR语音→文本通用接口
- [x] **AI-04** 字幕落库 + Bot 配置管理
### 设备交互DEV
- [x] **DEV-01** 双通道 WebSocketHeader 鉴权 + URL 鉴权)
- [x] **DEV-02** Channel Layer 分组 `device_{user_id}`
- [x] **DEV-03** 设备绑定 / 解绑 / 设主 / 状态查询 REST 接口
- [x] **DEV-04** Redis 心跳(`device:last_seen:{mac}`5 min TTL
- [x] **DEV-05** 设备 connected/disconnected 状态写库
- [x] **DEV-06** "后绑挤先绑"控制权语义
- [x] **DEV-07** 火山引擎 RTC token 签发(`room_{user_id}`
- [x] **DEV-08** 11 种 WebSocket message type 完整支持chat/weather/sing/dance/touch/flow_light/device_info/device_state/conversation_status/conversation_subtitle/factory_reset
### 卡片系统CARD
- [x] **CARD-01** 卡片分类 + 属性配置
- [x] **CARD-02** 批量生成 + 二维码
- [x] **CARD-03** 使用追踪 + 数据分析
### 成就ACH
- [x] **ACH-01** 成就定义 + 稀有度等级 + 用户进度
- [ ] **ACH-02** 成就解锁条件校验 — ⚠️ **TODO 占位**`achievement_app/views.py:139` 未实现;任意客户端可主张任意成就。**需要单独 phase 修复**。
### 订阅SUB
- [x] **SUB-01** 用户订阅模型 + 状态管理
- [x] **SUB-02** APScheduler 定时任务
### 好感度系统AFF2026-04 P1
- [x] **AFF-01** 设备级好感度计数(`UserDevice.favorability`
- [x] **AFF-02** 6 张配套表Rule/Level/Log/Counter/Setting/RewardClaim
- [x] **AFF-03** 配置驱动规则(区间随机 / 上限 / 冷却 / 等级奖励)
- [ ] **AFF-04** Service 层P2— 未交付,下个 milestone
- [ ] **AFF-05** 接口层P3— 未交付,下个 milestone
- [ ] **AFF-06** 客户端集成P4— 未交付,下个 milestone
### 视觉智能VI
- [x] **VI-01** 阿里云人脸检测 / 识别(`ali_vi_app`
### 通用基础设施INF
- [x] **INF-01** `StandardResponseMiddleware` 统一响应包装
- [x] **INF-02** `CustomPageNumberPagination` 自定义分页
- [x] **INF-03** Aliyun OSS 上传抽象
- [x] **INF-04** Aliyun Log Service 生产日志
- [x] **INF-05** Swagger / ReDoc API 文档drf-yasg
### 管理后台ADM
- [x] **ADM-01** Django AdminSimpleUI 主题,中英双语)
- [x] **ADM-02** `/api/v1/admin/` REST 命名空间
### 部署DEP
- [x] **DEP-01** Docker + docker-compose端口 12012
- [x] **DEP-02** Daphne ASGIHTTP + WebSocket 同进程)
- [x] **DEP-03** PostgreSQL + Redis 双依赖
- [x] **DEP-04** i18n 双语zh_HAns / en
---
## Active当前 milestone 目标)
**(暂无)**
本次 `/gsd-new-project` 是 brownfield 文档化,没有指定新 milestone。
下一次启动新功能开发时,请用:
```
/gsd-new-milestone
```
GSD 会引导你确认 milestone 目标、把新需求加到本段(带 REQ-ID然后 `/gsd-plan-phase` 拆 phase。
**候选优先级**(来自 CONCERNS.md 与项目活动信号,按风险/价值排序,仅供参考):
1. **HIGH** 修复 `ACH-02` 成就条件校验缺失 — 当前任意客户端可主张任意成就
2. **HIGH** 修复 SMS 验证码无频率限制 — 生产 DoS 向量
3. **HIGH** 收紧 `DEBUG` / `CORS_ALLOW_ALL_ORIGINS` 默认值 — 信息泄露 + CSRF 邻接风险
4. **HIGH** 移除测试 MAC `AA:BB:CC:DD:EE:FF` 硬编码绑定绕过
5. **HIGH** 测试基础设施搭建pytest + pytest-django + 关键路径测试)
6. **MEDIUM** 完成好感度系统 P2/P3/P4Service 层 + 接口层 + 客户端集成)
7. **MEDIUM** Python 3.8 → 3.11/3.12 升级
8. **MEDIUM** WebSocket URL token 鉴权废弃(防 access log 泄露)
9. **MEDIUM** 拆分 `device_interaction/views.py`1867 行单文件)
---
## Out of Scope
(理由详见 PROJECT.md此处不重复
- 管理后台前端 — 在 `../qy-lty-admin/` 独立项目
- Unity 客户端业务逻辑 — 在 `LTY_App_Project_URP` / `LTY_Project` 独立项目
- APM / 全链路追踪 — 暂不引入
- 多 Redis 实例 / Sentinel — 暂不上 HA
- 跨项目混合修改记录 — 各自维护
---
## Traceability
<!-- 由 /gsd-plan-phase 在生成 phase 时回填:每个 phase 解决哪些 REQ-ID -->
(暂无 phase`/gsd-new-milestone` 后启动)
---
*Last updated: 2026-05-07 after brownfield documentation pass*

67
qy_lty/.planning/STATE.md Normal file
View File

@ -0,0 +1,67 @@
# Project State — QY LTY Backend
**最后更新**: 2026-05-07brownfield 文档化初始化)
## Project Reference
See: `.planning/PROJECT.md` (updated 2026-05-07)
**Core value**: 设备端与手机端通过同一个 user_id 实时互通——`device_{user_id}` 分组语义必须始终成立。
**Current focus**: 暂无 Active milestone — 待 `/gsd-new-milestone` 启动下一周期
## Status
| 项目 | 状态 |
|------|------|
| Codebase mapped | ✅ `.planning/codebase/` 7 文档commit `64a8cb8` |
| PROJECT.md | ✅ Validated 已从 codebase 推断填充Active 段空 |
| REQUIREMENTS.md | ✅ Validated 已拆 REQ-IDActive 段空Traceability 待 phase 回填 |
| Roadmap | ⏸️ 暂未生成(无 Active 需求 → 无 phase 可分) |
| Active phase | — |
| Active milestone | — |
## Next Action
**当你准备开始下一个开发周期**
```
/gsd-new-milestone
```
GSD 会:
1. 询问 milestone 目标(例如:好感度系统 P2、安全加固、测试基础设施……
2. 把需求加到 `.planning/REQUIREMENTS.md` 的 Active 段
3. 路由到 `/gsd-roadmap` 拆 phase
**候选优先级排序见 `REQUIREMENTS.md → Active → 候选优先级` 段**。
## Workflow Config
详见 `.planning/config.json`
- Mode: **YOLO**(自动通过审批,直接执行)
- Granularity: **Coarse**(每个 milestone 拆 3-5 phase
- Parallelization: **enabled**
- Workflow agents: research / plan_check / verifier 全部启用
- Model profile: **balanced**Sonnet 主力)
- `.planning/` commits to git: **yes**
随时可用 `/gsd-settings` 调整。
## Important Anchoring Note
`.planning/` 必须保持在 `c:\Users\admin\Desktop\Lila-Server\qy_lty\` 这一层(**不是父级 `Lila-Server\`**)。父级 `.git` 容易让 GSD CLI 误把 `Lila-Server` 当作 project_root本目录的存在就是锚定信号不要删。
## Project Rules Reminder
CLAUDE.md 中两条强制规则,做任何 phase 时必须遵守:
1. **沟通语言**所有面向用户的回复使用中文CLAUDE.md 顶部「沟通语言」章节)
2. **修改记录**:每次代码 / 配置 / 迁移 / CI / Docker / 文档结构性改动 **必须**追加到 `docs/修改记录.md` 顶部CLAUDE.md 「项目修改记录规则」章节)
`qy_lty``qy-lty-admin` 是独立项目,修改记录互不混合,跨项目联动两端各写一条。
---
*Generated by /gsd-new-project (brownfield doc pass) on 2026-05-07*

View File

@ -0,0 +1,49 @@
{
"model_profile": "balanced",
"commit_docs": true,
"parallelization": true,
"search_gitignored": false,
"brave_search": false,
"firecrawl": false,
"exa_search": false,
"git": {
"branching_strategy": "none",
"phase_branch_template": "gsd/phase-{phase}-{slug}",
"milestone_branch_template": "gsd/{milestone}-{slug}",
"quick_branch_template": null
},
"workflow": {
"research": true,
"plan_check": true,
"verifier": true,
"nyquist_validation": false,
"auto_advance": true,
"node_repair": true,
"node_repair_budget": 2,
"ui_phase": true,
"ui_safety_gate": true,
"ai_integration_phase": true,
"tdd_mode": false,
"text_mode": false,
"research_before_questions": false,
"discuss_mode": "discuss",
"skip_discuss": false,
"code_review": true,
"code_review_depth": "standard",
"code_review_command": null,
"pattern_mapper": true,
"plan_bounce": false,
"plan_bounce_script": null,
"plan_bounce_passes": 2,
"auto_prune_state": false
},
"hooks": {
"context_warnings": true
},
"project_code": null,
"phase_naming": "sequential",
"agent_skills": {},
"claude_md_path": "./CLAUDE.md",
"mode": "yolo",
"granularity": "coarse"
}

View File

@ -23,6 +23,34 @@
<!-- 新的修改记录添加在此处下方,最新的在最前面 -->
### [2026-05-07] 引入 GSD 工作流并完成 brownfield 文档化初始化
- **文件路径**:
- `.planning/config.json`(新增)
- `.planning/PROJECT.md`(新增)
- `.planning/REQUIREMENTS.md`(新增)
- `.planning/STATE.md`(新增)
- `.planning/codebase/STACK.md` / `INTEGRATIONS.md` / `ARCHITECTURE.md` / `STRUCTURE.md` / `CONVENTIONS.md` / `TESTING.md` / `CONCERNS.md`(前序 commit `64a8cb8` 已建)
- **修改类型**: 新增
- **修改内容**: 在 `qy_lty/` 下引入 [GSDGet Shit Done](https://github.com/anthropics/get-shit-done) 工作流目录 `.planning/`,包含:
1. `.planning/codebase/` — 7 份 codebase 反向工程文档(栈 / 集成 / 架构 / 目录 / 规约 / 测试 / 隐患)
2. `.planning/PROJECT.md` — 项目愿景 + Core Value + 已交付能力Validated+ 关键决策记录
3. `.planning/REQUIREMENTS.md` — 把已上线能力拆为带 REQ-ID 的清单AUTH/AI/DEV/CARD/ACH/SUB/AFF/VI/INF/ADM/DEPActive 段留空待 `/gsd-new-milestone` 启动
4. `.planning/STATE.md` — 工作流状态机入口
5. `.planning/config.json` — 工作流偏好YOLO / Coarse / Parallel / 三类辅助 agent 全开 / Balanced 模型档)
- **修改原因**:
- 后续新功能 / 重构通过 GSD 走「discuss → plan → execute → verify」标准流程避免无规划的散弹式提交
- 反向梳理一遍现状形成文档基线,方便新成员(含 AI agent秒级进入上下文
- `.planning/` 锚定在 `qy_lty\` 而非父级 `Lila-Server\`,遵循 CLAUDE.md「`qy_lty``qy-lty-admin` 是独立项目」原则;通过预创建空 `.planning/` 目录强制锚定生效
- **后续动作**: 新功能开发使用 `/gsd-new-milestone` 启动候选优先级HIGH 项含成就条件校验缺失、SMS 限流、DEBUG/CORS 收紧、测试 MAC 后门移除、测试基础设施搭建)见 `.planning/REQUIREMENTS.md`
### [2026-05-07] CLAUDE.md 新增「沟通语言」规则 — 强制中文回复
- **文件路径**: `CLAUDE.md`
- **修改类型**: 新增
- **修改内容**: 在文件顶部(项目概述之前)新增 `## 沟通语言(重要 — 始终生效)` 章节明确所有面向用户的回复统一使用中文内部思考可用任意语言工具调用参数、commit message、代码注释保持项目原有约定此规则覆盖默认英文输出倾向仅在用户显式要求时切换。
- **修改原因**: 用户要求把"思考后的回答用中文显示"沉淀为本仓库长期生效的工作规则,避免每次会话重复声明,并让后续任何 Claude/Copilot 会话进入仓库即自动遵循。
### [2026-04-24] 好感度系统 P1 阶段 — 数据模型扩展 + 迁移 + seed 命令
配套设计文档:[docs/好感度系统功能与规则设计.md](好感度系统功能与规则设计.md)