现状数据模型(D3)

来源:pfs / fds 取 *-repos/src/main/resources/db.sql 建表 DDL(权威);fcs 当前快照无 db.sql,表定义取自 jOOQ fcs-repos/.../tables + pojos(25 个,与早期 db.sql 一致);pmt / ims 主表不在 db.sql(仅分片批控表),取自 pojo 实体;agg / crs 的 db.sql 为空,与空骨架一致。
颗粒度:表清单 + 核心表关键字段,非全字段。
核实日期 2026-06-03:表数已按当前快照核对(pfs 14 / fds 45 / agg-crs 空 / pmt-ims 分片一致;fcs 25 表定义当前在 jOOQ tables/pojos,fund-control 已无 db.sql)。
⚠️ 「表层已支持」不等于「业务代码已跑通该路径」——schema 具备某能力,不代表现金贷已启用或手机分期路径已实现,需结合 service 代码逐路径确认(改造映射阶段做)。

表数量概览

服务表数来源
fund-control (fcs)25jOOQ tables/pojos(fcs-repos;当前无 db.sql)
product-factory (pfs)14db.sql
fraud-detection (fds)45db.sql
payment-middle (pmt)(主表取自 pojo,50+ 实体)db.sql 仅分片批控表
cardbind-middle (ims)(主表取自 pojo)db.sql 仅分片批控表
agg-vars / credit-reporting0db.sql 空(空骨架)

全局约定

  • 审计字段create_time / update_time / create_user / update_user 几乎所有表都有。
  • 金额:账务 decimal(20,6),配置 decimal(16,6)
  • 业务日期:多用 varchar(10)YYYY-MM-DD 字符串),由营业日表 fcs_business_date(pre/curr/next)驱动批处理。
  • 主键:业务键(cust_id / loan_id / product_id)或 bigint 自增。
  • 分库分表:pmt / ims 使用 plutus_N 分片 schema(ShardingSphere);fcs / pfs / fds 单库。
  • 余额组件(bal_compt)模型贯穿账务:余额按组件拆分(本 / 息 / 费 / 罚,由 bal_compt_id_type 标识),计费、销账、记账均按组件粒度处理。

fund-control(fcs)— 25 表

账户制分期总账。分组如下。

客户与额度

说明关键字段
fcs_cust客户主体cust_id、first/middle/sur_name、mobile、cust_level、req_channel、verify_type(默认 bvn)、overflow_amt
fcs_cust_lmt客户额度cust_id 为主键(单客户单总额度)、lmt_amt、valid_date
fcs_limit_change_log额度变更日志adjust_type、before/after_limit、busi_date

fcs_cust 仅基础身份(姓名 / 手机 / 等级 / 渠道 / 核验类型),无 KYC / 地址 / 工作 / 联系人字段——这些在进件 / KYC 域(本地未见独立服务)或 fds 案件快照。

借据与产品快照

说明关键字段
fcs_loan借据loan_amt、loan_term、curr_term、多余额字段(outstd/paid/past/curr/adj/rec)、overdue_date/days、aging、cpd_days、due dates、contract_no
fcs_loan_product借据级产品快照term、rate、rate_type、base_year/month、罚息/滞纳金配置、min_downpayment_ratio(首付)、product_price、product_catagory、txn_scene
fcs_order_loan借款订单loan_id、order_id、txn_amt
fcs_loan_overdue借据罚息利率阶梯overdue_detail_id、days、rate、rate_type

账务:计划 / 排程 / 余额组件

说明
fcs_plan还款计划(按 plan_id / term,含余额、due_date、grace_date)
fcs_repay_schedule还款排程(按 term、due_date、term_amt)
fcs_loan_balcompt / fcs_plan_balcompt / fcs_repay_balcompt余额组件(借据级 / 计划级 / 排程级,bal_compt_id_type、coll_method 收款方式)
fcs_acct账户(客户维度汇总余额、loan_span 期跨、loan_span_count、grace_days、逾期 aging)

销账与记账分录

说明
fcs_offset_entry销账分录(plan_id、bal_compt、amount、posting_date)
fcs_posting_entry记账分录(txn_code、txn_direction 借贷方向、posting_amt、bal_compt——复式记账风格)
fcs_overflow_record溢缴记录
fcs_exempt_record减免(amount、reduce_term、promise_repaydate 承诺还款日 PTP、used)
fcs_manualrepay_record人工还款记录

交易流水与支付订单

说明
fcs_order_txn交易流水(txn_direction、卡 / 银行 / 通道、payment_status、success/failure/pass 金额、reversed、charge_token、merchant_name 商户、coupon_id)
fcs_plutus_web_orderH5 支付链接订单(reference_id、url、callback_flag)
fcs_virtual_sub_account_order虚拟子账户收款(NIBSS account_number、bvn、settled_amount)
fcs_contract借据合同(contract_no、loan_id、contract_url)

系统

fcs_business_date(营业日 pre/curr/next)、fcs_batch_ctrl / fcs_batch_temp(批处理控制)。

关系:cust 1-N loan;loan 1-N plan(按 term);loan/plan 1-N balcompt;loan 1-N order_txn;cust 1-1 cust_lmt;acct 按 cust 维度汇总。


product-factory(pfs)— 14 表

产品与费用

说明关键字段
pfs_product产品price/loan_amount min/max、min_downpayment_ratio 首付、multi_loan_flag、loan_type、cooling_off_period 犹豫期、product_catagory、lmt_rate/lmt_type 额度系数/类型、contract_code
pfs_product_fee子产品(按期数)term 期数、fee(amt/min/max)、interest_rate_id、pre_payment_ 提前结清配置*、overdue/late_fee 配置、customer_level 客群
pfs_fee_table费用项fee_type、fee_coll_method 收取方式、fee_calc_method、fee_cal_compt 计算基于余额组件、fee_rate/fee_amt/min/max
pfs_interest_table利率rate_type Y/M/D(年/月/日利率)、interest_rate、base_year/base_month 计息基准
pfs_late_fee_table / pfs_late_fee_detail滞纳金(按 days 阶梯 rate)
pfs_overdue_table / pfs_overdue_detail罚息(按 days 阶梯 → interest_rate_id)

账户类型 / 销账 / 合同 / 等级

说明
pfs_acct_type账户类型(loan_span 还款周期 + loan_span_count 跨度、is_merge_acct、grace_days)
pfs_offset_order + pfs_offset_order_balcompt销账顺序(按 aging 账龄 + 余额组件顺序)
pfs_cust_level_product客户等级 → 子产品映射
pfs_contract_template合同模板(contract_content text、contract_biz_codes 渠道)
pfs_overdue_days_config逾期天数 → 是否生成订单(案件触发)

payment-middle(pmt)— 主表取自 pojo

db.sql 仅 plutus_0.plutus_batch_ctrl / plutus_batch_temp(分片批控);业务主表在分片库 plutus_N,DDL 未随 repo 提供,下列据 pojo 实体归纳。

分组代表实体
订单 / 流水PmtPaymentOrder、PmtPaymentFlow(Ext)、PmtOrderOriginal(Ext)、OrderTxnQueue(Back)、CustOrderInfo
代扣授权 MandateMandateBalanceInfo、MonnifyMandateRecord/Result、NibssMandateCreateInfo
账户名核验NibssNameEnquiryRecord/Result、NibssGoldmanNameEnquiry*、Easypay*VerifyRecord/Result
通道路由PayChannelAvailableInfo、BankChannelMapping、PaymentBankInfo、PlutusBankLogo
客户银行账户CustBankInfo、PmtCustBankAcct、ImsCustBankAcct
冲正 / 退款PmtOrderReversalBook、ReverseCallbackInfo、RefundWhite
争议 / 批量PaystackDisputesOrderInfo、PaystackBulkChargeInfo/FailedInfo、PlutusBatchCtrl/Temp
卡 / 冻结FrozenCard(Log)、PmtCardInvalidationLog、BindCardOrderInfo
其它ContractTemplate、ThirdLogInfo、PmtThirdCallback、PmtMsgConfig

cardbind-middle(ims)— 主表取自 pojo

绑卡信息(BindCardInfoList、CardInfoQuery*、FrontCardInfoDisplay)、收款账户配置(ReceiveAccountConfig)、NameInfo、BigDataAccountInfo,并共用 PmtPaymentOrder / PmtPaymentFlow / PmtOrderOriginal与 pmt 共享 plutus_N 分片库


fraud-detection(fds)— 45 表

分组
名单 / 冻结fds_black_and_grey_list(_origin)、fds_frozen_account(_origin)
案件主体fds_case_info(_ext)、fds_case_import、fds_case_receive_order
案件快照维度(12)customer / bank_card / contacts / device / family / loan / pa / phone_lock(锁机) / pos_sa(POS-SA) / working_info + photo + attachment
调查 / 审核fds_case_investigation、fds_case_review(_history)
问卷fds_case_question(_config / _config_set / _set)、fds_case_investigation_question_config、fds_question_set_no_gen
配置 / 字典fds_dict、fds_label、fds_dimension_relationship、fds_employee、fds_address、fds_case_sa_violation_config(SA 违规)
逾期 / 推送fds_overdue_user_info、fds_paytrigger_push_detail/log、paytrigger_bindcard_push_detail/device
其它fds_operate_history、encryption_error_record

案件模型已含 phone_lock_info(锁机)与 pos_sa_info(POS-SA)维度,且有 SA 违规配置——与手机分期 / 锁机存在数据预留。


agg-vars / credit-reporting

db.sql 为空(agg 0 表,crs 仅 3 行无建表)。数据模型未建 / 未推送,与空骨架一致。


关键观察(数据模型层)

  1. fcs 是成熟的账户制分期总账:余额组件(bal_compt)拆分 + 还款计划 / 排程按期 + 复式记账分录 + 销账分录——结构上远超「单期现金贷」账务。
  2. 多期结构在表层已就绪fcs_loan(loan_term / curr_term) + fcs_plan / fcs_repay_schedule(按 term)+ pfs_product_fee(按 term)——多期不是新增 schema。
  3. 产品配置能力已具备:首付比例(min_downpayment_ratio)、还款周期(acct_type.loan_span)、利率类型(Y/M/D)、阶梯罚息 / 滞纳金、提前结清(pre_payment_*)、额度系数(lmt_rate)、犹豫期、产品类别。
  4. 额度模型是单客户单总额度fcs_cust_lmt PK=cust_id),非分产品 / 非循环池;产品侧用 lmt_rate / lmt_type 做系数调节。
  5. fcs_order_txn.merchant_name 是「我方通道商户标识」(选密钥用),非收款方:值如 Paystack-allcredit_1,pmt 据此取对应通道密钥(来自 ims 绑卡配置 paymentMerchant[payChannel][channel])。放款收款方靠 cardNo+bankCode+户名(现状取自客户绑卡)——故现状并无”放款到商户”能力,需把收款方字段填门店账户。
  6. PTP / 减免已有:fcs_exempt_record.promise_repaydate + reduce_term
  7. 分库分表:pmt / ims 用 plutus_N 分片;fcs / pfs / fds 单库。
  8. 客户基础信息极简fcs_cust 仅姓名 / 手机 / 等级 / 渠道 / 核验类型),KYC / 地址 / 工作 / 联系人在进件域(本地未见独立服务)或 fds 案件快照承载。