From 7223c52e9f8086b22eedbeff8f7f534b6f4430cb Mon Sep 17 00:00:00 2001 From: pmc <740076875@qq.com> Date: Thu, 7 May 2026 10:43:16 +0800 Subject: [PATCH] docs: bootstrap GSD workflow with brownfield documentation pass --- qy_lty/.planning/PROJECT.md | 165 +++++++++++++++++++++++++++++++ qy_lty/.planning/REQUIREMENTS.md | 138 ++++++++++++++++++++++++++ qy_lty/.planning/STATE.md | 67 +++++++++++++ qy_lty/.planning/config.json | 49 +++++++++ qy_lty/docs/修改记录.md | 28 ++++++ 5 files changed, 447 insertions(+) create mode 100644 qy_lty/.planning/PROJECT.md create mode 100644 qy_lty/.planning/REQUIREMENTS.md create mode 100644 qy_lty/.planning/STATE.md create mode 100644 qy_lty/.planning/config.json diff --git a/qy_lty/.planning/PROJECT.md b/qy_lty/.planning/PROJECT.md new file mode 100644 index 0000000..cf63de9 --- /dev/null +++ b/qy_lty/.planning/PROJECT.md @@ -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 + + + +**用户与认证(userapp)** +- ✓ **AUTH-01** 自定义用户模型 `ParadiseUser`(含 gender、MBTI、interests 等画像字段)— existing +- ✓ **AUTH-02** Redis 后端 token 认证(`RedisTokenAuthentication`,30 天 TTL,key `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** 单轮 / 多轮文本对话(接 Kimi,OpenAI 兼容协议)— 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_interaction,2026-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 / en)via django-rosetta — existing + +### Active + + + +(暂无 — 本次 `/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 集群** — 当前是单 Redis,CONCERNS.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-admin(Web 管理后台) | `../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 已 EOL(2024-10),需要规划升级 + +## Constraints + +- **Tech stack**: Django 4.2.13 + DRF + Channels + Daphne — 已锁定,迁移成本极高 +- **Tech stack**: Python 3.8(EOL)— 当前限制,但近期需升级 +- **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 TTL(Redis 后端) | 设备 + 手机端长期在线,短 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)* diff --git a/qy_lty/.planning/REQUIREMENTS.md b/qy_lty/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..698e6d2 --- /dev/null +++ b/qy_lty/.planning/REQUIREMENTS.md @@ -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 OAuth(django-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** 双通道 WebSocket(Header 鉴权 + 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 定时任务 + +### 好感度系统(AFF,2026-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 Admin(SimpleUI 主题,中英双语) +- [x] **ADM-02** `/api/v1/admin/` REST 命名空间 + +### 部署(DEP) + +- [x] **DEP-01** Docker + docker-compose(端口 12012) +- [x] **DEP-02** Daphne ASGI(HTTP + 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/P4(Service 层 + 接口层 + 客户端集成) +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 + + + +(暂无 phase;待 `/gsd-new-milestone` 后启动) + +--- + +*Last updated: 2026-05-07 after brownfield documentation pass* diff --git a/qy_lty/.planning/STATE.md b/qy_lty/.planning/STATE.md new file mode 100644 index 0000000..b88f46c --- /dev/null +++ b/qy_lty/.planning/STATE.md @@ -0,0 +1,67 @@ +# Project State — QY LTY Backend + +**最后更新**: 2026-05-07(brownfield 文档化初始化) + +## 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-ID,Active 段空,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* diff --git a/qy_lty/.planning/config.json b/qy_lty/.planning/config.json new file mode 100644 index 0000000..b679586 --- /dev/null +++ b/qy_lty/.planning/config.json @@ -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" +} \ No newline at end of file diff --git a/qy_lty/docs/修改记录.md b/qy_lty/docs/修改记录.md index 1910b2e..790a713 100644 --- a/qy_lty/docs/修改记录.md +++ b/qy_lty/docs/修改记录.md @@ -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/` 下引入 [GSD(Get 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/DEP),Active 段留空待 `/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)