Files
Neo-ZQYY/docs/prd/PRD审阅-Q&A.md

489 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
# PRD 审阅 Q&A
> 基于 `docs/prd/小程序前后端.txt` 的系统性审阅。
> 请对每个 Q 填写 A完成后我们据此修订 PRD。
---
## 一、表达不清楚 / 需要补充的部分
### Q1.1 任务系统的核心定义
任务系统是整个小程序的核心,但文档缺少对"任务"概念的正式定义。需要你明确:
- Q1.1a:任务是系统每天自动生成的(如每日凌晨根据指数重新计算),还是有一个持久化的任务池(一旦生成就一直存在直到完成/过期)?
- Q1.1b:任务的完整生命周期是什么?(生成 → 展示 → 完成/放弃/过期?还有其他状态吗?)
- Q1.1c:任务是否有过期机制?比如一个召回任务,客户自己来了但不是该助教服务的,算什么?
- Q1.1d"置顶"和"放弃"是助教个人维度的操作(只影响自己看到的列表),还是全局的(其他人也能看到)?
**A
首先任务是每天动态生成的每天上午4点之后的第一次启动“任务生成器”时为每个助教分配任务。生成规则是基于指数和实时计算和若干规则的条件交叉原文档已说明
任务的唯一标识 由客户-助教-类型-生成时间构成。若“任务生成器”生成了一个任务,则读取已存在的 生成时间最晚的 客户-助教-类型 相同的任务进行对比,若客户-助教-类型相同,则跳过,不同则更新任务。这样进行任务更新是否合理?既保证了任务的变更,又可以对持续的任务进行延续。
举例客户A之于助教甲第一天“任务生成器”返回“回访”任务第二天返回“优先召回”任务。第一天的任务就被覆盖掉了。任务更新记录时间。
若第二天返回“回访”,则最大序号的 客户-助教-类型 任务相同,不做更新。保留任务生成时间。
注意“回访”类任务需要至少滞留48小时。这个看如何科学合理的实现。
**
---
### Q1.2 消费指数的定义
"新增指数"部分提到"增加一个消费指数,依据:消费能力,消费频率,消费趋势,全部会员卡储值额度",但没有给出算法框架或权重思路。现有的 NCI/WBI 都有详细的分项说明。
- Q1.2a:这个新消费指数需要达到和 NCI/WBI 同等级别的算法定义吗?还是先给出大致权重方向,实现时再调?
- Q1.2b:它和 `dws_member_consumption_summary` 中已有的 `customer_tier`(客户分层)是什么关系?是替代还是补充?
**A见文档 docs\prd\SPI 消费力指数.md。用指数替代customer_tier的作用**
---
### Q1.3 新增统计的四个指标命名
文档中多次写"另外,给这个统计,起一个合适的直观易懂的名字"。这些名字需要你定下来因为它们会成为数据库字段名、API 字段名、前端展示文案的基础。
需要命名的四个指标:
1. 订单流水-助教服务分成(助教参与订单总流水减去助教分成)
2. 助教时效流水(按服务时长折算的助教贡献订单金额)
3. 助教时效流水-助教服务分成(时效流水减去助教分成)
4. 以上三个 + "订单流水"本身,是否需要统一的系列命名?
**A你帮我定下来吧就是个命名的工作要求合适的直观易懂的名字。最好是统一的系列命名。**
---
### Q1.4 board-finance.html 重复
文档中有两段 `## board-finance.html`,内容不同但有重叠:
- 第一段:提到 AI 接口和 DWS 数据快照优化
- 第二段:提到筛选逻辑、预收资产板块消失规则、收入结构过滤
这两段是否应该合并为一段?是否有遗漏的内容?
**A需要合并可能是我疏漏了没有放在一起**
---
### Q1.5 权限列表的完整枚举
你说"权限列表是固定的",但文档只提到了部分权限。请完整列出所有权限项,例如:
- 任务板块可见
- 看版板块可见
- 看版-财务板块可见
- 看版-客户板块可见
- 看版-助教板块可见
- 还有其他的吗比如备注管理、AI 对话、绩效查看、Excel 上传等?)
**A其他权限都是通用的了。直接从入口卡死即可。Excel 上传是每个店的WEB管理端单独指定用户名密码。**
---
### Q1.6 users 表和申请审核流程
数据库中 `users` 表没有申请状态字段LAUNCH-CHECKLIST 中提到需要建 `user_application` 表但还没建。
- Q1.6a`users` 表是审核通过后才创建记录,还是申请时就创建(用 status 字段区分状态)?
- Q1.6b`users` 表目前没有 `avatar_url` 字段,小程序是否需要展示用户头像?如果需要,头像从哪来(微信授权 or 自行上传)?
**A这引出了一个很大的话题小程序的用户系统还未搭建。需要你帮我策划我现在可以给到的信息申请时就要创建用户用 status 字段区分状态;头像通过微信授权获取,暂不支持自行上传,暂时没有必要。**
---
### Q1.7 助教和小程序用户的映射
ETL 中的助教是 `dwd.dim_assistant`(来自上游飞球 SaaS小程序用户是 `zqyy_app.users`
- Q1.7a:一个助教登录小程序后,系统怎么知道他对应 ETL 中的哪个 `assistant_id`?是通过手机号匹配、管理员手动绑定、还是其他方式?
- Q1.7b:同理,小程序中的"客户"member和 ETL 中的 `dim_member` 是通过什么关联的?客户是否也需要登录小程序?
**A这里我需要更改一些信息表单。
申请时需要先验证微信号登录。并填写表单由一个文本框改为若干字段球房ID、申请身份、手机号、编号、昵称。
球房ID输入框必填。区别于SiteID这里的球房ID更偏向于业务侧使用。是一组简单的由2个字母+3个数字组成的球房代号。和SiteID一一对应。
申请身份:输入框,必填。
手机号:点击调用微信已记录的用户手机号进行填入。
编号:收入框,选填。
昵称:收入框,必填。
申请后在租户的管理后台还未建设新增用户管理页面。其中列出用户列表可以筛选不同状态的用户。在未审核列表中管理员可以看到申请信息。系统通过球房ID + 手机号,提示词申请用户与当前助教或员工的对应关系,方便管理员审核。
注意!客户不用小程序小程序的用户群体仅为球房管理人员助教等球房工作人员。是一个TOB的垂直小程序。
**
---
### Q1.8 备注系统的数据模型
文档多处提到"备注"(客户备注、放弃任务备注、回访备注),但没有定义备注表的结构。
- Q1.8a:备注存在哪个库?`zqyy_app` 还是 ETL 库?
- Q1.8b:是否需要区分备注类型(普通备注 vs 生日信息 vs 回访备注 vs 放弃任务原因)?还是统一一张表用 `type` 字段区分?
- Q1.8c:备注是否支持富文本/图片,还是纯文本?
**A对的小程序的所有数据库所有Schema所有表均没有建立。需要完善所有小程序功能需求文档后你来帮我做数据库的架构和后端服务架构接口等内容的规划并一步步完成小程序前后端的开发。
备注是登录的用户对客户/助教的备注行为我认为在test_zqyy_app更合理
我建议用一张表type字段区分即可。其中回访备注普通备注生日信息都是通过一个操作口径进行的使用其他条件进行隔离
回访备注“回访”类型任务中添加备注即为回访备注。走AI含金量判断的流程。完成备注后即标记此任务完成。这里有个特殊情况需要处理若某助教完成了召回的任务顺手做了备注。因为数据不及时的问题系统还不知道完成了召回认为此条备注被当做了普通备注。这种情况要单独处理。当发现某助教完成了召回任务任务应改变为用户回访但助教也完成了回访在召回任务数据到达之前则应标记再次完成回访任务完成召回任务后的第一条备注当做回访任务完成的依据走AI含金量判定等流程然后需要再次刷新生成任务。做一个数据回溯机制。
备注当前是纯文本。
**
---
### Q1.9 "跟"和"弃"icon 的触发条件
文档说"跟代表此客户出现在了该助教的任务列表中,且任务类型为高优先召回或优先召回"。
- Q1.9a"弃"代表什么?是该助教主动放弃了这个客户的任务?
- Q1.9b:如果一个客户同时属于多个助教,每个助教看到的"跟/弃"状态是独立的吗?
**A"弃"是该助教手动放弃了此任务。每个助教与客户的关系都是独立的,任务是独立的,所以"跟/弃"状态是独立的。**
---
### Q1.10 Excel 上传的具体需求
文档最后提到"管理后台 - Excel数据上传",几乎没有细节。
- Q1.10a:哪些 DWS 表支持 Excel 导入?目前看 `dws_ml_manual_order_alloc``dws_ml_manual_order_source` 是 Excel 导入的,还有其他的吗?
- Q1.10b:校验规则是什么?(字段类型、必填、外键引用、金额精度?)
- Q1.10c:导入是覆盖还是追加?主键冲突怎么处理?
- Q1.10d:你提到"针对每个连接器下的租户tenant 下有 site的后端管理系统",这个租户/站点管理的范围是什么?只是 Excel 上传的入口,还是包含租户 CRUD、站点配置等
**A
EXCEL导入内容类型
财务类-支出类,按月提交:主键为支出维度:房租;水电;物业;食品饮料进货;耗材;报销;固定人员工资;其他费用;
财务类-团购类,按月提交:逐渐为平台名称:平台-收入;
工资类-助教工资,按月提交:主键为助教姓名+助教编号+维度(扣款/奖金):扣款-金额-原因;奖金-金额-原因。
每个类型有一个Excel模版。
校验规则:必填,金额精度,表头格式,类型合法。提交的月份+主键冲突。
发现导入的月份+类型冲突则默认追加发现主键冲突的进行提示类似IDE的diff确认交互。
这个针对租户的后台管理系统,现在仅有很少功能:用户审核/用户管理/Excel上传.
租户 CRUD、站点配置是通过系统管理后台操作的。
**
---
## 二、与项目现状的冲突
### Q2.1 fdw_etl schema 为空
`zqyy_app` 数据库中 `fdw_etl` schema 存在但没有任何表或视图。小程序后端无法读取 ETL 数据。PRD 中大量页面task-list、board-finance、board-customer、board-coach、performance 等)都依赖 ETL 数据。
- Q2.1你是否已经意识到这个问题FDW 映射是否作为第一优先级处理?需要映射哪些表?(我可以根据 PRD 页面需求帮你整理完整的 FDW 映射清单)
**A为我整理完整的FDW映射清单。注意我们在开发环境全部使用测试库。**
---
### Q2.2 ETL app schema 为空
ETL 库中的 `app` schema设计为 RLS 视图层)也没有任何对象。
- Q2.2`app` schema 的 RLS 视图是否还在计划中?还是改为在 FDW 层面做数据隔离?
**ARLS和FDW两层都要做。注意我们在开发环境全部使用测试库。**
---
### Q2.3 tasks 表结构与 PRD 需求不匹配
`zqyy_app.public.tasks` 表只有通用字段id, title, description, status, assignee_id, creator_id, site_id。PRD 中的任务系统需要:任务类型、优先级、关联 member_id、关联 assistant_id、指数快照值、完成条件、放弃原因、置顶标记等。
- Q2.3:现有 `tasks` 表是为管理后台的 ETL 任务管理设计的,和小程序的助教任务是两个完全不同的概念。是否同意新建一张专用的助教任务表(如 `coach_tasks`),而不是改造现有表?
**Atasks是ETL的调度任务和小程序的助教任务完全两回事。
如我上文所说支撑小程序的数据库Schema表都还没有开始建设根据需求文档的确定和定稿逐一进行建立而且要和ETL的业务进行隔离。仅必要结果通过FDW传递。注意我们在开发环境全部使用测试库。**
---
### Q2.4 dws_member_consumption_summary 缺少字段
PRD 要求"30天/60天/90天内的累计充值次数/累计充值金额"和"次均消费额度",但现有表没有这些字段。
- Q2.4:这些字段是在现有 `dws_member_consumption_summary` 表上扩展,还是新建一张表?
**A这个的字段增补方式的决定权给你分析一个较为科学合理的方式进行扩张或新建表。我认为那些累计的可以放一个表问题不大。但次均消费额度和其他的不一样吧**
---
### Q2.5 助教流水统计表不存在
PRD 中的"订单流水"、"助教时效流水"等四个新统计指标在 DWS 中完全不存在。
- Q2.5:这些统计是新建一张 DWS 表(如 `dws_assistant_order_contribution`),还是扩展到现有的 `dws_assistant_customer_stats``dws_assistant_daily_detail` 中?
**A新建表进行实现**
---
### Q2.6 绩效计算中的"定档折算惩罚"
`dws_assistant_salary_calc``effective_hours` 等字段,但 PRD 中提到的"定档折算30分钟"这种惩罚机制在表结构中没有对应字段。
- Q2.6:定档折算的具体规则是什么?是否需要在 salary_calc 表中增加 `penalty_minutes` 或类似字段?
**A折算触发与规则如下需要适当的进行数据库建设和后端代码计算支持
业绩惩罚补充规则(定档业绩折算):
目的:防止助教利用低价团购/低台费订单/台费拼单等方式,低成本的“补时长、冲档位”,减少作弊空间,保障定档公平与球房收益。
实施方案:
一、助教行为规范
【规则1】禁止团购自开台挂本人专业课
助教不得使用任何团购/低价套餐/代金券,在适用区域内进行开台/开房。并购买助教专业课,将订单用于计入助教专业课服务时长。
适用区域大厅A、B、C、S、TV和 麻将房M1M7
【规则2】指定区域内同一时间仅允许2名助教挂台
在指定区域内,同一订单下,同一台/房同一时间段最多挂2名助教。
指定区域大厅A、B、C、S、TV和 麻将房M1M7
若客人购买多人同时的专业课,则必须走“豁免流程”(见下)。
*老客户或熟人需要3助教及以上的前厅引导另外开台/房。
二、惩罚豁免(仅针对“真实客需”)
【豁免适用条件】
若触发了上述 规则1或规则2但事实为客人真实提出的服务需求例如客人指定三名助教同场服务或团购客人确需助教服务等
【豁免操作要求】
客户结账时,前台需核对真实客人在场,并将订单明确绑定到该真实客人名下。若新客则需要注册新会员。*可配合新客充值优惠或其他新客福利的营销活动。
未按要求留存客人信息的,一律不视为豁免。按以下方式进行惩罚处理。
三、惩罚处理
【核心原则】
本规则仅影响“定档业绩时长”的统计,不影响助教当月实际服务时长的工资结算。只影响定档,不影响实际工资时长。
举例说明:某中级助教本月实际服务基础课 140小时。
系统按本规则折算后,定档业绩时长被扣除 15小时
定档业绩时长 = 140 15 = 125小时 → 归入 1档
工资档位确定后,工资仍按实际服务时长结算:
中级工资单价 = 108 18 = 90元/小时
工资 = 140 × 90 = 12,600元
【核算方式】
系统将符合处罚条件的订单,按照“每小时每名助教贡献的台费/房费流水”,并据此确定该单可计入的定档业绩时长。
步骤:
计算台费会房费的每小时实收单价。
上步骤的单价 ÷ 本次基础课助教人数 记做 单人贡献流水。
若 单人贡献流水 ≥ 24元每位助教按照课程服务时长按满额计入定档业绩时长=实际时长);
若 单人贡献流水 ≤ 24元该单按比例折算计入定档业绩时长
定档业绩时长 = 实际时长 × (单人贡献流水 / 24
示例:
订单12.12元团购A区时长2小时购买3个助教服务2小时后离店未保留客户信息疑似助教团购拼单。每小时每名助教贡献
r=(12.12*2)/(2×3)=4.04"元"
折算系数:
(4.04)/24=0.1683
定档业绩时长:
2"小时"×0.1683=0.3367"小时"=20.2"分钟 则定档业绩记录为20分钟"
**
---
## 三、文档内容的疑问
### Q3.1 订单流水计算示例数值不一致
文档中写"订单流水 = 200+400+600+320+100+800 = 2420元。也就是3个助教每人+2820的订单流水"。
- Q3.12420 和 2820 不一致,正确值应该是 2420 对吧?
**A对的我写错了不好意思。**
---
### Q3.2 客户归属的 RS 差距阈值
"如果多个助教对某客户的RS没有很大的差距50%)以上,则此客户属于多个助教"。
- Q3.2a50% 是指 RS 值的绝对差还是相对差例如助教A的RS=8助教B的RS=5差距按什么算
- Q3.2b:这和 `dws_member_assistant_relation_index` 中已有的 `os_label`MAIN/COMANAGE/POOL机制是什么关系OS 已经实现了类似的归属逻辑,是否直接复用 OS 而不是用 RS 差距来判断?
**A50% 是指 RS 值的相对差。(8-5)/8<0.5则2个客户都能跟踪一个客户。**
---
### Q3.3 任务优先级0的公式
"根据(WBI+NCI)指数展示列表。>7为高优先召回。>5为优先召回"。
- Q3.3WBI 和 NCI 都是 0-10 的分数,直接相加范围是 0-20。阈值 7 和 5 是对相加后的值判断,还是取 max(WBI, NCI) 判断,还是分别判断?
**A取max(WBI, NCI)进行判断**
---
### Q3.4 回访任务的"2天内备注有效"
"出现过客户回访后2天内备注有效。2天内再次出现客户回访任务则旧的回访任务被顶替"。
- Q3.4a"2天"是自然日还是 48 小时?
- Q3.4b"顶替"是指旧任务自动标记为完成、取消、还是其他状态?
**A48小时。"顶替"是指“任务生成器”生成了新认为,进行了顶替。**
---
### Q3.5 AI 应用6的评分阈值
"低于5则不算完成。高于等于5记做完成",但后面又说"6分为标准分"。
- Q3.55 分是完成的最低线6 分是"合格"的标准?两个阈值分别用在什么场景?
**A统一使用6分为完成几个线**
---
### Q3.6 performance.html 中"我的新客"定义
"首次服务过的客户在最近2月内且服务总次数小于等于2"。
- Q3.6a"首次服务"是指该助教首次服务该客户,还是该客户首次到店?
- Q3.6b"服务总次数"是该助教对该客户的服务次数,还是该客户被所有助教服务的总次数?
**A"首次服务"是指该助教首次服务该客户。"服务总次数"是该助教对该客户的服务次数。**
---
## 四、修改优化建议
### Q4.1 拆分 PRD 为多个模块文档
当前 PRD 是一个巨大的 txt 文件混合了指数算法、页面需求、AI 接口、权限系统、管理后台等完全不同的领域。建议拆分为:
- `prd/指数与算法.md` — 指数定义、计算逻辑、场景映射
- `prd/小程序页面.md` — 每个页面的数据源、交互、权限
- `prd/AI集成.md` — 6 个 AI 应用的输入输出定义
- `prd/权限与用户.md` — 登录、审核、RBAC
- `prd/管理后台扩展.md` — Excel 上传、租户管理
- Q4.1:你是否同意这个拆分方案?有需要调整的吗?
**A对的这个也是我所担心的。
我的开发场景将完全基于 Kiro推进。请按以下规则为我进行任务拆分与文档整理
1、按依赖优先级排序并编号
- 先做基础依赖、公共能力、前置模块;
- 后做依赖其上的功能模块;
- 输出结果需带明确序号(如 P1、P2、P3… 或 1、2、3…
2、按可归属为同一个 SPEC 的任务进行分组
- 将能够归入同一项 SPEC 的相关任务归类到同一份文档中;
- 每组任务应具备清晰边界,避免跨 SPEC 混杂。
3、按顺序支持我逐个创建 SPEC 任务
- 我会按照你给出的顺序,依次创建多个 SPEC由 Kiro 协助完成开发;
- 因此你的拆分结果必须具备明确的执行先后关系和可落地性。
4、表达方式面向 Kiro SPEC 启动与落地
- 文档表述请尽量采用便于启动 Kiro SPEC 的方式撰写;
- 内容应有利于后续生成/整理需求、设计与任务拆解Kiro 的 Specs 通常围绕 requirements、design、tasks 结构展开)。
5、统一放置在单独目录下
- 请将上述拆分后的文档统一整理到一个独立目录中,便于我按顺序创建和管理多个 SPEC。
**
---
### Q4.2 建立数据依赖矩阵
建议建立一个"页面 → 数据表"的依赖矩阵,明确每个页面需要哪些 DWS/DWD 表,哪些已有,哪些需要新建或扩展。
- Q4.2:是否需要我在你回答完 Q&A 后生成这个矩阵?
**A是的在4.1之前生成。或单列为单独任务前的准备工作**
---
### Q4.3 AI 接口的结构化定义
目前 6 个 AI 应用的描述都是散文式的。建议每个应用用统一格式:
- 触发场景
- 输入字段列表(含数据源表)
- 输出字段列表
- 调用频率预估
- Q4.3:是否同意这个格式?
**A同意**
---
### Q4.4 API 密钥不应出现在 PRD 文档中
文档中直接写了阿里云百炼的 `api-key`。这个应该移到 `.env`PRD 只写变量名引用。
- Q4.4:是否同意?我在后续修订时直接移除。
**A同意当前的KEY是临时的帮我将API-KEY放到.env 中,然后在文档中移除。**
---
## 五、缺失的前置依赖
以下按阻塞程度排序,请确认优先级是否合理:
### Q5.1 FDW 映射(阻塞级)
`zqyy_app.fdw_etl` 没有任何外部表,后端无法读取 ETL 数据。需要先建立 FDW 外部表映射 DWS/DWD 关键表。
- Q5.1:是否同意这是第一优先级?
**A是的我同意这个第一优先级的任务。注意我们在开发环境全部使用测试库。**
---
### Q5.2 用户-助教映射机制(阻塞级)
小程序用户登录后,系统需要知道他是哪个助教(或哪个角色)。需要建立映射关系。
- Q5.2:同 Q1.7,确认映射方式后才能设计。
**A这个在前文已经说明使用租户管理后台进行。**
---
### Q5.3 备注表(阻塞级)
任务系统、回访系统、AI 评分都依赖备注数据。
- Q5.3:同 Q1.8,确认数据模型后才能建表。
**A同意这个第一优先级的任务。注意我们在开发环境全部使用测试库。**
---
### Q5.4 任务表重构(阻塞级)
现有 `tasks` 表不适合 PRD 中的助教任务系统。
- Q5.4:同 Q2.3,确认方案后才能实施。
**A同意见上文。**
---
### Q5.5 AI 对话记录表(高优先)
PRD 要求"智能体的信息发送和返回内容都要在数据库中保留"。
- Q5.5:这张表建在 `zqyy_app` 中对吧需要记录哪些字段我的建议conversation_id, message_id, app_id, user_id, role, content, tokens_used, created_at, site_id
**A支持你的建议另外再额外增加 用户昵称,系统的话,昵称为“系统”**
---
### Q5.6 新增 DWS 统计字段/表(高优先)
消费指数、助教流水统计、充值时间窗口统计等。
- Q5.6:这些 DWS 变更是否需要等 ETL 流程稳定后再做?还是可以并行?
**A可以并行现在ETL相对稳定了。**
---
### Q5.7 dws_member_consumption_summary 扩展
补充充值次数/金额的时间窗口字段和次均消费。
- Q5.7:同 Q2.4。
**A见上文同意并支持。**