Files
ccdi/docs/reports/implementation/2026-03-20-lsfx-mock-phase2-random-hit-backend-record.md

3.3 KiB

LSFX Mock 第二期稳定随机命中后端实施记录

修改范围

  • lsfx-mock-server/services/file_service.py
  • lsfx-mock-server/services/statement_rule_samples.py
  • lsfx-mock-server/services/statement_service.py
  • lsfx-mock-server/services/phase2_baseline_service.py
  • lsfx-mock-server/tests/test_file_service.py
  • lsfx-mock-server/tests/test_statement_service.py
  • lsfx-mock-server/tests/test_phase2_baseline_service.py
  • lsfx-mock-server/tests/integration/test_full_workflow.py
  • sql/migration/2026-03-20-lsfx-mock-phase2-hit-baseline.sql

第二期规则分层

  • 流水样本驱动规则:
    • LOW_INCOME_RELATIVE_LARGE_TRANSACTION
    • MULTI_PARTY_GAMBLING_TRANSFER
    • MONTHLY_FIXED_INCOME
    • FIXED_COUNTERPARTY_TRANSFER
    • SALARY_QUICK_TRANSFER
    • SALARY_UNUSED
  • 数据库基线驱动规则:
    • HOUSE_REGISTRATION_MISMATCH
    • PROPERTY_FEE_REGISTRATION_MISMATCH
    • TAX_ASSET_REGISTRATION_MISMATCH
    • SUPPLIER_CONCENTRATION

职责边界

  • FileService
    • 为同一 logId 稳定生成并持久化第二期规则命中计划。
    • upload_file()fetch_inner_flow() 链路中写入 phase2_statement_hit_rulesphase2_baseline_hit_rules
    • 在记录创建后立即调用第二期基线服务,避免出现“流水已返回但基线未写”的假成功状态。
  • StatementService
    • FileRecord 读取第二期流水规则子集。
    • 继续保持 FIXED_TOTAL_COUNT = 200、稳定 ID 分配与缓存分页语义。
  • Phase2BaselineService
    • 复用项目数据库配置生成并执行第二期幂等 SQL 计划。
    • 采购基线通过 ccdi_base_staff.id_card -> staff_id 映射到真实员工工号。
    • 资产基线使用固定 asset_name 先删后插,并保持“故意不匹配”的资产枚举口径。

第二期流水样本策略

  • MULTI_PARTY_GAMBLING_TRANSFER
    • 为同一证件号生成同日多对手方、多笔区间金额转出。
  • MONTHLY_FIXED_INCOME
    • 生成连续 4 个月的稳定非工资转入。
  • FIXED_COUNTERPARTY_TRANSFER
    • 为固定对手方生成跨季度稳定转入样本。
  • SALARY_QUICK_TRANSFER
    • 生成工资入账后 6 小时内的大额转出。
  • SALARY_UNUSED
    • 生成独立证件号的工资入账与代扣样本,不与 SALARY_QUICK_TRANSFER 共用同一对象。

幂等 SQL 基线方案

  • SUPPLIER_CONCENTRATION
    • 固定采购主键 LSFXMOCKP2PUR001,先删后插。
    • 插入 SQL 通过 ccdi_base_staff 按身份证反查真实 staff_id 与姓名,确保可被真实规则 SQL 关联。
  • 三条资产不匹配规则
    • 固定资产名称前缀 LSFX Mock P2 ...,先删后插。
    • 统一使用当前项目真实口径中的 asset_main_type = '房产'asset_status = '正常'
    • asset_sub_type 故意使用非 住宅 的值,维持“存在资产事实但不满足房产登记匹配”的状态。
    • 亲属资产记录遵循 family_id = 员工身份证号person_id = 亲属身份证号

实施结果

  • 第二期规则命中计划已接入 FileService -> StatementService -> 缓存分页 主链路。
  • 第二期数据库基线已在拉取链路内接通,并支持通过独立 SQL 脚本重复重放。
  • 单元测试、集成测试和全量 lsfx-mock-server 回归均已通过。