文档

jackyshen-gen-quotation

试用

生成专业PDF报价单、培训提案和商业文档。当用户提及报价单、报价、提案、培训方案、商业文档、生成PDF,或提供培训服务、咨询费用、定价详情时触发。支持中英文内容。

它能做什么

生成专业PDF报价单、培训提案和商业文档。当用户提及报价单、报价、提案、培训方案、商业文档、生成PDF,或提供培训服务、咨询费用、定价详情时触发。支持中英文内容。

技能文档

报价单 & 商业文档生成器

从自然语言、Markdown 或结构化数据生成品牌一致、风格专业的 PDF 报价单和培训提案。 始终使用 scripts/render_quotation.py 中的 Python 脚本,不要重写 Node.js 或 JavaScript 脚本。 Usage: python scripts/render_quotation.py output/quotation_data.json templates/modern/quotation.html output/quotation.pdf 中间渲染模版文件和最终输出都必须在当前工作路径下的 ./output

核心流程

用户输入(自然语言 / Markdown / 结构化数据)
                ↓
    LLM 结构化提取
                ↓
  QuoteDocument Schema (Pydantic)
                ↓
     Jinja2 模板渲染
                ↓
        HTML 输出
                ↓
      Playwright PDF
                ↓
        PDF 输出

品牌主题:UPerform

主色: #083A67(深海蓝 Navy) 辅色: #4F82BA(钢蓝 Steel Blue) 点缀色: #FFFFFF(白色 White) 背景色: #FFFFFF(白色)

Logo 位置:页面右上角

步骤一 — 识别文档类型

根据原始输入自动判断生成的类型,如果不确定,询问用户:"请确认文档类型"

类型"doc_title"值关键字段
quotation"报价单 / Quotation"customer_company, pricing_items, total, payment_terms
outline"培训大纲 / Outline"outline, modules, objectives
mixed"培训方案及报价 / Proposal"两者兼有

不明确时,默认为 mixed

步骤二 — 收集信息

按顺序收集以下字段,如有缺失请询问用户。

任何类型都要有的必需信息

  1. 我司信息

    • 公司名称 company_name ("优普丰AI敏捷创新管理咨询")
    • 地址 company_address ("Room A2207, 333 Suhong Road, Minhang District, Shanghai")
    • 电话 company_tel ("+86-21-6380-9913")
    • 邮箱 company_email ("service@uperform.cn")
    • 口号 company_slogan ("Your AI & Agile Organization Performance Partner")
    • 品牌 logo_path(默认填 logo.png,脚本会自动在 skill 目录下查找)
  2. 客户信息

    • 客户名称 customer_name
    • 联系人 contact_person (可选)
  3. 文档信息

    • 文档标题 doc_title
    • doc_type: "quotation"(必须显式声明)
    • 日期 quotation_date (YYYY/M/D)

quotation类型特有的必需信息

  1. 文档信息
    • 报价单号 quotation_no (格式: QL-YYYYMMDD-序号)
  2. 报价项目 (至少1项)
    • 服务名称 service_name
    • 单价 unit_price (CNY)
    • 数量 quantity
    • 单位 unit (天/人/次/项)
    • 分类 category: training | travel | interview | consulting | material | other
  3. 汇总信息
    • 小计 subtotal
    • 税率 tax_rate (如: 6%)
    • 税费 tax_amount
    • 总计 total_amount
    • 币种 currency (默认 CNY)
    • 含税否 tax_included (可选)
  4. 付款条款
    • 付款方式 payment_method (可选)
    • 付款阶段 payment_schedule (可选)
  5. 有效期
    • 有效至 valid_until (默认为当前日期之后的第90天)
  6. 签章信息
    • 账户名称 account_name "上海优普丰企业管理有限公司"
    • 开户行 bank_name "第一银行南京路支行"
    • 银行账号 account_number "0000"
  7. 备注
    • Please keep the discounted price confidentially to any third party.
    • 此优惠价请对第三方高度保密。
    • 常规培训时间: 9:00am-5:00pm, 1.5小时午餐休息。
    • Regular duration: 9:00am to 5:00pm with 1.5 hour lunch break on each days.
    • 该报价单覆盖了教材费等费用。
    • Quotation covers course materials etc.

outline类型的必需信息

  1. 课程大纲 (CourseOutline) — 课程标题 title
    • modules[]
    • learning_objectives[]
    • target_audience[]

可选字段

  • 备注 notes[]
  • 品牌配置 branding{logo_path: 填 logo.png 即可,脚本会自动在 skill 目录下查找, primary_color, secondary_color, accent_color}

步骤三 — 按 QuoteDocument Schema 组织数据

输出必须匹配以下 Schema 的结构化 JSON:

QuoteDocument:
  company: CompanyInfo         # 供方信息
  customer: CustomerInfo       # 需方信息
  quotation: QuotationInfo     # 文档基本信息
  doc_type: str               # "quotation" | "outline" | "mixed" — 控制模板条件渲染
  pricing_items: list[PricingItem]  # 报价明细(doc_type != "outline" 时显示)
  pricing_summary: PricingSummary  # subtotal, tax_rate, tax_amount, total_amount, currency, tax_included
  payment_terms: PaymentTerms  # 付款条款
  tax: TaxInfo                # 税费
  validity: ValidityInfo      # 有效期
  outline: CourseOutline | None  # 课程大纲(doc_type != "quotation" 时显示)
  notes: list[str] = []      # 备注
  signature: SignatureInfo   # 签章信息(doc_type != "outline" 时显示)
  branding: BrandingConfig   # 品牌配置

PricingItem

PricingItem:
  category: str       # training | travel | interview | consulting | material | other
  service_name: str  # 服务名称
  unit_price: float  # 单价
  quantity: float    # 数量
  unit: str          # 天/人/次/项
  days: float | None # 天数(可选)
  subtotal: float    # 小计
  remarks: str | None # 备注(可选)

CourseOutline (可选)

CourseOutline:
  title: str
  modules: list[CourseModule]
  learning_objectives: list[str] = []
  target_audience: list[str] = []

CourseModule:
  module_title: str
  duration: str | None  # 如 "2小时"
  topics: list[str]
  exercises: list[str] = []

CompanyInfo

CompanyInfo:
  name: str           # 公司名称
  address: str        # 地址
  tel: str            # 电话
  email: str | None   # 邮箱(可选)
  slogan: str | None  # 口号(可选)

CustomerInfo

CustomerInfo:
  name: str                 # 客户名称
  contact_person: str | None  # 联系人(可选)

PricingSummary

PricingSummary:
  subtotal: float     # 小计
  tax_rate: float     # 税率(默认 0)
  tax_amount: float   # 税费(默认 0)
  total_amount: float # 总计(必填,模板依赖此字段)
  currency: str       # 币种(默认 "CNY")
  tax_included: bool  # 含税否(默认 false)

PaymentTerms

PaymentTerms:
  payment_method: str | None   # 付款方式(如"银行转账")
  payment_schedule: str | None # 付款阶段(如"课程结束后结算")

ValidityInfo

ValidityInfo:
  valid_until: str  # 有效期,格式 YYYY/M/D(默认当前日期+90天)

SignatureInfo

SignatureInfo:
  account_name: str  # 账户名称
  bank_name: str     # 开户行
  account_number: str # 银行账号

BrandingConfig

BrandingConfig:
  logo_path: str  # 填 "logo.png",脚本自动在 skill 目录下查找
  primary_color: str   # 主色(默认 #083A67)
  secondary_color: str # 辅色(默认 #4F82BA)
  accent_color: str    # 点缀色(默认 #FFFFFF)

步骤四 — Jinja2 渲染为 HTML → PDF

使用 Jinja2 模板方式。禁止 LLM 直接生成 HTML。

模板路径: templates/modern/quotation.html 渲染后的模版路径: output/quotation_output.html

模板使用 UPerform 品牌主题:

  • 页眉:深海蓝 (#083A67) + 白色背景
  • 强调线:深海蓝 (#083A67)
  • Logo:右上角
  • 客户区域:白色背景 + 深海蓝边框
  • 备注区域:白色背景 + 深海蓝边框
  • 银行账户区域:白色背景 + 深海蓝边框
  • 所有文字:黑色 (#1a1a1a) + 白色背景
  • 字体:宋体 (SimSun) 用于中文
  • 内容区域:左右各 20% 边距

核心规则: LLM 输出 JSON → JSON 传入 Jinja2 → Jinja2 生成 HTML → Playwright 渲染 PDF。LLM 绝不直接写 HTML。

步骤五 — 输出格式

默认输出:PDF 文件,通过 Playwright page.pdf() 生成。

仅预览 HTML 时,使用 html 输出。

快速开始模板

当用户说"生成报价单"或类似内容时,回复:

好的,我来帮您生成专业报价单。

请提供以下信息(可以一次性全部提供,也可以逐项回答):

1. **客户信息** — 客户名称、公司名
2. **服务项目** — 培训/咨询内容、人数、天数、单价
3. **文档标题** — 报价单标题
4. **报价日期** — YYYY/M/D
5. **付款信息** — 银行账户信息(可选)

分类参考

category中文示例
training培训讲师授课、培训课程
travel差旅讲师差旅、交通住宿
interview访谈前期调研、访谈
consulting咨询咨询服务、顾问费
material材料教材、设计物料
other其他其他费用

文档类型条件渲染

模板根据 doc_type 字段决定显示哪些区块:

字段quotationoutlinemixed
报价明细 pricing_items
银行账户 signature
课程大纲 outline
备注 notes

示例结构

quotation 类型:

公司: 上海优普丰企业管理有限公司
客户: 第一食品公司
日期: 2026/5/28
doc_type: "quotation"

报价项目:
| 项目 | 时长 | 人数 | 单价 | 小计 |
|------|------|------|------|------|
| 变革管理敏捷项目培训 | 2天 | 30人以内 | 45,000.00/天 | 90,000.00 |
| 课前访谈调研(线上) | 0.5天 | — | — | 10,000.00 |
| 讲师差旅 | 2天 | — | — | 10,000.00 |

共计: 110,000.00 CNY

备注:
- 培训时间: 9:00am-5:00pm, 1.5小时午餐
- 报价含讲师差旅、课程费、教材费等


outline 类型:

公司: 上海优普丰企业管理有限公司
客户: 第一食品公司
日期: 2026/5/28
doc_type: "outline"

课程目标:
1. 破冰融合——通过互动活动,促进ABC项目组跨职能成员相互认识、建立信任
2. 激活知识——基于ABC项目真实场景,演练敏捷项目管理工具
3. 建立共识——运用ADKAR变革管理模型,识别项目当前所处阶段

课程大纲:
模块一:第一天:敏捷项目管理实战演练(9:00-17:00)
- 开场与破冰
- 项目挑战共识
- 敏捷项目管理框架回顾
...

模块二:第二天:变革管理与项目推进共识(9:00-16:00)
...

重要原则

  1. LLM 输出 JSON,不输出 HTML — 样式全部由模板控制
  2. Schema 是数据源 — 所有输入必须映射到 QuoteDocument
  3. doc_type 控制条件渲染 — 必须显式声明 "quotation" | "outline" | "mixed",模板据此显示/隐藏对应区块
  4. 品牌一致性 — Logo 右上角、深蓝页眉、蓝色点缀。logo_pathlogo.png 即可,脚本会自动在 skill 目录下查找。
  5. 中英双语 — 单文档支持中文和英文
  6. PDF 是最终输出 — 使用 Playwright 将 HTML 转为 PDF
  7. 禁止直接注入 CSS — 所有样式来自模板
  8. 报价默认是不含税 - 不要主动增加税,或在备注里提到是否含税、税率、税额等任何税务相关信息。但如果用户明确要求含税报价,则:
    • 设置 pricing_summary.tax_included = true
    • 填入 pricing_summary.tax_rate(如 6,表示 6%)和 pricing_summary.tax_amount
    • 模板会自动在「报价项目」表格之后、总计行之前,渲染两行:税率 / Tax Rate、税费 / Tax Amount
    • 税前金额 = 各 pricing_items 小计之和(即 subtotal),税后金额 = 总计行(已显示)
    • 税务信息只能出现在金额汇总表格中,禁止写入 REMARKS / 备注段落

错误处理

  • 缺少必填字段 → 明确询问用户
  • 分类不明确 → 请用户确认分类
  • 模板缺失 → 回退到基础 HTML 结构
  • 解析失败 → 展示原始文本并请用户修正

相关技能

Generates client-ready, single-page HTML proposals for freelancers, solo consultants, and small studios. This skill should be used when a user wants to create a polished sales proposal, quote, or pitch document to send to a client. Triggered by requests like 帮我写个接单提案, 给客户做个报价单, 生成服务方案书, or 做个能发给甲方的方

Generate PowerPoint presentations via GoAI API. Use when the user asks to create, generate, make, or build PPT, slides, presentations, including Chinese requ...

19 次安装

用提示词生成专业 PDF 与 DOCX 文档——涵盖简历、合同、报告、方案等多种类型。

146 次安装6 星标

Generate polished Chinese R&D weekly reports from recent work logs, chat history, commit notes, or development notes. Use when the user asks to 生成、整理、润色、汇总本周...

1 次安装

Automatically convert tender documents (PDF/Word) into professional response bid documents following Chinese bidding standards. Use when the user needs to cr...

1 次安装

知识库驱动的高管/职场汇报 PPT 生成器。用于将用户的零散知识库资料(工作记录、项目文档、会议纪要、复盘材料、数据表格、图片素材等)转化为面向职场场景的高质量汇报型 PPT。覆盖用例: 述职, 转正, 晋升答辩, 年终总结, 项目立项/汇报/复盘, 方案汇报, 资源申请, 部门规划, 改善汇报, 管理决策汇报。核心原则: 不直接套模板, 不一上来就生成 PPT;先澄清目标, 形成 SPEC, 确认大纲, 再生成 PPTX。当用户需要制作职场汇报类 PPT 时自动触发。

1 星标