Files
mfas/docs/overall.md

8.9 KiB
Raw Permalink Blame History

需求文档:管理人多维财务核算系统 (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
  • IF 收款人 = "招商证券" (托管费) AND 备注包含 "产品A"
    • THEN dim_segment = PM_Strategy, dim_object_id = Product_A
  • 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)
      • (备注:此处即为需求中的“剩余”部分)

视图 B家办专项损益 (Level 2 Deep Dive)

  • 筛选条件dim_segment = Family_Office
    • 家办员工 (FO_Sales)
      • 点击展开可看具体 Sales_A, Sales_B
    • 家办渠道 (FO_Channel)
    • 家办中后台 (FO_Admin)
      • (备注:此处即为需求中的“家办剩余”部分)

给技术团队的特别备注 (CFO Notes)

  1. 数据清洗优先:请优先开发“客商/人员”与“维度标签”的绑定配置页面,这是自动化的基础。没有这个,财务还是得手工录入。
  2. 必须支持一拆多 (Split Transaction):不要仅仅“预留接口”。在 V1.0 的数据库设计中,必须直接支持 1行银行流水 \rightarrow N行财务凭证 的父子表结构。这是高频刚需。
  3. 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)

  1. 权责发生制支持:系统需从设计之初考虑“挂账”与“核销”逻辑,以兼容运营台账(权责发生制)与银行流水(收付实现制)的差异。
  2. 数据唯一性保障 (Advanced Deduplication)
    • 简单的MD5(日期+金额)不足以防重(如同日同给同一人的两笔相同报销)。
    • 改进方案:引入 “期末余额 (Ending Balance)” 校验,或在哈希因子中加入“流水号/Sequence ID”。
    • 兜底机制:对于完全相同的疑似重复交易,系统应标记为 Duplicate_Suspect,强制要求人工审核确认是“重复记账”还是“真实发生的第二笔交易”。
  3. 人工介入机制 (Human-in-the-Loop):系统必须遵循“机器预处理 -> 人工确认 -> 正式过账”的流程。在推送到金蝶/用友之前,必须保留人工审核的节点,确保财务数据的绝对准确性。