# 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）
