diff --git a/P0-研发落地清单.md b/P0-研发落地清单.md new file mode 100644 index 0000000..6712a5e --- /dev/null +++ b/P0-研发落地清单.md @@ -0,0 +1,108 @@ +# 宠小它 — 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** | **弱网 / 失败重试** | 报告主接口失败:**按钮「重新加载」**;超时阈值产品建议 **8~10s** 后出失败态 | 与《产品全方位优化说明》§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. **A1~A3**(后端状态机)— 防脏数据,优先合。 +2. **B1**(已完成 Tab)— 前端小改、用户感知强。 +3. **B2、D1、D2、E1**(传播与报告体验)— 主线门面。 +4. **C1~C4**(宠主)— 与登录/路由并行可排。 +5. **E2、F1、F2、G1** — 可并行或插空。 + +--- + +## 不在 P0(勿与本清单混排) + +- 会员卡 / 储值 / 次卡 +- 报告 token **作废重发**(中期,见 D3 决策) +- 多技师分成、排班深度联动 +- 复杂数据看板、漏斗大屏 +- 分包优化(可 P1) + +--- + +*评审后可将本页 ID 勾进看板;与专文冲突以迭代评审为准。* diff --git a/logo-concept-draft.png b/logo-concept-draft.png new file mode 100644 index 0000000..1993f71 Binary files /dev/null and b/logo-concept-draft.png differ diff --git a/产品全方位优化说明-v1.md b/产品全方位优化说明-v1.md new file mode 100644 index 0000000..2e92f96 --- /dev/null +++ b/产品全方位优化说明-v1.md @@ -0,0 +1,191 @@ +# 宠小它 — 产品全方位优化说明(v1) + +> 角色:资深产品 + UI/UX 方向说明,与当前仓库文档、页面结构对齐,供评审与拆迭代。 +> 日期:2026-04-19 +> 说明:本文件为 **v1 汇总落地版**;细节子域仍以专文为准,避免重复维护时以专文覆盖冲突段落。 + +**关联文档** + +| 文档 | 用途 | +|------|------| +| [产品设计文档](./产品设计文档.md) | 功能、数据模型、状态机基线 | +| [产品改进建议](./产品改进建议.md) | 中长期方向库 | +| [本期主线-下一步产品优化点](./本期主线-下一步产品优化点.md) | 报告传播 + 成片 + 留资 + 绑定切片 | +| [宠主端预约体验优化-产品说明](./宠主端预约体验优化-产品说明.md) | C 端预约入口与表单 | +| [前端 UI 规范](./前端UI规范.md) | 视觉与组件基线(已与 `global.css` 对齐主色与 token) | +| [洗美报告短视频成片方案](./洗美报告短视频成片方案.md) | 成片边界与工程契约 | +| [**P0 研发落地清单**](./P0-研发落地清单.md) | **发给研发的 P0 任务与验收表** | + +--- + +## 〇、待决策项(避免返工) + +| ID | 议题 | 选项 | 建议 | +|----|------|------|------| +| D1 | 主色唯一源 | A `#2db96d`(`--c-brand`,与 `pages.json`/全局样式一致) / B `#16a34a` | **已采纳 A**:以代码与品牌 VI 为准;见《前端 UI 规范》修订 | +| D2 | 对外是否承诺「排队」 | 有容量模型再写 / 不写 | **无容量模型则不写**「排队」「不排队」类绝对话术 | +| D3 | 报告 token | 仅页内提示 / + 作废重发 MVP / + 有效期 | 短期提示 + 埋点;中期 **作废重发** 优先于复杂有效期 | + +--- + +## 一、定位、场景与核心流程 + +### 1.1 问题与方向 + +| 问题 | 方案 | 理由 | +|------|------|------| +| 价值偏「台账工具」,老板难感知增收留客 | **双叙事**:B 端强调「工单 + 可传播报告 + 线索」;C 端强调「少填一步 + 报告回看 + 提醒」 | 与 SaaS 北极星、主线文档一致 | +| 预约多为店员录单,与「用户自助预约」心智混 | 短期文案统一为 **「代客预约」** 或 **「门店预约」**;中长期宠主自助 + 核销见宠主专文 | 降低期望落差 | +| 状态迁移接口未完全收口 | 后端状态机校验 + 取消权限与按钮显隐一致;错误码:`INVALID_STATUS`、`CANCEL_NOT_ALLOWED` | 防脏数据、纠纷 | +| 报告提交后是否可改 | **v1 锁死**则全链路提示「提交后不可修改」;补救能力单独立项 | 减少客诉与随意改档 | + +### 1.2 落地规范(研发验收) + +- 预约状态机以《产品设计文档》矩阵为准;列表筛选默认 **不含已取消**(见 §二)。 +- 对外宣传物料与小程序描述:**不写**未实现的排队/叫号能力。 + +--- + +## 二、信息架构、菜单与导航 + +### 2.1 问题与方向 + +| 问题 | 方案 | 理由 | +|------|------|------| +| 「我的」入口随功能增长臃肿 | **角色分流**:`Home`/`Mine` 内按 `role` 分支;宠主 **不展示** 门店 KPI 看板 | 专文已明确:C 端不进「后台感」 | +| 「已完成」Tab 含取消单 | 列表默认 `status=done`;提供「含已取消」筛选或子 Tab | 财务与心智分离 | +| 深链不足 | **Query 协议**(建议统一文档化):`storeId`、`petId`、`from=report&reportToken=` 等;`CustAppointmentCreate` `onLoad` 解析并预填 | 扫码、报告再约、分享落地 | + +### 2.2 落地规范 + +**「我的」分组(老板示例)** + +1. **经营与订单**:我的订单、预约相关入口(若未合并则保留高频项) +2. **店铺配置**:店铺设置、服务类型、排班(中频) +3. **团队与线索**:员工管理、线索(Leads) +4. **个人**:资料、退出 + +每组 ≤5 个一级入口;使用 `.module-title` 分组标题。 + +**深链优先级**:扫码参数 > 报告带来的预填 > 用户上次默认(门店/宠物)。 + +--- + +## 三、交互、路径、文案、空态与异常 + +### 3.1 问题与方向 + +| 问题 | 方案 | 理由 | +|------|------|------| +| 宠主首屏「+」弱、空列表冷启动差 | 首屏 **主按钮「预约服务」**;空列表主 CTA 置顶 | 见宠主专文 P0 | +| 发送报告步骤多 | **发送成功页同屏**:链接 + 二维码 + **2 条可复制话术**(变量模板) | 降店员切换成本 | +| 成片/留资仅成功态精致 | **统一三态**:骨架/加载、失败(归类原因+重试)、成功 | 信任与主线文档一致 | +| 登录打断填单 | **点击预约再登录**;返回保留草稿(Storage 或状态恢复) | 降首步流失 | + +### 3.2 按钮与文案常量(前端可抽 `copy` 模块) + +| 场景 | 主按钮 | 次要 | 危险操作 | +|------|--------|------|----------| +| 工单 | 开始服务 | 查看详情 | 取消预约(二次确认) | +| 报告 | 提交报告 → 发送报告 | 稍后生成短片 | — | +| 宠主 | 预约服务 | 更换门店 | 取消预约 | +| 发送成功 | 复制链接 | 保存二维码到相册 | — | + +**失败原因对用户映射(示例)** + +- `NETWORK`:网络异常,请重试 +- `ASSET`:素材不足或损坏,请补充后重试 +- `BUSY`:生成排队中,请稍后查看报告 +- `UNKNOWN`:服务暂时不可用,请联系门店 + +禁止直接展示堆栈或内部英文错误句。 + +### 3.3 空态与网络 + +- 统一 `.empty`;弱网:首屏请求超时内置阈值(如 10s)后展示「网络不佳,点击重试」。 +- 列表首屏:**骨架屏** 3~5 行占位(与《前端 UI 规范》并行落地)。 + +--- + +## 四、UI、色彩、字体与卡片 + +### 4.1 问题与方向 + +| 问题 | 方案 | 理由 | +|------|------|------| +| 历史规范主色与代码不一致 | **以 `src/assets/global.css` 的 `--c-*` 为唯一源**;禁止业务页写死绿色 | 设计系统可维护 | +| 工具感偏强 | 高亮区用 `--c-brand-light`;卡片白底 + `--c-border` + `--c-shadow` | 与品牌「温暖」一致 | + +### 4.2 落地规范 + +- **主色**:`var(--c-brand)` `#2db96d`;深绿 `var(--c-brand-dark)`;浅底 `var(--c-brand-light)`。 +- **字体层级**:标题 18/700,正文 14~15/400~500,辅助 12;禁止 ≤11px。 +- **圆角**:组件 12~16px;页面左右边距 16px(`.page-section`)。 +- **H5 报告页模块顺序**:店信息 → 服务摘要 → **短片区(若有)** → 前后对比 → 过程素材 → 备注 → 留资/绑定 CTA。 + +--- + +## 五、功能细节、边缘场景、会员与闭环 + +| 问题 | 方案 | 备注 | +|------|------|------| +| `report_token` 长期有效 | 页内隐私提示;埋点异常频次;中期作废重发 | 见《产品改进建议》§六 | +| 谁点谁服务、无协作记录 | 短期备注协作;长期多技师/分工表 | 不改表则产品不写「多技师提成」 | +| 宠物历史 MVP | 列表/详情展示「第 N 次 / 距上次 X 天」**有数据才展示** | 与 `/api/pet/history` 等对齐 | +| 会员储值 | 路线图 P0;本期仅预留客户域字段亦可 | 避免前端假功能 | +| 时段已满 | 明确文案 + **快捷切次日** | 宠主专文 | + +**报告媒体类型**:前后端统一枚举;优先字段化 `media_type`,与成片任务对齐。 + +--- + +## 六、商业化、转化、留存 + +| 方向 | 动作 | 指标建议(与主线一致,可二选一) | +|------|------|----------------------------------| +| 传播 | 分享标题规则:宠物名 + 服务 + 门店;封面:成片封面帧 > 后图首帧 > Logo | `report_open` / `report_reopen` | +| 成片 | 成功页引导保存/转发;失败可重试 | `highlight_share`、生成成功率 | +| 留资 | **单钩子** + 最少字段(手机必填);隐私一句 | `lead_submit`、转化率 | +| 绑定 | 留资后一句话价值 + 最短路径授权 | `wx_bind_success` | +| 回访 | Leads 超时未跟进标红(阈值运营定) | 门店执行率 | + +计费模型(按店/月、成片加量包等)在《产品改进建议》§七层次定假设,指导裁剪。 + +--- + +## 七、微信小程序与性能 + +| 方向 | 规范 | +|------|------| +| 能力差异 | H5 不承诺原生分享卡片;以长按保存、复制链接为主;小程序以 `onShareAppMessage` 为主 | +| 成片 | 接口返回 `posterUrl`、`durationSec`;前端视频 `poster`、封面优先加载 | +| 分包 | 低频管理页(服务类型、排班、线索等)评估 `subPackages` 减小主包 | +| 安全区 | `navigationStyle: custom` 下统一底部 **≥120rpx** 与刘海适配自检 | +| 图片 | 列表缩略图 lazy-load;报告页大图渐进 | + +--- + +## 八、建议迭代切片(排期用) + +| 切片 | 内容 | 产出 | +|------|------|------| +| S0 | UI token 与规范文档一致;扫硬编码色 | MR + 自检表 | +| S1 | 宠主 P0:首屏 CTA、空态、扫码 storeId、登录与草稿 | 专文验收项 | +| S2 | 传播:发送成功页话术 + 分享元信息 + `report_open` 埋点 | 埋点表 | +| S3 | 成片三态 + 对外文案「可变时长有上限」 | 报告页/H5 文案冻结 | +| S4 | 留资 MVP + 绑定引导 + Leads 状态 | 接口与页面状态机 | +| S5 | 列表筛选默认 done、可选取消 | 接口参数 + UI | + +实际顺序可按依赖调整(埋点可与 S1/S2 并行)。**P0 必做项已拆为独立表** → [P0-研发落地清单](./P0-研发落地清单.md)。 + +--- + +## 九、修订记录 + +| 版本 | 日期 | 说明 | +|------|------|------| +| v1 | 2026-04-19 | 首版:汇总深度优化结论并落盘;主色与 `global.css` 对齐决策记入 §〇 | + +--- + +*实施时以迭代看板为准;专文与主设计文档冲突处,以评审后更新专文为准。* diff --git a/产品改进建议.md b/产品改进建议.md index b9fc150..f0ccf6b 100644 --- a/产品改进建议.md +++ b/产品改进建议.md @@ -1,4 +1,6 @@ -# 宠伴生活馆(petstore)— 产品改进建议备忘 +# 宠小它(petstore)— 产品改进建议备忘 + +> 品牌:宠小它 · 用心宠小它,温暖伴一生 · 智慧宠物门店服务系统 > 来源:产品设计复盘(与当前代码/《产品设计文档》对齐) > 用途:方向备忘,实施时以迭代计划与数据为准。 @@ -126,7 +128,8 @@ v1 宠主多为「链接访客」,若不沉淀 openid/手机号,门店无法 - 《产品设计文档.md》:v1 功能与数据模型以该文档为准。 - 《洗美报告短视频成片方案.md》:成片能力与 §5.3 延伸对应;文内「约 15s 分镜」为**参考示例**,实际成片时长以素材与配置上限为准。 -- 《前端UI规范.md》:实现层视觉基线。 +- 《前端UI规范.md》:实现层视觉基线(`--c-*` token 与 `global.css` 一致)。 +- 《产品全方位优化说明-v1.md》:定位、信息架构、交互/UI、商业化与小程序体验的**横向汇总**及排期切片;与本文互补,实施时以迭代目标裁剪。 --- @@ -135,3 +138,5 @@ v1 宠主多为「链接访客」,若不沉淀 openid/手机号,门店无法 --- **修订备忘(2026-04-18)**:全局措辞同步——成片由「固定 15s」统一为「竖屏、可变时长、配置上限、双编排」;与《洗美报告短视频成片方案》§0、《产品设计文档》v1.8 一致。 + +**修订备忘(品牌)**:对外品牌统一为 **宠小它**;主/副 Slogan 见《产品设计文档》v1.9 与《品牌替换清单-宠小它.md》。 diff --git a/产品设计文档.md b/产品设计文档.md index 8ae6e7a..0b0591d 100644 --- a/产品设计文档.md +++ b/产品设计文档.md @@ -1,13 +1,18 @@ -# 宠伴生活馆 - 产品设计文档 +# 宠小它 - 产品设计文档 -> 版本:v1.8 -> 日期:2026-04-18(v1.8:成片「可变时长 + 双编排」措辞与 §5.3 对齐专文 §0) +> 版本:v1.9 +> 日期:2026-04-18(v1.9:对外品牌统一为「宠小它」及主/副 Slogan;v1.8:成片「可变时长 + 双编排」与 §5.3 对齐专文 §0) + +> **品牌**:宠小它 · **主 Slogan**:用心宠小它,温暖伴一生 · **副 Slogan**:智慧宠物门店服务系统 +> **Logo / VI**:[《宠小它-Logo与品牌识别说明》](./宠小它-Logo与品牌识别说明.md)(含概念草案图) > 状态:产品设计确认中;**本期迭代重点:洗美过程短视频自动成片(竖屏、可变时长、双编排)** **相关子文档:** - [洗美报告短视频成片方案](./洗美报告短视频成片方案.md) — **本期迭代主方案**:过程短视频与自动成片(与 §5.3 服务报告延伸能力对应;时长与编排以专文「与工程实现同步」为准) - [产品改进建议](./产品改进建议.md) — 中长期方向库;**§〇** 为本期重点说明 +- [产品全方位优化说明 v1](./产品全方位优化说明-v1.md) — 定位/IA/交互/UI/商业化/小程序体验汇总与排期切片(**与专文互补**,冲突以评审更新为准) +- [**P0 研发落地清单**](./P0-研发落地清单.md) — **本期必做**:后端状态机、Tab 筛选、发送报告话术、H5 隐私提示、宠主路径、埋点最小集等(**可直接拆 issue**) --- @@ -343,7 +348,7 @@ CREATE TABLE t_report_image ( ## 九、后续事项(开放清单) -- [ ] 宠伴生活馆 Logo 素材 +- [ ] 宠小它 Logo 素材 - [ ] 图片存储方案(本地 / OSS) - [ ] 短信验证码服务商接入 - [ ] 微信授权登录 AppID/AppSecret diff --git a/公众号协同与全链路触达-产品说明.md b/公众号协同与全链路触达-产品说明.md new file mode 100644 index 0000000..96d43e0 --- /dev/null +++ b/公众号协同与全链路触达-产品说明.md @@ -0,0 +1,161 @@ +# 公众号协同与全链路触达 — 产品说明 + +> 范围:从 **预约 → 到店服务 → 洗美报告(海报/短视频)→ 分享朋友圈 → 提醒下次洗护** 的闭环中,**微信公众号**如何与小程序、门店运营配合。 +> **账号类型(已确认)**:本项目以 **微信服务号** 为对外服务与触达主号(非订阅号)。下文能力与排期均按服务号理解。 +> 说明:具体接口、类目、模板 ID 以微信后台与研发联调为准;本文以**产品规则与触点**为主。 + +--- + +## 1. 全链路一图(心智与资产) + +``` +宠主动机:想给宠物洗护/美容 + ↓ +【小程序】选店、选时、下单(预约) + ↓ +到店服务(线下) + ↓ +【门店端小程序】填写报告、上传素材、生成海报/成片 + ↓ +【宠主侧】打开报告页:对比图、过程素材、短片、海报 + ↓ +情绪高点:保存海报 / 保存短片 → 【引导分享朋友圈】(小程序内能力 + 话术) + ↓ +沉淀与回访:关注公众号 / 已关注用户 → 【模板/订阅消息】提醒下次洗护、报告更新 + ↓ +复购:从消息或菜单回到小程序 → 再次预约 +``` + +**公众号在其中的角色**:不是替代小程序做业务,而是 **触达、提醒、品牌阵地、弱打扰的「拉回」**;**交易与重交互仍在小程序**。 + +--- + +## 2. 小程序 vs 公众号:分工原则 + +| 维度 | 小程序 | 微信公众号 | +|------|--------|-------------| +| **预约、改约、查进度** | ✅ 主阵地 | 菜单跳转小程序页(路径带参) | +| **报告详情、播放短片、存海报** | ✅ 主阵地 | 同上;不宜用长图文替代 H5/小程序页 | +| **分享朋友圈** | 小程序卡片、页面引导;**注意**:朋友圈分享规则以微信为准 | 图文可放二维码/链接,转化路径更长 | +| **定时提醒、服务通知** | 订阅消息(需用户触发订阅)、站内消息(若自建) | **模板消息/类目模板**(服务号能力更强)、订阅通知(视类目) | +| **品牌内容、活动推文** | 可嵌入 web-view 或跳转 | ✅ 推文、自动回复、关键词 | + +**产品结论**:**预约与报告体验以小程序为准**;公众号负责 **关注后菜单导航、关键节点推送、内容运营**,与《本期主线》中的留资、绑定、复购提醒对齐。 + +--- + +## 3. 用户身份如何打通(产品必须先定口径) + +要让「推送」「菜单个人中心」不串号,需约定: + +- **小程序 openid**、**公众号 openid** 不同;若同一微信开放平台主体下绑定小程序与公众号,可有 **unionid** 做统一客户标识(技术实现由研发定)。 +- **产品规则**: + - 「下次洗护提醒」应对 **已绑定手机或已授权且可识别为同一用户** 的对象发送,避免骚扰陌生人。 + - 报告链接 **token** 与登录态关系已在《产品改进建议》§六讨论;公众号内跳转尽量 **带场景参数**,便于统计「从推送打开预约」的转化。 + +*本节不涉及实现细节,但属于上线前必须评审项。* + +--- + +## 4. 公众号菜单建议(可随阶段裁剪) + +以下为 **服务号/已认证订阅号** 常见结构的产品化版本;实际以微信后台可配置项为准。 + +### 4.1 一级菜单(示例三栏) + +| 一级 | 指向 | 产品意图 | +|------|------|----------| +| **我要预约** | 跳转小程序指定页:`/pages/appointment/CustAppointmentCreate` 或首页(可带 `storeId`) | 最短路径复购 | +| **我的服务** | 子菜单见下 | 查单、报告、宠物 | +| **门店/帮助** | 子菜单:门店地址电话、客服消息、关于我们 | 信任与到店 | + +### 4.2 「我的服务」下二级菜单(示例) + +| 二级 | 跳转 | 说明 | +|------|------|------| +| **我的预约** | 小程序首页或 `MyOrders` | 与 Tab「服务预约」一致心智 | +| **洗美报告** | 小程序 `MyReports` 或最近一单报告(需登录态) | 聚合历史报告入口 | +| **我的宠物** | 小程序 `MyPets` | 档案与复购锚点 | + +未登录时:统一落地 **小程序登录页** 或 **报告 token 链接说明页**(产品需定义优先级)。 + +### 4.3 菜单与「分享朋友圈」的关系 + +- 朋友圈分享 **主要靠小程序页面右上角分享 + 海报保存**,公众号菜单**不承担「分享」动作**,只承担 **「再来一单」「看报告」入口**。 +- 可在 **首次关注自动回复** 或 **菜单旁推文** 中教用户:「保存海报发圈」「报告页点右上角分享」——属于 **运营话术**,非菜单必选。 + +--- + +## 5. 推送:在什么时机、推什么(产品场景表) + +微信对营销类推送限制多,**服务通知类**需走模板;以下为 **产品侧可评审** 的场景,是否开通以账号类目与审核为准。 + +### 5.1 建议的推送类型与触发 + +| 场景 | 内容概要 | 落地动作 | 备注 | +|------|----------|----------|------| +| **报告已生成** | 宠物名 +「服务报告已就绪」 | 点击进小程序报告页 / H5 token 链接 | 高价值、用户强相关;注意频次 | +| **成片已生成** | 「回顾短片已就绪,可观看保存」 | 同报告页锚点到短片模块 | 与主线「成片」一致 | +| **预约成功 / 开始前提醒** | 时间、门店、项目 | 进预约详情 | 减少爽约 | +| **下次洗护建议日**(与 Reminder/间隔产品一致) | 「根据上次服务,建议在 × 月 × 日前后安排洗护」 | 进预约页,可预填宠物 | **复购核心**;需与店内真实规则一致,避免虚假宣传 | +| **留资/活动** | 优惠券、问卷 | H5 或小程序活动页 | 偏营销,注意防骚扰与退订 | + +### 5.2 通道选择(产品认知 · 服务号前提) + +- **模板消息 / 类目模板(服务号核心能力)**:适合「服务结果通知」类(报告就绪、预约成功、服务完成等);需在公众平台选用与**账号类目**匹配的模板,**不可发纯营销/骚扰内容**(易违规封号)。服务号相较订阅号,在**主动服务类触达**上更可依赖模板能力做闭环。 +- **订阅消息(小程序内)**:用户在小程序内**主动订阅**某次通知,适合「预约开始前」等;与公众号模板消息需 **去重**(见 §6),避免同一事件双推。 +- **客服消息(48 小时)**:用户与公众号互动后 48 小时内可发一定类型消息,适合**人工跟进**,不适合大规模自动营销。 + +**产品建议**:**报告/成片就绪** 用 **强相关、低频次** 通知;**洗护周期提醒** 用 **可预期的、可关闭的** 规则(与《Unsubscribe》类退订能力对齐)。 + +--- + +## 6. 从「分享朋友圈」到「下次洗护」的衔接 + +1. **分享当下**:报告页突出 **海报保存 + 短片保存**(已实现方向见《报告短片下载功能》),配 **短文案**:「晒晒你家毛孩子」+ 合规提示。 +2. **分享后无即时推送**:避免用户刚发圈就收到公众号推送(体验怪);可在 **次日或 T+3** 做轻量内容(若做运营推文)。 +3. **复购提醒**:依据 **服务间隔配置**(店内或总部统一),在 **建议日前 3~7 天** 发一条「该安排洗护啦」类模板/订阅消息,**一键进预约**。 +4. **公众号配合**:同一策略在 **菜单「我要预约」** 保持入口;推文可周期性发「洗护小贴士」**软植入**预约入口。 + +--- + +## 7. 合规与体验底线 + +- **关注与授权**:推送前用户需 **关注公众号** 且模板消息符合微信规范;小程序订阅消息需 **用户勾选**。 +- **退订**:短信/公众号营销类需 **退订路径**(项目已有退订页方向的,需与公众号侧说明一致)。 +- **频率**:同一用户 **报告类 + 提醒类** 建议设 **周上限**(产品定数字,研发实现),避免被投诉骚扰。 + +--- + +## 8. 分期落地建议 + +| 阶段 | 公众号侧 | 小程序侧 | +|------|----------|----------| +| **P0** | 菜单三项打通小程序;自动回复/关注欢迎语含「预约」「报告」关键词说明 | 报告页分享/保存链路稳定 | +| **P1** | 报告/成片就绪类 **模板消息**(能开则开) | 订阅消息与推送 **去重规则** | +| **P2** | 洗护周期提醒 + 推文运营日历 | Reminder 与预约页深链、宠物档案联动 | + +--- + +## 9. 附录:服务号相对订阅号(产品侧为何要定服务号) + +| 维度 | 对本期闭环的意义 | +|------|------------------| +| **模板消息 / 服务通知** | 报告就绪、预约提醒、洗护建议日等 **可产品化、可排期**;订阅号对「主动推送给未互动用户」限制更多,不适合作为「服务通知主通道」。 | +| **菜单与小程序** | 服务号支持 **自定义菜单跳转小程序**(路径与参数),与 §4 菜单设计一致。 | +| **品牌与服务心智** | 用户认知偏「官方服务窗口」,与预约、报告、提醒的 **服务属性** 一致。 | +| **群发与推文** | 服务号群发频次低于订阅号,**不适合依赖日更推文拉活**;本期应以 **小程序 + 模板消息 + 菜单** 为主,推文作辅助。 | + +**产品排期含义**:P1「模板消息打通」在服务号上 **优先级高、可验收**;若误用订阅号,同一需求需改方案(偏小程序订阅消息 + 菜单)。 + +--- + +## 10. 相关文档 + +- 《本期主线-下一步产品优化点.md》:传播、成片、留资、绑定。 +- 《产品改进建议》§八合规、§二触达。 +- 《产品设计文档》§5.4~5.5 报告与 H5。 + +--- + +*本文为产品与市场协同用说明;微信能力与模板文案以当时平台规则与审核结果为准,上线前需法务/运营复核。* diff --git a/前端UI规范.md b/前端UI规范.md index 3fd5995..9d45d91 100644 --- a/前端UI规范.md +++ b/前端UI规范.md @@ -8,14 +8,21 @@ ## 设计基线 -- 主色:`#16a34a` -- 页面背景:`var(--pet-bg)` -- 主文案:`var(--pet-text)` -- 次级文案:`var(--pet-subtext)` -- 分割/边框:`var(--pet-border)` -- 卡片阴影:`var(--pet-card-shadow)` +**唯一源**:`frontend/src/assets/global.css` 的 `:root` **CSS 变量(`--c-*`)**;`pages.json` 的 `navigationBarBackgroundColor` 与主色保持一致。 -以上变量统一在 `src/assets/global.css` 维护,页面中不要写死同类颜色。 +- 主色 / 品牌:`var(--c-brand)`(`#2db96d`) +- 品牌深 / 渐变收边:`var(--c-brand-dark)`(`#1e9a55`) +- 品牌浅底 / 选中弱背景:`var(--c-brand-light)`(`#eaf8f0`) +- 页面背景:`var(--c-bg)`(`#fafaf8`) +- 卡片表面:`var(--c-surface)` / `var(--c-surface-alt)` +- 主文案:`var(--c-text)`;次级:`var(--c-text-2)`;辅助:`var(--c-text-3)` / `var(--c-text-4)` +- 分割/边框:`var(--c-border)` / `var(--c-border-light)` +- 阴影:`var(--c-shadow-sm)` / `var(--c-shadow)` / `var(--c-shadow-lg)` +- 圆角:`var(--radius-sm)` / `var(--radius)` / `var(--radius-lg)` + +业务页面**禁止**写死同类十六进制色,统一使用上述变量。历史文档中出现的 `--pet-*` 已废弃,以 `--c-*` 为准。 + +> 全站优化说明与决策记录见 [《产品全方位优化说明 v1》](./产品全方位优化说明-v1.md) §〇、§四。 ## 字体与层级 diff --git a/品牌替换清单-宠小它.md b/品牌替换清单-宠小它.md new file mode 100644 index 0000000..ecc3ed3 --- /dev/null +++ b/品牌替换清单-宠小它.md @@ -0,0 +1,109 @@ +# 品牌替换清单:宠小它 + +> **同步状态**:前端/后端/主文档已按下列定稿替换;微信短信签名、公众平台名称需线下配置。 + +## 定稿品牌资产(产品) + +| 类型 | 内容 | +|------|------| +| **品牌名** | 宠小它 | +| **主 Slogan** | 用心宠小它,温暖伴一生 | +| **副 Slogan** | 智慧宠物门店服务系统 | + +**使用建议(供研发/设计落地)** + +- **主 Slogan**:偏 **宠主情感与品牌记忆**,适合:登录页主副文案、报告页/H5 页脚情感行、海报底部、运营朋友圈话术;字数较长时注意 **小屏换行** 与字号层级。 +- **副 Slogan**:偏 **产品定位 / B 端心智**,适合:`manifest` / 应用商店式 **description**、商家后台页脚、对内文档、官网或公众号简介;**不宜**与主 Slogan 同屏并排抢视觉,通常 **二选一主展示**。 +- **门店名称**:有 `store.name` 时仍以门店为准;无门店兜底时用品牌名 **宠小它**(见下文第二节)。 + +--- + +以下为 **历史梳理**(替换项多数已在代码中落实)。 + +--- + +## 一、建议保留不替换(技术标识) + +以下与 **代码包名、数据库、路径** 绑定,改名成本高且用户不可见,**可不随品牌改**(除非整体重构): + +| 类型 | 示例 | 说明 | +|------|------|------| +| Maven / npm 工程名 | `petstore-backend`、`petstore-uniapp` | artifactId / package.json name | +| Java 包名 | `com.petstore` | 全量重构级 | +| 本地存储 Key | `petstore_user`、`petstore_store` 等 | 改则老用户本地态可能异常,需迁移方案 | +| 数据库名 / 日志 logger | `petstore`、日志 `com.petstore` | 运维与历史日志 | +| 服务器上传路径 | `application.yml` 中 `/www/petstore/uploads` | 与部署路径一致时可保留 | + +--- + +## 二、必须替换:用户可见 / 审核相关 + +### 1. 小程序与 H5(`frontend/`) + +| 位置 | 当前内容 | 建议 | +|------|----------|------| +| `src/manifest.json` | `name`、可选 `description` | **name:宠小它**;**description:建议含副 Slogan**(如「宠小它|智慧宠物门店服务系统」或仅副 Slogan,保持简短) | +| `src/pages.json` | `navigationBarTitleText` | **宠小它** | +| `src/pages/login/Login.vue` | 品牌名、副标题 | **宠小它** + **主 Slogan**(原「让爱更专业」一行替换) | +| `src/pages/home/Home.vue` | `storeInfo.name` 缺省兜底 | **宠小它**(两处) | +| `src/pages/report-view/reportView.vue` | 店名兜底、页脚、分享默认 | 兜底 **宠小它**;页脚副线:**主 Slogan**(或店名+主 Slogan,按设计稿) | +| `src/views/ReportView.vue`(H5) | logo 区、brand-sub | 兜底 **宠小它**;副文案 **主 Slogan** | +| `src/utils/reportShare.js` | 默认店名 | **宠小它** | +| `src/utils/reportPosterDraw.js` | 海报默认店名 | **宠小它**(海报是否印主 Slogan 由设计定) | +| `src/pages/mine/Store.vue` | 页脚 | **宠小它 · 商家版** 或 **宠小它** + 下一行 **副 Slogan**(二选一,避免堆叠三行) | +| `src/pages/mine/Profile.vue` | 页脚 | **宠小它 · {{ editionLabel }}**;若需系统定位可加 **副 Slogan** 于更弱字号 | +| `src/assets/global.css` | 注释头 | **宠小它** — 设计系统 | +| `index.html` | title、meta description | **宠小它**;description 建议 **主 Slogan** 或 **主+副** 择一,控制长度 | +| `report.html` | `