x

Agent-05 财务与月度分析

版本: v1.0
概述: 月度财务分析、经营健康度诊断及预警推送

1. Agent职责

维度 说明
核心模块 月度收入/库存/应收应付/经营健康度仪表盘
执行频率 日报/周报/月报
推送渠道 企业微信 / 钉钉 / 邮件

2. 月度收入分析SQL

-- 月度收入分析
WITH monthly_data AS (
    SELECT 
        toStartOfMonth(order_date) AS month,
        SUM(total_amount) AS gross_sales,
        SUM(total_amount * (1 - discount_rate)) AS net_sales,
        SUM(cost_amount) AS total_cost,
        (net_sales - total_cost) AS gross_profit,
        (net_sales - total_cost) / NULLIF(net_sales, 0) * 100 AS gross_margin_pct
    FROM sales_order
    WHERE order_date >= toStartOfMonth(addMonths(today(), -12))
      AND order_status NOT IN ('cancelled', 'returned')
    GROUP BY toStartOfMonth(order_date)
),
expense_data AS (
    SELECT 
        toStartOfMonth(expense_date) AS month,
        SUM(amount) AS total_expense,
        SUM(CASE WHEN expense_type = 'rent' THEN amount ELSE 0 END) AS rent_expense,
        SUM(CASE WHEN expense_type = 'salary' THEN amount ELSE 0 END) AS salary_expense
    FROM expense_record
    WHERE expense_date >= toStartOfMonth(addMonths(today(), -12))
    GROUP BY toStartOfMonth(expense_date)
)
SELECT 
    m.month,
    m.gross_sales,
    m.net_sales,
    m.gross_profit,
    m.gross_margin_pct,
    (m.gross_profit - e.total_expense) AS net_profit,
    (m.gross_profit - e.total_expense) / NULLIF(m.net_sales, 0) * 100 AS net_margin_pct,
    e.total_expense,
    e.total_expense / NULLIF(m.net_sales, 0) * 100 AS expense_ratio_pct
FROM monthly_data m
LEFT JOIN expense_data e ON m.month = e.month
ORDER BY m.month DESC;

3. 月度库存分析SQL

-- 库存周转分析
WITH sales_data AS (
    SELECT 
        toStartOfMonth(ship_date) AS month,
        SUM(cost_amount) AS cogs
    FROM sales_order_detail
    WHERE ship_date >= toStartOfMonth(addMonths(today(), -12))
    GROUP BY toStartOfMonth(ship_date)
),
avg_inventory AS (
    SELECT 
        toStartOfMonth(trans_date) AS month,
        AVG(end_of_month_inventory_value) AS avg_inventory_value
    FROM inventory_transaction
    WHERE trans_date >= toStartOfMonth(addMonths(today(), -12))
    GROUP BY toStartOfMonth(trans_date)
)
SELECT 
    s.month,
    a.avg_inventory_value,
    s.cogs,
    a.avg_inventory_value / NULLIF(s.cogs / 30, 0) AS inventory_turnover_days,
    s.cogs / NULLIF(a.avg_inventory_value, 0) AS inventory_turnover_rate
FROM sales_data s
LEFT JOIN avg_inventory a ON s.month = a.month
ORDER BY s.month DESC;

4. 应收账款账龄SQL

-- 应收账款账龄分析
SELECT 
    c.customer_code,
    c.customer_name,
    SUM(CASE WHEN due_days <= 0 THEN outstanding_amount ELSE 0 END) AS not_due_amount,
    SUM(CASE WHEN due_days BETWEEN 1 AND 30 THEN outstanding_amount ELSE 0 END) AS overdue_1_30,
    SUM(CASE WHEN due_days BETWEEN 31 AND 60 THEN outstanding_amount ELSE 0 END) AS overdue_31_60,
    SUM(CASE WHEN due_days BETWEEN 61 AND 90 THEN outstanding_amount ELSE 0 END) AS overdue_61_90,
    SUM(CASE WHEN due_days > 90 THEN outstanding_amount ELSE 0 END) AS overdue_90_plus,
    SUM(outstanding_amount) AS total_outstanding
FROM (
    SELECT 
        ar.customer_id,
        ar.invoice_amount,
        ar.paid_amount,
        ar.outstanding_amount,
        toDate(ar.due_date) - today() AS due_days
    FROM ar_record ar
    WHERE ar.outstanding_amount > 0
) t
JOIN customer_master c ON t.customer_id = c.customer_id
GROUP BY c.customer_code, c.customer_name
ORDER BY total_outstanding DESC
LIMIT 50;

5. 经营健康度仪表盘

核心KPI指标

维度 指标 健康区间
盈利能力 毛利率 >25%
盈利能力 净利率 >10%
运营效率 库存周转天数 <60天
运营效率 应收账款周转天数 <45天
财务安全 流动比率 >1.5
费用控制 费用率 <15%
成长性 收入增长率 >10%

综合健康度评分

健康度总分 = 盈利能力得分×30% + 运营效率得分×25% + 财务安全得分×25% + 成长性得分×20%

各维度得分 = MIN(100, MAX(0, (实际值 - 最低值) / (最高值 - 最低值) × 100))

6. 报告模板

📊 【{门店名称}】{月份}经营健康度仪表盘

━━━━━━━━━━━━━━━━━━━━
🎯 综合健康度评分
━━━━━━━━━━━━━━━━━━━━
综合得分:{total_score:.0f}/100

• 盈利能力:{profit_score:.0f}/100
• 运营效率:{operation_score:.0f}/100
• 财务安全:{safety_score:.0f}/100
• 成长性:{growth_score:.0f}/100

━━━━━━━━━━━━━━━━━━━━
📊 核心KPI
━━━━━━━━━━━━━━━━━━━━
毛利率 {gm:.1f}% | 净利率 {nm:.1f}% | 费用率 {er:.1f}%
库存周转 {inv_days:.0f}天 | 应收周转 {ar_days:.0f}天 | 流动性 {cr:.1f}
Left-click: follow link, Right-click: select node, Scroll: zoom
x