# 宠小它 Agent Common Context

## 项目路径

| 名称 | 路径 |
|---|---|
| 工作区 | `/Users/apple/_src/petstore` |
| 知识库 | `/Users/apple/_src/petstore/docs` |
| 后端工程 | `/Users/apple/_src/petstore/backend` |
| 前端工程 | `/Users/apple/_src/petstore/frontend` |

## 业务边界

- 当前产品是“宠小它”宠物门店服务 SaaS。
- v1 核心用户：宠物店老板、员工、宠主。
- v1 核心闭环：预约创建 -> 待开始 -> 开始服务 -> 填写报告 -> 发送报告 -> 宠主查看/分享。
- 本期重点以现有文档为准：预约状态机、服务报告、短视频成片、报告分享、宠主预约、留资和最小埋点。
- 不把会员卡、储值、复杂排班、复杂数据看板、支付结算、技师分成等 P1/P2 能力写成 P0 已完成。
- 不把 demo、mock、临时 H5 或 dev-only 配置描述成生产能力。

## 术语规则

| 术语 | 含义 | 使用规则 |
|---|---|---|
| 宠小它 | 当前产品品牌 | 对外文档和页面统一使用 |
| Store / 门店 | 宠物店主体 | 后端数据范围以 `store_id` / `storeId` 为核心 |
| boss | 老板角色 | 可管理员工、服务类型、店铺设置等 |
| staff | 员工角色 | 可处理预约、开始服务、填写/发送报告 |
| customer / 宠主 | 报告查看者和预约发起者 | 公开页和预约页不得泄漏无关门店/员工数据 |
| Appointment | 预约 | 状态仅使用 `new`、`doing`、`done`、`cancel` |
| Report | 服务报告 | 一约一份报告，提交后默认锁死 |
| report_token | 报告公开访问令牌 | 视为敏感公开链接，不打印、不随意暴露到日志 |
| Highlight Video / 成片 | 服务过程短视频自动成片 | 必须有 processing / failed / success 三态和可理解错误文案 |
| Lead / 留资 | 宠主手机号等转化线索 | 需要去重、隐私提示和数据范围控制 |

## 技术基线

- 后端：Java 17、Spring Boot 3.2.3、Spring Data JPA、MySQL、Lombok。
- 前端：uni-app、Vue 3、Vite，支持微信小程序和 H5。
- 本地 H5 开发代理：`frontend/vite.config.js` 将 `/api` 转发到 `http://localhost:8080`。
- 前端 API 入口优先通过 `frontend/src/api/index.js` 和业务 utils 统一封装。
- 后端 controller 只做入口和响应映射；领域规则必须落在 service 层。

## 知识本体（Ontology）

项目领域知识以本体论框架建模为 SSOT，位于 `docs/ontology/`：

- `objects.md` — 实体（`store_customer`、`business_event` 已落为 JPA；`admin_console`/`workbench` 为后台读模型；P1/P2 gap 占位见 membership 等）
- `actions.md` — 动作（controller 接口 + 客户端埋点 + **admin_* 后台动作 documented**）
- `events.md` — 事件（含 `workbench_viewed` gap）
- `rules.md` — 规则（含 `rule:BR-ADMIN-001`…`004` 后台门禁与范围闸门）
- `relations.md` — ER 关系 + 动作-事件 + 规则-动作适用
- `graph/ontology.jsonl` — 机器可读知识图谱
- `graph/validate_ontology.py` — 引用完整性校验
- `graph/audit_drift.py` — 本体—代码漂移审计（端点 + 实体类对齐）
- `coverage/ontology-coverage-audit.md` — 覆盖度审计（与 jsonl 同步刷新）
- 产品对标：`docs/门店管理后台升级方案-对标宠老板.md`
- Phase A 页面 PRD：`docs/门店管理后台-PhaseA-页面清单PRD.md`
- Phase A 交付目标：`docs/门店管理后台-PhaseA-交付目标.md`
- Phase A 冒烟：`docs/qa-reports/门店后台-PhaseA-冒烟清单.md`
- Phase A 线框：`docs/门店管理后台-PhaseA-线框说明.md`
- 技术选型（Q5）：`docs/门店管理后台-技术选型草案.md`
- 编码任务 brief：`docs/门店管理后台-PhaseA-编码任务brief.md`

**协作约定**：
- 改动 controller/service/entity 时，同步更新对应本体条目（`docs/ontology/` + `graph/ontology.jsonl`）。
- 任务 brief 可在 `ontologyRefs` 字段引用本体 ID（如 `[entity:report, rule:BR-RPT-002]`），让接手 agent 直接定位上下文。
- 冲突时以本体为准；本体与代码漂移由 `audit_drift.py` 守护。
- 校验：`python3 docs/graph/validate_ontology.py docs && python3 docs/graph/audit_drift.py`

## 协作规则

- 开工前说明读哪些文件、写哪些文件。
- 写代码前确认写入范围，避免多个 agent 修改同一组文件。
- 固定团队任务先读 `.agents/fixed-team-operating-model.md`，确认 `Owner Agent`、`Paired QA`、`Workstream`、`Service Lock`、`Data Model Review Required`、`Access / Privacy Review Required`。
- 固定 agent 只领取字段完整且 `Status = Ready` 的任务；不要从长文档、聊天上下文或历史 prompt 自行扩大范围。
- 任务名称不加角色前缀；角色归属写入任务字段。
- 不要回滚、删除或格式化职责范围外的文件。
- 发现未提交或未跟踪文件时，默认认为是他人工作成果。
- 输出必须包含修改文件、验证命令、验证结果、风险点。
- 没有运行验证命令时，不得声称“已验证通过”。

## 固定团队写入锁

- `frontend/src/pages/home`、`frontend/src/pages/appointment`、`frontend/src/pages/report`、`frontend/src/pages/mine` 的门店端体验归 Store Miniapp FE。
- `admin/**`（建成后）门店 Web 后台归 Store Admin FE。
- `frontend/src/pages/report-view`、`frontend/src/views/ReportView.vue`、`frontend/src/pages/video-player`、宠主预约、分享落地和留资体验归 Customer Experience FE。
- 共享组件、`frontend/src/api`、`frontend/src/utils` 需要声明具体 `Service Lock`，并让相关 FE owner review。
- 预约、门店、用户、宠物、日程、服务类型后端能力归 Backend Core。
- 报告、媒体、成片、报告公开页、留资、评价后端能力归 Report Media Backend。
- JPA entity、索引、表结构、状态字段和迁移顺序需要 Data Model 复核。
- QA 不改业务代码；Ops 不改业务逻辑；PM Assistant 不改产品代码。
- System Architect 不改业务代码，不持有前后端业务写入锁；架构结论需要落地时，必须拆给对应 owner agent 执行。

## 禁止事项

- 不要把未实现的容量模型写成“排队/不排队”能力。
- 不要让公开报告页暴露内部 user id、store id 以外的敏感明细、手机号或调试字段。
- 不要绕过预约状态机直接赋值状态。
- 不要绕过报告提交流程制造 `done` 终态。
- 不要在业务页面继续扩散硬编码品牌主色；优先使用全局 token。
- 不要把 mock 支付、测试域名、临时 token 或本地文件路径写成生产方案。
