现状数据模型(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) | 25 | jOOQ tables/pojos(fcs-repos;当前无 db.sql) |
| product-factory (pfs) | 14 | db.sql |
| fraud-detection (fds) | 45 | db.sql |
| payment-middle (pmt) | (主表取自 pojo,50+ 实体) | db.sql 仅分片批控表 |
| cardbind-middle (ims) | (主表取自 pojo) | db.sql 仅分片批控表 |
| agg-vars / credit-reporting | 0 | db.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_order | H5 支付链接订单(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 |
| 代扣授权 Mandate | MandateBalanceInfo、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 行无建表)。数据模型未建 / 未推送,与空骨架一致。
关键观察(数据模型层)
- fcs 是成熟的账户制分期总账:余额组件(bal_compt)拆分 + 还款计划 / 排程按期 + 复式记账分录 + 销账分录——结构上远超「单期现金贷」账务。
- 多期结构在表层已就绪:
fcs_loan(loan_term / curr_term) + fcs_plan / fcs_repay_schedule(按 term)+ pfs_product_fee(按 term)——多期不是新增 schema。
- 产品配置能力已具备:首付比例(
min_downpayment_ratio)、还款周期(acct_type.loan_span)、利率类型(Y/M/D)、阶梯罚息 / 滞纳金、提前结清(pre_payment_*)、额度系数(lmt_rate)、犹豫期、产品类别。
- 额度模型是单客户单总额度(
fcs_cust_lmt PK=cust_id),非分产品 / 非循环池;产品侧用 lmt_rate / lmt_type 做系数调节。
fcs_order_txn.merchant_name 是「我方通道商户标识」(选密钥用),非收款方:值如 Paystack-allcredit_1,pmt 据此取对应通道密钥(来自 ims 绑卡配置 paymentMerchant[payChannel][channel])。放款收款方靠 cardNo+bankCode+户名(现状取自客户绑卡)——故现状并无”放款到商户”能力,需把收款方字段填门店账户。
- PTP / 减免已有:
fcs_exempt_record.promise_repaydate + reduce_term。
- 分库分表:pmt / ims 用
plutus_N 分片;fcs / pfs / fds 单库。
- 客户基础信息极简(
fcs_cust 仅姓名 / 手机 / 等级 / 渠道 / 核验类型),KYC / 地址 / 工作 / 联系人在进件域(本地未见独立服务)或 fds 案件快照承载。