3.3 KiB
3.3 KiB
LSFX Mock 第二期稳定随机命中后端实施记录
修改范围
lsfx-mock-server/services/file_service.pylsfx-mock-server/services/statement_rule_samples.pylsfx-mock-server/services/statement_service.pylsfx-mock-server/services/phase2_baseline_service.pylsfx-mock-server/tests/test_file_service.pylsfx-mock-server/tests/test_statement_service.pylsfx-mock-server/tests/test_phase2_baseline_service.pylsfx-mock-server/tests/integration/test_full_workflow.pysql/migration/2026-03-20-lsfx-mock-phase2-hit-baseline.sql
第二期规则分层
- 流水样本驱动规则:
LOW_INCOME_RELATIVE_LARGE_TRANSACTIONMULTI_PARTY_GAMBLING_TRANSFERMONTHLY_FIXED_INCOMEFIXED_COUNTERPARTY_TRANSFERSALARY_QUICK_TRANSFERSALARY_UNUSED
- 数据库基线驱动规则:
HOUSE_REGISTRATION_MISMATCHPROPERTY_FEE_REGISTRATION_MISMATCHTAX_ASSET_REGISTRATION_MISMATCHSUPPLIER_CONCENTRATION
职责边界
FileService- 为同一
logId稳定生成并持久化第二期规则命中计划。 - 在
upload_file()与fetch_inner_flow()链路中写入phase2_statement_hit_rules与phase2_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回归均已通过。