返回顶部
r

report-generator报告生成器

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
232
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

report-generator

报告生成器技能

自动化完整的报告生命周期:数据提取 → 格式化 → 图表生成 → PDF渲染 → 分发。



核心能力

1. 财务报告类型

报告频率主要受众
损益表(利润表)月度/季度CEO、董事会
资产负债表
月度/季度 | CEO、投资者 | | 现金流量表 | 每周/月度 | CFO、运营部 | | 应收账款/应付账款账龄汇总 | 每周 | 应收账款团队、财务总监 | | 预算与实际差异分析 | 月度 | 部门负责人 | | KPI仪表盘 | 每周/月度 | 所有高管 | | 客户盈利能力报告 | 月度/季度 | 合伙人 | | 薪资汇总 | 每次发薪 | 人力资源部、财务部 |

2. 业务报告

  • - 运营报告 — 员工人数、利用率、生产力指标
  • 销售管道报告 — 漏斗阶段、转化率、预测收入
  • 费用分析 — 类别细分、趋势线、异常标记
  • 供应商支出报告 — 主要供应商、支出趋势、合同合规性
  • 项目盈利能力 — 每个项目的预算与实际对比

工作流程

步骤 1:数据收集

识别源系统并提取原始数据:

bash

QuickBooks导出(CSV)


通过QBO技能或从客户门户手动拉取


来源:reports/raw/2026-03-pl-raw.csv

Google Sheets来源

gog sheets read --id SHEET_ID --range P&L!A1:Z100 > reports/raw/pl-data.json

SQL/数据库来源

sqlite3 db.sqlite SELECT * FROM transactions WHERE period=2026-02 > raw.csv

步骤 2:数据处理

python

scripts/process_pl.py


import csv, json
from collections import defaultdict

def processpl(inputcsv, period):
将损益表原始数据处理为结构化格式。
categories = defaultdict(float)

with open(input_csv) as f:
reader = csv.DictReader(f)
for row in reader:
categories[row[Category]] += float(row[Amount] or 0)

revenue = sum(v for k, v in categories.items() if Revenue in k or Income in k)
cogs = sum(v for k, v in categories.items() if COGS in k or Cost of in k)
gross_profit = revenue - cogs
expenses = sum(v for k, v in categories.items() if k not in [Revenue, COGS])
netincome = grossprofit - expenses

return {
period: period,
revenue: revenue,
cogs: cogs,
grossprofit: grossprofit,
grossmargin: (grossprofit / revenue * 100) if revenue else 0,
expenses: expenses,
netincome: netincome,
netmargin: (netincome / revenue * 100) if revenue else 0,
categories: dict(categories)
}

步骤 3:图表生成

python

scripts/generate_charts.py


import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import numpy as np

def revenuetrendchart(datapoints, outputpath):
生成收入趋势折线图。
periods = [d[period] for d in data_points]
revenues = [d[revenue] for d in data_points]

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(periods, revenues, b-o, linewidth=2, markersize=8)
ax.fill_between(periods, revenues, alpha=0.1)
ax.yaxis.setmajorformatter(mticker.FuncFormatter(lambda x, _: f${x:,.0f}))
ax.set_title(收入趋势, fontsize=14, fontweight=bold)
ax.set_xlabel(期间)
ax.set_ylabel(收入)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig(outputpath, dpi=150, bboxinches=tight)
plt.close()
return output_path

def expensebreakdownchart(categories, output_path):
生成费用类别饼图。
expense_cats = {k: v for k, v in categories.items()
if v > 0 and Revenue not in k and Income not in k}

labels = list(expense_cats.keys())
values = list(expense_cats.values())

fig, ax = plt.subplots(figsize=(8, 8))
wedges, texts, autotexts = ax.pie(
values, labels=labels, autopct=%1.1f%%,
startangle=90, pctdistance=0.85
)
ax.set_title(费用细分, fontsize=14, fontweight=bold)
plt.tight_layout()
plt.savefig(outputpath, dpi=150, bboxinches=tight)
plt.close()
return output_path

def variancebarchart(budgetvsactual, output_path):
生成预算与实际差异对比图。
categories = list(budgetvsactual.keys())
budgets = [budgetvsactual[c][budget] for c in categories]
actuals = [budgetvsactual[c][actual] for c in categories]

x = np.arange(len(categories))
width = 0.35

fig, ax = plt.subplots(figsize=(12, 6))
bars1 = ax.bar(x - width/2, budgets, width, label=预算, color=steelblue)
bars2 = ax.bar(x + width/2, actuals, width, label=实际, color=coral)

ax.set_title(预算 vs 实际, fontsize=14, fontweight=bold)
ax.set_xticks(x)
ax.set_xticklabels(categories, rotation=45, ha=right)
ax.yaxis.setmajorformatter(mticker.FuncFormatter(lambda x, _: f${x:,.0f}))
ax.legend()
ax.grid(True, alpha=0.3, axis=y)
plt.tight_layout()
plt.savefig(outputpath, dpi=150, bboxinches=tight)
plt.close()
return output_path

步骤 4:PDF生成

python

scripts/generate_pdf.py


需要:pip install reportlab pillow

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, Image, PageBreak
)
from reportlab.lib.enums import TACENTER, TARIGHT
from datetime import datetime

def generateplreport(data, chartpaths, outputpath, company_name=PrecisionLedger客户):
生成完整的损益表PDF报告。
doc = SimpleDocTemplate(
output_path,
pagesize=letter,
rightMargin=0.75*inch,
leftMargin=0.75*inch,
topMargin=0.75*inch,
bottomMargin=0.75*inch
)

styles = getSampleStyleSheet()

# 自定义样式
title_style = ParagraphStyle(
Title, parent=styles[Title],
fontSize=20, textColor=colors.HexColor(#1a1a2e),
spaceAfter=6
)
subtitle_style = ParagraphStyle(
Subtitle, parent=styles[Normal],
fontSize=11, textColor=colors.HexColor(#666666),
spaceAfter=20, alignment=TA_CENTER
)
section_style = ParagraphStyle(
Section, parent=styles[Heading2],
fontSize=13, textColor=colors.HexColor(#1a1a2e),
spaceBefore=16, spaceAfter=8,
borderPad=4
)

story = []

# 页眉
story.append(Paragraph(companyname, titlestyle))
story.append(Paragraph(
f损益表 — {data[period]}, subtitle_style
))
story.append(Paragraph(
f生成日期:{datetime.now().strftime(%Y年%m月%d日)},
ParagraphStyle(gen_date, parent=styles[Normal],
fontSize=9, textColor=colors.grey, alignment=TA_CENTER)
))
story.append(Spacer(1, 0.25*inch))

# 关键指标汇总表
story.append(Paragraph

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 pl-report-generator-1776071892 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 pl-report-generator-1776071892 技能

通过命令行安装

skillhub install pl-report-generator-1776071892

下载

⬇ 下载 report-generator v1.0.0(免费)

文件大小: 6.13 KB | 发布时间: 2026-4-15 13:54

v1.0.0 最新 2026-4-15 13:54
Initial release: financial and business report automation with PDF generation, chart creation, and distribution workflows for accounting firms

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部