petstore-docs/P0-研发落地清单.md
2026-04-19 14:26:25 +08:00

109 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 宠小它 — P0 研发落地清单
> 用途:发给研发拆任务与验收;**仅含 P0**(本期质量与主线闭环必需,不含 P1/P2 增强)。
> 依据:《产品全方位优化说明 v1》《本期主线》《宠主端预约体验优化》《产品设计文档》及当前仓库实现粗对齐。
> 更新2026-04-19
**关联** [产品全方位优化说明-v1](./产品全方位优化说明-v1.md) · [本期主线-下一步产品优化点](./本期主线-下一步产品优化点.md) · [宠主端预约体验优化-产品说明](./宠主端预约体验优化-产品说明.md)
---
## 优先级说明
- **P0**:本迭代必须交付;阻塞对外口碑、数据脏读、合规提示缺失、或主线(传播/成片/留资)不可用。
- 已部分实现的项:**仍保留**,以下方「验收标准」为准做 gap 关闭。
---
## A. 后端Spring Boot
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **A1** | **预约状态机校验**`PUT /appointment/status`(及任意改状态入口)禁止非法迁移 | 仅允许:`new→doing`、`new→cancel`、`doing→done`(若报告提交会改 done 则接口侧与之一致)、`doing→cancel`(若产品允许,需与前端一致;**若产品规定仅 new 可取消**则 `doing→cancel` 返回 `CANCEL_NOT_ALLOWED` | 当前 `AppointmentService.updateStatus` / `startService` 偏「直接赋值」,需按《产品设计文档》矩阵校验;非法迁移返回 **4xx + 明确业务码**(如 `INVALID_STATUS` |
| **A2** | **开始服务**仅当 `status=new` | `startService``new` 时拒绝,勿静默改库 | 与「谁点谁服务」一致 |
| **A3** | **取消预约**(若独立接口)校验:仅允许目标状态为 `cancel` 且前置状态符合产品规则 | 与 A1 同一套状态机;前端取消按钮仅 `new` 时展示则后端仍要防篡改 | 防恶意请求 |
| **A4** | (可选 P0若本期上留资**留资去重**:同一 `report_token` + 同一手机号 | 二次提交返回成功态或「已提交」语义,不重复插库 | 口径见《本期主线》C |
---
## B. 小程序 — 门店端(老板/员工)
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **B1** | **「已完成」Tab 列表默认不含已取消** | Tab「已完成」下默认仅展示 `status===done``cancel` 通过 **次级筛选**(如「包含已取消」开关)或 **单独子 Tab「已取消」** 二选一实现 | 当前 `Home.vue``currentStatus==='done'` 时含 `cancel`,需改 |
| **B2** | **发送报告成功页**:同屏 **报告链接 + 二维码 + 两条可复制话术** | 话术支持变量:`{宠物名}{服务类型}{门店名}{链接}`;一键复制单条话术;二维码与链接不拆多页 | 对齐《本期主线》A「员工动作成本」 |
| **B3** | **报告提交锁死提示** | 填写报告页底部或提交前弹窗固定文案:**「提交后不可修改,请确认照片与备注无误」**(与产品 v1 锁死策略一致) | 若已有则核对文案 |
| **B4** | **「我的」老板端分组标题** | 至少两组:`店铺与经营` / `团队与账号`(或等价命名),高频在上;使用现有 `.module-title` | 降低入口迷失见《产品全方位优化说明》§2.2 |
---
## C. 小程序 — 宠主端customer
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **C1** | **单一主预约路径** | 首屏仅保留 **一个**主级「预约服务」入口;**不再同屏强并存**「大按钮 + 空态大按钮 + FAB +」等效重复(保留 FAB 则须显著弱于主按钮或仅老用户) | 见《宠主端预约体验优化》§9需对照当前 `Home.vue` 是否仍重复 |
| **C2** | **扫码 / 分享落地 `storeId`** | `CustAppointmentCreate` 支持 `onLoad``storeId`(已有则做 **全入口** 回归:普通二维码、小程序码 scene、分享 path/query | 预填门店且可「更换门店」 |
| **C3** | **登录时机与草稿** | 业务规则二选一落地并写 README**(1)** 未登录可填单,提交时再登录,返回后 **草稿恢复****(2)** 进入预约页即要求登录。推荐 (1) | `uni.storage` 或状态恢复;避免白填 |
| **C4** | **异常可理解** | 无可用时段、网络失败、未登录:均有 **toast / 空态 / 重试**,禁止静默失败 | 专文 §7 |
---
## D. H5 报告页(`report-view` / 独立 H5
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **D1** | **隐私提示(短期策略)** | 首屏或固定条:**「本页含宠物服务影像,请勿公开转发或发群」**(文案可微调,须合规友好) | 对齐《本期主线》A token 风险 |
| **D2** | **短片三态与文案对齐小程序** | `processing / failed / success``ReportHighlightBlock` 一致;失败展示 **归类中文**,不暴露堆栈;成功展示可变时长说明 | H5 与小程序报告页行为一致 |
| **D3** | **弱网 / 失败重试** | 报告主接口失败:**按钮「重新加载」**;超时阈值产品建议 **810s** 后出失败态 | 与《产品全方位优化说明》§3.3 |
---
## E. 传播与埋点P0 最小集)
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **E1** | **分享卡片元信息规则** | 小程序 `onShareAppMessage`:标题 **宠物名 + 服务 + 门店**;封面优先级 **成片封面 > 服务后首图 > Logo**(与 `reportShare.js` 逻辑对齐) | 见 `frontend/src/utils/reportShare.js` |
| **E2** | **埋点:报告打开** | 至少上报:`report_token` 或匿名 hash、**首次/再次**(可用本地 storage 记首次)、时间戳;落地页 H5 亦要能报(像素/接口二选一,研发定方案) | 不要求看板,要求 **可统计**《本期主线》 |
---
## F. 视觉与规范(工程债)
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **F1** | **禁止业务页硬编码主色** | 主色/品牌浅底统一 `var(--c-brand)`、`var(--c-brand-light)` 等;全局 grep `#16a34a`、`#2db96d`(除 `global.css` / 极少量渐变定义)**业务 vue 内为 0** | 《前端 UI 规范》已对齐 `--c-*` |
| **F2** | **空态禁用 emoji 作主视觉**(若违反现有 UI 禁止项) | 宠主空态等用 `AppIcon` 或插图占位,不用 📋 等作为主视觉 | 见 `Home.vue` 空态 slot |
---
## G. 文案与对外承诺(配置级)
| ID | 需求 | 验收标准 | 备注 |
|----|------|----------|------|
| **G1** | **无容量模型不写「排队」** | 全局检索「排队」「不排队」;宠主副标题等改为不承诺排队能力的表述(如「在线选时段」) | 与《产品全方位优化说明》D2 一致 |
| **G2** | **对内录单表述(可选)** | 门店端新建预约入口文案是否改为「代客预约」由产品拍板;若改则全局统一 | 降低「预约」歧义 |
---
## 建议排期顺序(供研发参考)
1. **A1A3**(后端状态机)— 防脏数据,优先合。
2. **B1**(已完成 Tab— 前端小改、用户感知强。
3. **B2、D1、D2、E1**(传播与报告体验)— 主线门面。
4. **C1C4**(宠主)— 与登录/路由并行可排。
5. **E2、F1、F2、G1** — 可并行或插空。
---
## 不在 P0勿与本清单混排
- 会员卡 / 储值 / 次卡
- 报告 token **作废重发**(中期,见 D3 决策)
- 多技师分成、排班深度联动
- 复杂数据看板、漏斗大屏
- 分包优化(可 P1
---
*评审后可将本页 ID 勾进看板;与专文冲突以迭代评审为准。*