使用指引
这是一份面向业务用户的产品手册。轻管报用于把上游事实数据、配置表版本和计算流程组合起来,生成可追溯的收入、费用和利润表结果,并输出面向业务用户的结果表。
产品定位
核心目标把月度管报流程线上化
减少手工合并表格、复制公式和反复核对口径。
业务主题收入、费用、利润表
每个主题都有事实表、配置表、计算流程、结果和导出。
管理维度主数据管理
组织、区域、产品和责任归属用于费用分摊、利润核算和结果筛选。
扩展方向更多经营模块
后续库存、成本、产量、人效等模块会沿用同一套结构。
演示样例数据
项目内置了一套最小演示文件,适合空环境演示系统动线。文件位于 data/demo/。
| 文件 | 用途 | 使用页面 |
|---|---|---|
| 收入事实表_演示样例.csv | 演示收入/加工费事实数据导入。 | 管理后台:数据源 |
| 费用事实表_演示样例.csv | 演示费用事实表导入和分摊。 | 管理后台:费用规则 |
| 利润表模板_演示样例.csv | 演示利润表模板应该包含哪些行项目。 | 管理后台:利润模板 |
推荐操作流程
V2.0 的使用方式分成三段:管理后台先准备主数据、事实数据和规则,工作台发起任务,用户前台查看和交付结果。
管理后台准备期间和数据
在“期间、数据源、主数据、配置表”中切换期间、导入事实数据和维护管理口径。
管理后台准备规则和模板
在“流程、费用规则、利润模板”中维护收入计算、费用分摊和利润表口径。
工作台发起本期任务
在“任务中心”按顺序发起收入计算、费用分摊和利润表生成。
用户前台查看结果
在“收入结果、费用结果、利润表”中查看明细、异常和历史版本。
用户前台生成交付版
在“导出中心”勾选业务用户需要的字段,生成可下载、可归档的结果表。
管理后台复核与追溯
在“日志”和各结果页中追溯事实表、流程、配置表版本和运行记录。
V2.0 菜单结构
系统按使用角色划分为工作台、用户前台和管理后台,但仍保持一套数据底座,避免前后台数据不一致。
| 工作区 | 面向对象 | 包含页面 | 使用原则 |
|---|---|---|---|
| 工作台 | 日常操作者 | 任务中心 | 只负责发起任务和查看本期状态,不维护规则。 |
| 用户前台 | 结果查看和交付人员 | 收入结果、费用分摊结果、利润表、导出中心 | 少展示配置细节,多展示可阅读、可下载、可追溯结果。 |
| 管理后台 | 规则和数据维护人员 | 期间、数据源、主数据、配置表、计算流程、费用规则、利润模板、日志 | 集中维护主数据、规则、版本、流程和运行记录。 |
页面说明
| 页面 | 主要用途 | 怎么使用 | 注意事项 |
|---|---|---|---|
| 期间管理 | 管理财务期间,作为月度计算工作的顶层容器。 | 创建、切换、完成、封存、重新打开期间。 | 封存或归档期间只允许查看、下载和追溯。 |
| 任务中心 | 发起正式任务。 | 收入计算、费用分摊、利润表生成都从这里发起。 | 工作台不维护规则,避免日常操作和后台配置混在一起。 |
| 数据源 | 导入事实数据,管理已导入批次。 | 选择文件后导入;在列表中可预览、下载、删除。 | 导入时不强制字段校验,系统尽量保留原始表头。 |
| 主数据 | 维护组织、区域、产品和责任归属等管理维度。 | 可手工新增,也可通过 CSV/XLSX 批量导入。 | 主数据会用于本期匹配检查、收入导出筛选和利润表维度展开。 |
| 配置表 | 管理参与计算和匹配的配置表。 | 先新增配置表类型,再在该类型下新增配置表版本。 | 明细数据通过弹窗查看;删除版本只影响当前版本。 |
| 流程 | 定义计算流程和步骤顺序。 | 选择流程,在步骤管理中新增、编辑、上移、下移、删除步骤。 | 流程只绑定配置表类型;正式运行时再选择具体版本。 |
| 收入结果 | 查看收入完整计算明细和异常。 | 选择结果批次后查看结果;可删除当前结果。 | 这里是回溯表,字段较多,不建议直接作为业务交付表。 |
| 费用规则 | 维护费用事实表和分摊规则。 | 导入费用文件、创建分摊规则、查看费用流程。 | 属于管理后台,不展示费用结果明细。 |
| 费用结果 | 查看费用分摊结果。 | 预览、下载、追溯分摊结果。 | 属于用户前台,不维护费用规则。 |
| 利润模板 | 维护利润表模板。 | 维护行项目、取数来源、计算公式和展示顺序。 | 属于管理后台,不生成利润表。 |
| 利润表 | 查看利润表结果。 | 查看利润表概览、管理维度展开、行项目和历史版本。 | 属于用户前台,不维护模板。 |
| 导出中心 | 生成面向业务用户的结果表。 | 勾选需要展示的字段,可按组织、区域、产品筛选后生成导出版本。 | 历史导出会保留筛选口径,可按批次回看和下载。 |
| 日志 | 查看系统运行记录。 | 用于追溯导入、计算、合并、异常和下载文件。 | 适合排查某次运行是否成功。 |
核心概念
| 概念 | 含义 | 例子 |
|---|---|---|
| 事实表 | 每次计算的业务流水数据,通常来自上游系统。 | SAP 月度流水、决算系统数据、费用台账。 |
| 业务主题 | 一类完整的业务计算模块。 | 收入、费用、利润表;未来可扩展库存、成本、产量、人效。 |
| 主数据 | 系统统一维护的管理维度口径。 | 组织、区域、产品、责任归属。 |
| 配置表类型 | 一类可复用配置表的定义。 | 物料主数据、难度系数表、单台加工费表、损益交货量表。 |
| 配置表版本 | 某个配置表类型下的一份具体数据。 | 物料主数据 v_20260518_175940。 |
| 计算流程 | 由多个步骤组成的计算方案。 | 标准流程1:先匹配物料主数据,再计算字段,再匹配系数表。 |
| 步骤 | 流程中的一个动作。一个步骤只做一件事。 | 新增字段 / 合并,新增字段 / 计算,修改字段 / 计算。 |
| 计算结果 | 系统运行后生成的完整明细,包含业务字段、命中状态和异常原因。 | 用于复核和追溯。 |
| 费用分摊 | 把费用事实表按照配置规则分摊到组织、产品、项目等对象。 | 按收入、数量、工时、固定比例或多级规则分摊。 |
| 利润表 | 把收入结果、费用结果和调整项汇总成管理利润表。 | 用于汇报、经营分析和绩效复盘。 |
| 导出中心 | 从计算结果中挑选字段后生成的业务交付表。 | 用于汇报、传阅和归档。 |
利润表模板
| 配置项 | 说明 | 示例 |
|---|---|---|
| 展示顺序 | 决定利润表行项目的展示位置。 | 1、2、3... |
| 行项目编码 | 公式引用时使用的英文编码,建议稳定不频繁修改。 | revenue_total、gross_profit。 |
| 行项目名称 | 展示给业务用户看的中文名称。 | 主营收入、直接费用、经营利润。 |
| 行类型 | 决定这一行的业务含义和取数方式。 | 收入行、成本行、费用行、小计行、利润行。 |
| 计算公式 | 小计行和利润行可以引用前面的行项目编码;收入行、成本行、费用行通常自动取数。 | num(revenue_total) - num(cost_total) |
费用分摊规则
| 配置部分 | 用途 | 填写方式 | 例子 |
|---|---|---|---|
| 适用范围 | 决定这条规则处理哪些费用行。 | 可按费用项目、费用类型,或某个字段等于某个值来限定;都不填则适用全部费用。 | 费用类型=直接费用;成本中心=CC01。 |
| 平均分摊 | 把费用金额平均分到基础结果的每一行。 | 不需要权重字段。 | 无明确权重的小额费用临时分摊。 |
| 按收入占比分摊 | 按收入或加工费金额字段作为权重分摊。 | 可不选字段,系统优先识别收入金额、加工费CNY等字段。 | 销售费用按收入占比分摊。 |
| 按数量分摊 | 按交货量、损益交货量等数量字段作为权重分摊。 | 可不选字段,系统优先识别损益交货量、交货数量。 | 物流费按交货数量分摊。 |
| 按工时分摊 | 按标准工时或工时字段作为权重分摊。 | 可不选字段,系统优先识别标准工时。 | 制造费用按标准工时分摊。 |
| 固定比例分摊 | 按工厂、部门、产品线等固定比例分摊。 | 填写固定比例字段,再逐行填写“取值=比例”。 | F001=0.6,F002=0.4。 |
| 按自定义字段分摊 | 按用户指定的任意数值字段作为权重分摊。 | 必须选择或填写一个权重字段。 | 按难度系数、人数、面积等字段分摊。 |
| 输出对象 | 决定费用结果保留哪些业务维度,便于利润表和经营分析追溯。 | 用逗号填写目标字段。 | factory_code, material_code, project_name。 |
配置表与流程设置
| 问题 | 说明 |
|---|---|
| 配置表字段从哪里来? | 来自上传的配置表版本。系统会读取表头,并在页面中优先展示中文字段名。 |
| 匹配字段怎么出现? | 选择配置表类型后,系统只展示左侧数据源和当前配置表都存在的字段。 |
| 输出字段怎么出现? | 输出字段来自当前配置表中未作为匹配字段的字段,用于把配置表中的业务属性带入结果。 |
| 第一步可以匹配什么? | 第一步左侧数据源是事实表,用事实表字段去匹配配置表字段。 |
| 后续步骤可以匹配什么? | 后续步骤左侧数据源是上一步结果,因此可以使用前面步骤已经带出的字段继续匹配。 |
| 为什么某张表匹配不到? | 常见原因是字段值不一致、配置表版本选错、字段表头不同、字段为空、流程步骤顺序不对。 |
| 配置表允许新增字段吗? | 允许。系统会保留上传表格中的额外字段,匹配和输出时按当前版本字段识别。 |
| 删除配置表类型或版本要注意什么? | 删除后会影响后续运行时的可选项;已经生成的历史结果仍可用于追溯。 |
步骤类型怎么选
| 步骤类型 | 处理方式 | 适合场景 | 例子 |
|---|---|---|---|
| 新增字段 | 合并:表与表匹配 | 把配置表中的字段带入当前结果。 | 根据物料编码匹配物料描述、品牌、机型。 |
| 新增字段 | 计算:字段公式 | 根据已有字段生成新的业务指标。 | 加工费CNY = 损益交货量 * 单台加工费CNY。 |
| 修改字段 | 计算:字段公式 | 对已有字段做名称、口径或数值调整。 | 把空值改成 0,或把本币金额换算成 CNY。 |
建议:每个步骤只做一件事。需要先合并再计算时,请拆成两个步骤,这样更容易复核,也更接近 PowerQuery 的操作习惯。
任务执行与查看结果
| 动作 | 说明 | 结果 |
|---|---|---|
| 发起计算 | 在“任务中心”选择事实表批次、计算流程和各步骤配置表版本。 | 生成一条计算任务,并自动跳转到计算结果页面。 |
| 查看已完成任务 | 任务中心下方展示已完成计算任务列表。 | 点击“查看结果”进入对应结果批次。 |
| 查看计算结果 | 在“收入结果”中查看完整结果明细和异常明细。 | 用于复核匹配是否命中、字段是否正确、异常原因是什么。 |
| 删除当前结果 | 在计算结果页删除当前选中的结果批次。 | 删除该批次结果和异常记录,请谨慎使用。 |
| 生成导出版本 | 在“导出中心”中勾选字段并生成导出版本。 | 生成更适合业务查看和下载的结果表。 |
通用计算步骤
一个步骤只做一件事。后续收入、费用、利润表都会复用这一套步骤引擎。
| 步骤 | 用途 | 配置方式 | 示例 |
|---|---|---|---|
| 合并 | 从配置表带出字段。 | 选择配置表、匹配字段、输出字段。 | 事实表按物料编码匹配物料主数据。 |
| 计算 | 新增字段或改写字段。 | 填写字段名称、字段编码、公式或 SQL 表达式。 | num(delivery_qty) * num(unit_fee_cny) |
| 筛选 | 保留符合条件的行。 | 每行一个条件,全部条件为真才保留。 | num(delivery_qty) > 0 |
| 汇总 | 按维度分组汇总。 | 填写分组字段和汇总规则。 | fee_amount_cny=fee_amount_cny:sum |
| 重命名 | 统一字段编码。 | 每行一个重命名规则。 | material_code=>item_code |
| 格式转换 | 把字段转成文本、数字或整数。 | 每行一个字段格式规则。 | delivery_qty=number |
计算字段:公式与SQL表达式
在计算步骤中,可以新增或修改字段。建议优先使用“公式”,门槛更低;遇到复杂条件判断时,再使用“SQL表达式”。
| 方式 | 适合场景 | 填写规则 | 示例 |
|---|---|---|---|
| 公式 | 常规四则运算、金额、数量、系数、简单条件判断。 | 直接引用字段编码;中文字段名可写成 [字段名]。后一行公式可以引用前面已生成的新字段。 | num(delivery_qty) * num(unit_fee_cny) |
| SQL表达式 | 复杂条件判断,例如 CASE WHEN、IN、COALESCE。 | 只填写一个表达式,不写 SELECT、UPDATE、DELETE,也不要加分号。 | CASE WHEN currency_code = 'CNY' THEN unit_fee_local ELSE unit_fee_local * exchange_rate END |
公式常用写法
| 写法 | 含义 | 示例 |
|---|---|---|
num(字段) | 把字段转成数字,空值或异常值按 0 处理。 | num(delivery_qty) |
num(字段, 默认值) | 把字段转成数字,并指定空值时的默认值。 | num(pnl_delivery_coef, 1) |
text(字段) | 把字段转成文本。 | text(currency_code) |
if_eq(字段, "值", 真值, 假值) | 字段等于某个值时返回真值,否则返回假值。 | if_eq(currency_code, "CNY", num(unit_fee_local), num(unit_fee_local) * num(exchange_rate)) |
if_in(字段, "值1,值2", 真值, 假值) | 字段属于多个值之一时返回真值,否则返回假值。 | if_in(include_pnl_delivery, "是,Y,YES,1,TRUE", num(delivery_qty), 0) |
round(数值, 位数) | 保留指定小数位。 | round(num(fee_amount_cny), 2) |
coalesce(a, b) | 优先取第一个有值的数据。 | coalesce(model, material_model) |
concat(a, b) | 文本拼接。 | concat(brand, "-", model) |
is_blank(字段) | 判断字段是否为空。 | is_blank(project_name) |
contains(字段, "文本") | 判断字段是否包含某段文字。 | contains(material_desc, "主板") |
常见计算示例
| 业务含义 | 推荐写法 |
|---|---|
| 损益交货量 | if_in(include_pnl_delivery, "是,Y,YES,1,TRUE", num(delivery_qty) * num(pnl_delivery_coef, 1), 0) |
| 单台加工费CNY | if_eq(currency_code, "CNY", num(unit_fee_local), num(unit_fee_local) * num(exchange_rate)) |
| 加工费CNY | num(pnl_delivery_qty) * num(unit_fee_cny) |
| 标准工时 | num(std_hour_coef) * num(delivery_qty) |
| 综合难度 | num(difficulty_coef) * num(delivery_qty) |
SQL表达式示例
| 业务含义 | SQL表达式 |
|---|---|
| 币种换算 | CASE WHEN currency_code = 'CNY' THEN unit_fee_local ELSE unit_fee_local * exchange_rate END |
| 空值兜底 | COALESCE(unit_fee_cny, 0) * COALESCE(delivery_qty, 0) |
| 中文字段名引用 | CASE WHEN [是否计入损益交货量] IN ('是','Y') THEN [交货数量] ELSE 0 END |
提示:公式和SQL表达式都只用于当前行计算,不用于跨行汇总。字段编码比中文名称更稳定;如果使用中文字段名,请用方括号包起来,例如 [交货数量]。
常见问题
| 问题 | 回答 |
|---|---|
| 为什么页面字段尽量显示中文? | 系统展示层会把内部字段名转换成中文,并尽量保留导入表格中的原始中文表头。 |
| 计算结果和导出中心有什么区别? | 计算结果用于复核和追溯,字段多;导出中心用于交付,字段可勾选。 |
| 导出预览会随字段选择变化吗? | 会。勾选或取消字段后,导出预览会同步变化。 |
| 删除事实数据批次会影响什么? | 会同步删除该批次的原始行、相关计算结果、异常和运行记录。 |
| 默认流程可以删除吗? | 可以。删除后可重新新增流程并配置步骤。 |
| 本地版适合什么场景? | 适合单机使用、现场演示、规则验证和小范围试运行。数据保存在本机 SQLite 和文件目录中。 |
| 未来部署到服务器需要补什么? | 需要登录权限、数据备份、访问控制、Nginx/HTTPS、安全组收口和更完整的操作审计。 |