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}