# API / 数据 / 隐私边界规则 本规则适用于任一任务触碰后端 controller/service/entity/repository、`frontend/src/api`、报告 token、媒体 URL、手机号、门店数据范围或发布配置。 > **本体对齐**:本规则的边界约束与 `docs/ontology/rules.md` 的规则条目对齐: > - 公开报告字段裁剪 → `rule:BR-RPT-006` > - 公开门店字段裁剪 → `rule:BR-STORE-003` > - 跨店/跨用户 403 → `rule:BR-APPT-002`/`rule:BR-APPT-003`/`rule:BR-RPT-005`/`rule:BR-LEAD-003`/`rule:BR-SCH-001`/`rule:BR-ST-001`/`rule:BR-PET-001` > - session token 鉴权 → `rule:BR-AUTH-001` > - token hash 日志 → `rule:BR-RPT-007` > - 留资脱敏 → `rule:BR-LEAD-002` > 改动这些规则时同步更新 `docs/ontology/rules.md` + `graph/ontology.jsonl`。 ## 归属边界 | 领域 | Owner Agent | 典型路径 | |---|---|---| | 预约、日程、门店、用户、宠物、服务类型 | Backend Core | `Appointment*`、`Schedule*`、`Store*`、`User*`、`Pet*`、`ServiceType*` | | 报告、媒体、成片、留资、评价 | Report Media Backend | `Report*`、`FileController`、`ReportHighlightVideoService` | | 门店端页面调用 | Store Miniapp FE | `frontend/src/pages/home`、`appointment`、`report`、`mine` | | 宠主公开体验调用 | Customer Experience FE | `frontend/src/pages/report-view`、`video-player`、宠主预约页、公开分享 utils | | 表结构、索引、状态字段、幂等 | Data Model | JPA entity、repository query、数据说明文档 | ## Controller / Service 规则 - Controller 只做入口、参数校验、登录/上下文读取和响应映射。 - Service 承载领域规则:状态机、数据范围、幂等、权限判断、异步任务状态。 - 不要在 Controller 中直接拼复杂业务状态或绕过 Service 改库。 - 任何状态更新都必须校验前置状态;预约状态不得直接无条件赋值。 - 公开报告接口必须只返回公开页需要的字段,不得透出调试字段、内部权限字段或不必要手机号。 ## Frontend API 规则 - 新增或修改 API 时,优先在 `frontend/src/api/index.js` 或对应业务 utils 中统一封装。 - 页面不直接散落硬编码 URL、token 拼接或错误码判断。 - 前端错误态必须有用户可理解文案;不能展示后端堆栈、SQL、Java exception 或未翻译错误。 - H5 与小程序若共享报告语义,字段名、三态文案和重试行为必须一致。 ## Data / Privacy 规则 - `report_token` 是敏感公开链接,不在日志、报告、截图中展示完整值。 - 手机号、宠主留资、门店数据范围和媒体 URL 必须有最小化返回原则。 - 软删除字段、`store_id` 数据范围和状态字段变更必须通过 Data Model review。 - 成片任务需要记录任务状态、失败原因和用户可读映射;不能只依赖日志排查。 ## 变更清单 接口或数据变更的任务 brief 必须写清: - 受影响 endpoint / 前端调用点。 - 请求参数和响应字段变化。 - 错误码或业务码变化。 - 数据表 / entity / repository query 变化。 - 是否影响公开访问、report token、手机号、媒体 URL、门店数据范围。 - 必跑验证命令和手工验收路径。 ## 推荐验证 后端: ```bash cd /Users/apple/_src/petstore/backend mvn test ``` 前端: ```bash cd /Users/apple/_src/petstore/frontend npm run build:h5 npm run build:mp-weixin ``` 文档: ```bash git -C /Users/apple/_src/petstore/docs diff --check rg -n "report_token|手机号|状态机|预约|成片" /Users/apple/_src/petstore/docs ``` 本体(改了 controller/service/entity 后必跑): ```bash cd /Users/apple/_src/petstore python3 docs/graph/validate_ontology.py docs # 引用完整性 python3 docs/graph/audit_drift.py # 本体—代码漂移审计 ``` 期望:`validate_ontology` 通过 + `audit_drift` 无 code-only / ontology-only 漂移。