8.9 KiB
需求文档:管理人多维财务核算系统 (M-FAS)
版本:v1.0 | 优先级:P0 | 受众:后端架构师、数据工程师
1. 核心设计理念
本系统旨在构建一个介于前端业务数据(灵活、多维) 与 传统会计系统(合规、刚性) 之间的独立** “会计引擎(Accounting Engine)” 。
核心理念是:“去科目化、重维度化”。摒弃传统金蝶/用友的“多级会计科目”挂账模式(如 6601.01.05 销售费用-家办-张三),采用“扁平科目 + 必须维度标签”**的数据库结构。
系统行为逻辑: 任何一笔收入或支出(Journal Entry Line),在入库时必须携带维度标签。所谓的“剩余/中后台”,在系统底层不应通过“减法”计算存储,而应作为**“默认兜底标签(Default Bucket)”**进行归集,报表展示时再按层级聚合。
2. 维度架构定义 (Database Dimensions)
我们需要在凭证行表(finance_journal_lines)中扩展以下字段。
Level 1:核心业务板块 (dim_segment)
对应需求中的第一层级。该字段为必填项。
| 枚举值 (Value) | 业务含义 (Description) | 逻辑定义/自动化规则 |
|---|---|---|
| PM_Strategy | PM/策略团队 | 凡是直接归属于特定PM管理的基金产生的收入、直接发生的策略研发成本(服务器/数据/人员)。 |
| Marketing | 市场部 | 纯品牌推广、非家办渠道的机构募资费用。 |
| Family_Office | 家办整体 | 对应家办业务线的所有收支(将触发Level 2必填校验)。 |
| Corp_BackOffice | 基金中后台 (剩余) | 默认值。既不属于PM,也不属于市场和家办的通用行政、合规、房租、核心管理层成本。 |
Level 2:业务子维度 (dim_sub_segment)
不再局限于家办,所有 Level 1 业务线均可定义自己的子维度。
| Level 1 | 枚举值 (Value) | 业务含义 (Description) |
|---|---|---|
| Family_Office | FO_Sales | 家办员工 (销售) |
| Family_Office | FO_Channel | 家办渠道 |
| Family_Office | FO_Admin | 家办中后台 (默认) |
| Marketing | MKT_Online | 线上投放 |
| Marketing | MKT_Offline | 线下活动 |
| PM_Strategy | Strat_Equity | 股票策略 |
| PM_Strategy | Strat_CTA | 期货策略 |
Level 3:精细化对象 (Specific Objects)
为了避免“多态ID”带来的外键约束缺失问题,严禁使用单一的 dim_object_id。
数据库应设计分离的可空列(Nullable Foreign Keys):
dim_product_id: 关联产品表 (Product Table)dim_employee_id: 关联员工表 (Employee Table)dim_vendor_id: 关联客商表 (Vendor Table)
填值规则:根据业务场景填充对应列,其余列留空。例如支付阿里云费用,填充 dim_vendor_id,而 dim_employee_id 为空。
3. 自动化记账规则引擎 (Automation Logic)
为了实现“自动化”,需开发一个预处理中间件,在银行流水或业务单据生成凭证前,进行标签清洗。
规则 1:基于“人员/客商”的自动打标
建立一张全局映射表(Mapping Table),系统根据收付款对象自动填充维度。
- IF 报销人/收款人 = "张三" AND 张三在HR表属性 = "家办销售"
- THEN
dim_segment= Family_Office,dim_sub_segment= FO_Sales
- THEN
- IF 收款人 = "招商证券" (托管费) AND 备注包含 "产品A"
- THEN
dim_segment= PM_Strategy,dim_object_id= Product_A
- THEN
- IF 收款人 = "阿里云"
- THEN 触发 Split Transaction (拆单) 逻辑,按预设比例分摊至不同PM,生成多行凭证。
规则 2:基于“默认兜底”的减法逻辑实现
需求中提到的“剩余”概念,在系统录入时体现为默认值。
- 场景:支付公司整体房租 100,000元。
- 处理:
- 系统无法判断房租属于哪个PM或家办。
- Action:直接打标
dim_segment= Corp_BackOffice。
- 报表逻辑:
- 用户看到的“基金中后台” =
Sum(Corp_BackOffice)。 - 用户看到的“家办中后台” =
Sum(Family_Office) WHERE dim_sub_segment = FO_Admin。
- 用户看到的“基金中后台” =
4. 报表视图需求 (Output Requirements)
系统需前端需支持动态透视表(Pivot Table)展示,逻辑如下:
视图 A:公司整体损益 (Level 1 View)
- 收入/成本/费用 总额
- PM板块 (聚合所有
PM_Strategy)- 点击展开可看具体 PM1, PM2, PM3
- 市场部 (
Marketing) - 家办整体 (聚合所有
Family_Office) - 基金中后台 (
Corp_BackOffice)- (备注:此处即为需求中的“剩余”部分)
- PM板块 (聚合所有
视图 B:家办专项损益 (Level 2 Deep Dive)
- 筛选条件:
dim_segment= Family_Office- 家办员工 (
FO_Sales)- 点击展开可看具体 Sales_A, Sales_B
- 家办渠道 (
FO_Channel) - 家办中后台 (
FO_Admin)- (备注:此处即为需求中的“家办剩余”部分)
- 家办员工 (
给技术团队的特别备注 (CFO Notes)
- 数据清洗优先:请优先开发“客商/人员”与“维度标签”的绑定配置页面,这是自动化的基础。没有这个,财务还是得手工录入。
- 必须支持一拆多 (Split Transaction):不要仅仅“预留接口”。在 V1.0 的数据库设计中,必须直接支持 1行银行流水
\rightarrowN行财务凭证 的父子表结构。这是高频刚需。 - PM与产品的关系:建议建立明确的 Product 表和 Employee 表,处理好 managed_by 的时间维度关系。
5. 技术架构总体设计 (Technical Architecture)
5.1 整体架构逻辑:财务数据中台模式
系统架构分为三层:数据接入层(Input)、核心处理层(Process)、合规输出层(Output)。
1. 数据接入层 (Data Ingestion)
负责将非标准的业务数据统一为系统可读的格式。
- 资金流数据:银行对账单(Excel/API)、第三方支付流水。
- 业务流数据:外部估值表、应收台账(管理费/业绩报酬)、应付台账(渠道佣金)。
- 核心动作:清洗(Cleaning)、去重(De-duplication)、标准化(Normalization)。
2. 核心处理层 (The Core Engine)
系统的核心逻辑层,包含以下模块:
-
智能打标 (Dimension Injection):
- 规则引擎:基于关键词、账号、金额等规则自动匹配维度。
- 人工补录:对于置信度低的数据,提供界面供财务人员手动打标。
- 产出:带有完整业务维度(PM、家办、渠道、员工)的宽表数据。
-
业务对账 (Reconciliation):
- 自动匹配运营台账与银行流水,实现应收/应付的自动核销。
-
会计引擎 (Accounting Engine):
- 基于预设的“场景-分录映射表”,将业务动作转化为标准化凭证数据(借:销售费用 / 贷:银行存款)。
3. 合规输出层 (Output Adapter)
- 目标:传统会计软件(金蝶/用友)。
- 实现:通过API对接或生成标准导入模版(Excel/XML),实现凭证自动推送。
5.2 系统运作流程图 (Data Flow)
graph TD
A[数据源] -->|Excel/API| B(数据清洗模块 ETL)
B --> C{规则引擎 + AI辅助}
C -->|高置信度| D[已打标中间表]
C -->|低置信度| E[人工审核界面 UI]
E -->|人工确认| D
D --> F{会计分录生成器}
F -->|读取映射配置| G[标准凭证数据]
G --> H[传统会计系统适配器]
H -->|API/Excel| I[最终会计软件 (Kingdee/Yonyou)]
subgraph 核心中台
B
C
D
E
F
G
H
end
5.3 关键实施要素 (Critical Success Factors)
- 权责发生制支持:系统需从设计之初考虑“挂账”与“核销”逻辑,以兼容运营台账(权责发生制)与银行流水(收付实现制)的差异。
- 数据唯一性保障 (Advanced Deduplication):
- 简单的MD5(日期+金额)不足以防重(如同日同给同一人的两笔相同报销)。
- 改进方案:引入 “期末余额 (Ending Balance)” 校验,或在哈希因子中加入“流水号/Sequence ID”。
- 兜底机制:对于完全相同的疑似重复交易,系统应标记为
Duplicate_Suspect,强制要求人工审核确认是“重复记账”还是“真实发生的第二笔交易”。
- 人工介入机制 (Human-in-the-Loop):系统必须遵循“机器预处理 -> 人工确认 -> 正式过账”的流程。在推送到金蝶/用友之前,必须保留人工审核的节点,确保财务数据的绝对准确性。