用途:从 Zoho Billing 报表中组装留存队列,分为两类——预流失(仍活跃但计划在周期末取消的未续订订阅)与后流失(最近 7 天内已取消、可做挽回的订阅)。
主要能力:输出统一字段,包括 subscription_id、customer_id、customer_name、plan_code、plan_name、mrr(按年÷12、季÷3 归一为月)、currency、country(缺失记 Unknown)、cancel_reason_raw(原文,后续由分类器分桶)、cancellation_date(预流失为计划结束日,后流失为实际取消日)、ltv(缺失默认 0 并标记 ltv_unavailable: true)、ltd(缺失时由 activated_at 计算,两者都缺则 0 并标记 ltd_unavailable: true)、cohort(pre_churn 或 post_churn)。
使用方式:先确认会话中已启用 ZohoBilling_get_non_renewing_subscriptions_report、ZohoBilling_get_churned_subscriptions_report、ZohoBilling_list_organizations 三个工具,缺失则提示用户在 Settings → Connectors → Zoho Billing 中启用后重试。获取 org ID(多个时询问,不猜测)。预流失报表参数 from_date 为今天、to_date 为今天+30;后流失报表 from_date 为今天-7、to_date 为今天;均用 per_page: 100 并按 has_more_page 分页。将行规范化为上述 schema,取消原因缺失传空字符串。输出写入 <workspace>/retention-runs/<YYYY-MM-DD>/cohort-<pre_churn|post_churn>.json,并打印一行摘要(订阅数、风险 MRR 总额)与 10 行预览表,标注 ltv_unavailable / ltd_unavailable 行。
限制与边界:空队列需明确说明,未经询问不得扩大时间窗;同一订阅同时出现在两类时按 subscription_id 去重并保留后流失;非按月计费需归一或标记;取消原因缺失传空字符串,由分类器归为 unknown。