# P5.1→NS3 缺失项 #2:App2 财务指标计算口径 ## 简要结论 - 状态:✅ 已解决 - 风险等级:🟡 低 - App2 财务洞察的 6 个收入结构字段、items_sum 口径、环比基准均已在 Prompt 模板和后端代码中完整定义。 ## 详细审查 ### 审查范围 - `apps/backend/app/ai/apps/app2_finance.py` — App2 后端实现 - `apps/backend/app/ai/prompts/app2_finance_prompt.py` — App2 Prompt 模板 - `docs/prd/ai-app-prompts.md` — App2 System Prompt - `docs/prd/specs/P5-miniapp-ai-integration.md` — P5 spec 中 App2 首条 Prompt 数据结构 - `apps/backend/app/ai/schemas.py` — App2Result 模型定义 ### 发现 1. **收入结构字段映射(6 个指标)**:`app2_finance_prompt.py` 的 `_build_system_content()` 中明确定义了 `field_mapping`: - `items_sum` = table_charge_money + goods_money + assistant_pd_money + assistant_cx_money + electricity_money - `table_fee` = table_charge_money(台费收入) - `assistant_pd` = assistant_pd_money(陪打费) - `assistant_cx` = assistant_cx_money(超休费) - `goods` = goods_money(商品收入) - `recharge` = 充值 pay_amount(settle_type=5,充值收入) - `electricity` = electricity_money(电费,当前未启用,全为 0) 2. **items_sum 口径规则**:Prompt 模板中 `rules` 数组明确声明: - "统一使用 items_sum 口径计算营收总额" - "助教费用必须拆分为 assistant_pd_money(陪打)和 assistant_cx_money(超休)" - "支付渠道恒等式:balance_amount = recharge_card_amount + gift_card_amount" - "金额单位:元(CNY),保留两位小数" 3. **环比基准**:`_build_period_data()` 构建当期和上期数据结构,包含完整的收入结构、储值资产、费用汇总、平台结算字段。`app2_finance.py` 的 `compute_time_range()` 实现了 8 个时间维度的日期范围计算,为环比分析提供基准。 4. **System Prompt**:`ai-app-prompts.md` 中 App2 的 System Prompt 定义了 3 个技能: - 技能 1:财务趋势分析(历史数据,环比增减幅度) - 技能 2:经营预警与建议(含当前周期) - 技能 3:多维度深度分析(客单价、支付方式、时段分析) 5. **输出 JSON schema**:System Prompt 中强制要求返回 `[{seq, title, content}]` 格式,`schemas.py` 中定义了 `App2InsightItem(seq, title, body)` 和 `App2Result(insights)` Pydantic 模型。 ### 证据 `app2_finance_prompt.py` 中的字段映射: ```python "field_mapping": { "items_sum": ( "table_charge_money + goods_money + assistant_pd_money" " + assistant_cx_money + electricity_money" ), "table_fee": "table_charge_money(台费收入)", "assistant_pd": "assistant_pd_money(陪打费)", "assistant_cx": "assistant_cx_money(超休费)", "goods": "goods_money(商品收入)", "recharge": "充值 pay_amount(settle_type=5,充值收入)", "electricity": "electricity_money(电费,当前未启用,全为 0)", }, ``` `_build_period_data()` 中的完整数据结构(16 个字段): ```python return { "table_charge_money": data.get("table_charge_money", 0), "goods_money": data.get("goods_money", 0), "assistant_pd_money": data.get("assistant_pd_money", 0), "assistant_cx_money": data.get("assistant_cx_money", 0), "electricity_money": data.get("electricity_money", 0), "recharge_income": data.get("recharge_income", 0), # ... 储值资产、费用汇总、平台结算、汇总 } ``` P5 spec 中 App2 收入结构字段映射(已校准): > `table_fee` = `table_charge_money`(56.6%)、`assistant_pd` = `assistant_pd_money`(30.6%)、`assistant_cx` = `assistant_cx_money`(0.9%)、`goods` = `goods_money`(10.1%)、`recharge` = 充值 pay_amount(settle_type=5)