文档: 新增项目40大额交易测试数据设计与实施计划
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
# Project 40 Large Transaction Data Backend Implementation Plan
|
||||
|
||||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||
|
||||
**Goal:** 为开发库 `project_id=40` 直接插入一批符合大额交易模型口径的银行流水,并完成 SQL 级命中验证。
|
||||
|
||||
**Architecture:** 通过独立 SQL 脚本管理测试数据生命周期,只操作 `ccdi_bank_statement`。脚本先清理项目 40 旧流水,再按既定身份、账户、日期和金额批量插入命中流水与少量噪声流水,最后执行核验 SQL 确认每个指标至少命中一次。
|
||||
|
||||
**Tech Stack:** MySQL 5.7, PowerShell, 项目现有 `ccdi_bank_statement` 表结构, `assets/大额交易.csv`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 固化设计与目标数据清单
|
||||
|
||||
**Files:**
|
||||
- Modify: `D:\ccdi\ccdi\docs\plans\2026-03-16-large-transaction-project40-design.md`
|
||||
- Create: `D:\ccdi\ccdi\assets\database\2026-03-16-project40-large-transaction-seed.sql`
|
||||
|
||||
**Step 1: 复核命中口径**
|
||||
|
||||
对照 `assets/大额交易.csv` 和库内默认参数,整理每个指标的命中条件、阈值和使用身份。
|
||||
|
||||
**Step 2: 写出目标数据清单**
|
||||
|
||||
在 SQL 脚本注释区列出每类指标对应的样本数量、证件号、金额范围、关键词和日期范围。
|
||||
|
||||
**Step 3: 自检唯一键策略**
|
||||
|
||||
确认每条插入记录的 `(project_id, LE_ACCOUNT_NO, ACCOUNTING_DATE_ID, AMOUNT_DR, AMOUNT_CR)` 组合唯一。
|
||||
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/plans/2026-03-16-large-transaction-project40-design.md assets/database/2026-03-16-project40-large-transaction-seed.sql
|
||||
git commit -m "文档: 补充项目40大额交易测试数据设计"
|
||||
```
|
||||
|
||||
### Task 2: 编写清理与插入 SQL
|
||||
|
||||
**Files:**
|
||||
- Modify: `D:\ccdi\ccdi\assets\database\2026-03-16-project40-large-transaction-seed.sql`
|
||||
|
||||
**Step 1: 写清理语句**
|
||||
|
||||
添加只针对 `project_id=40` 的删除语句:
|
||||
|
||||
```sql
|
||||
DELETE FROM ccdi_bank_statement
|
||||
WHERE project_id = 40;
|
||||
```
|
||||
|
||||
**Step 2: 编写最小插入块**
|
||||
|
||||
先写 1 到 2 条房车消费和税务支出的插入语句,确认字段完整:
|
||||
|
||||
```sql
|
||||
INSERT INTO ccdi_bank_statement (
|
||||
project_id, LE_ID, ACCOUNT_ID, group_id, LE_ACCOUNT_NAME, LE_ACCOUNT_NO,
|
||||
ACCOUNTING_DATE_ID, ACCOUNTING_DATE, TRX_DATE, CURRENCY,
|
||||
AMOUNT_DR, AMOUNT_CR, AMOUNT_BALANCE, CASH_TYPE, CUSTOMER_LE_ID,
|
||||
CUSTOMER_ACCOUNT_NAME, CUSTOMER_ACCOUNT_NO, customer_bank, customer_reference,
|
||||
USER_MEMO, BANK_COMMENTS, BANK_TRX_NUMBER, BANK, TRX_FLAG, TRX_TYPE,
|
||||
EXCEPTION_TYPE, internal_flag, batch_id, batch_sequence, CREATE_DATE,
|
||||
created_by, meta_json, no_balance, begin_balance, end_balance,
|
||||
override_bs_id, payment_method, cret_no
|
||||
) VALUES (...);
|
||||
```
|
||||
|
||||
**Step 3: 扩展全部指标数据**
|
||||
|
||||
补全单笔大额收入、累计收入、年流水超限、大额存现、多次存现、大额转账和噪声流水。
|
||||
|
||||
**Step 4: 运行脚本**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mysql --host=116.62.17.81 --user=root --password=*** --database=ccdi < assets/database/2026-03-16-project40-large-transaction-seed.sql
|
||||
```
|
||||
|
||||
Expected: 执行成功,无唯一键冲突。
|
||||
|
||||
**Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git add assets/database/2026-03-16-project40-large-transaction-seed.sql
|
||||
git commit -m "数据: 生成项目40大额交易测试流水"
|
||||
```
|
||||
|
||||
### Task 3: 编写并执行核验 SQL
|
||||
|
||||
**Files:**
|
||||
- Modify: `D:\ccdi\ccdi\assets\database\2026-03-16-project40-large-transaction-seed.sql`
|
||||
- Create: `D:\ccdi\ccdi\docs\implementation-reports\2026-03-16-project40-large-transaction-report.md`
|
||||
|
||||
**Step 1: 添加核验查询**
|
||||
|
||||
在脚本末尾添加按 `大额交易.csv` 口径改写后的项目 40 验证查询,覆盖全部指标。
|
||||
|
||||
**Step 2: 执行核验**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mysql --host=116.62.17.81 --user=root --password=*** --database=ccdi -e "/* verify queries */"
|
||||
```
|
||||
|
||||
Expected: 每个指标返回至少 1 条命中记录或 1 个命中分组。
|
||||
|
||||
**Step 3: 记录结果**
|
||||
|
||||
把每个指标的命中数量、示例流水编号和涉及人员写入报告文档。
|
||||
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add assets/database/2026-03-16-project40-large-transaction-seed.sql docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "验证: 完成项目40大额交易测试流水校验"
|
||||
```
|
||||
|
||||
### Task 4: 回归检查与收尾
|
||||
|
||||
**Files:**
|
||||
- Modify: `D:\ccdi\ccdi\docs\implementation-reports\2026-03-16-project40-large-transaction-report.md`
|
||||
|
||||
**Step 1: 检查项目总量**
|
||||
|
||||
Run:
|
||||
|
||||
```bash
|
||||
mysql --host=116.62.17.81 --user=root --password=*** --database=ccdi -e "SELECT project_id, COUNT(*) FROM ccdi_bank_statement WHERE project_id=40 GROUP BY project_id;"
|
||||
```
|
||||
|
||||
Expected: `project_id=40` 存在稳定数量的测试流水。
|
||||
|
||||
**Step 2: 抽样检查页面关键字段**
|
||||
|
||||
确认 `TRX_DATE`、`USER_MEMO`、`CUSTOMER_ACCOUNT_NAME`、`AMOUNT_DR`、`AMOUNT_CR` 等字段适合前端展示。
|
||||
|
||||
**Step 3: 补充最终说明**
|
||||
|
||||
在报告中注明依赖的默认阈值、复用的测试身份和复跑方式。
|
||||
|
||||
**Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 完善项目40大额交易测试流水报告"
|
||||
```
|
||||
69
docs/plans/2026-03-16-large-transaction-project40-design.md
Normal file
69
docs/plans/2026-03-16-large-transaction-project40-design.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Project 40 Large Transaction Test Data Design
|
||||
|
||||
**背景**
|
||||
|
||||
`project_id=40` 对应项目为“大额交易模型测试”,当前 `ccdi_bank_statement` 中没有任何流水数据。目标是根据 [assets/大额交易.csv](/D:/ccdi/ccdi/assets/大额交易.csv) 的业务口径,在开发库中直接插入一批能够稳定命中大额交易模型指标的测试流水。
|
||||
|
||||
**现状**
|
||||
|
||||
- 项目 `40` 已存在,但 `ccdi_model_param` 中没有项目级参数,命中逻辑将使用 `project_id=0` 的系统默认阈值。
|
||||
- 可复用的测试身份已存在:
|
||||
- 员工 `模型测试员工 / 330101198801010011`
|
||||
- 家属 `模型测试家属 / 330101199001010022`
|
||||
- 员工 `模型二测试员工 / 330101198802020033`
|
||||
- 家属 `模型二测试家属 / 330101199202020044`
|
||||
- 流水命中依赖的核心字段为 `project_id`、`cret_no`、`trx_date`、`amount_dr`、`amount_cr`、`user_memo`、`customer_account_name`、`cash_type`、`le_account_name`、`le_account_no`、`accounting_date_id`。
|
||||
|
||||
**设计目标**
|
||||
|
||||
- 为 `大额交易.csv` 中的每个指标至少生成一组稳定命中的流水。
|
||||
- 直接写入开发库 `ccdi_bank_statement`,只影响 `project_id=40`。
|
||||
- 除命中流水外,补充少量普通流水,避免页面展示只有极端数据。
|
||||
- 插入后可以使用 `大额交易.csv` 中的 SQL 口径逐项核验。
|
||||
|
||||
**设计方案**
|
||||
|
||||
采用“指标命中 + 少量真实噪声”的平衡方案:
|
||||
|
||||
1. 为以下指标分别构造命中流水:
|
||||
- 房车消费支出
|
||||
- 税务支出
|
||||
- 单笔大额收入
|
||||
- 累计收入超限
|
||||
- 年流水交易额超限
|
||||
- 单笔大额存现
|
||||
- 单日多次存现
|
||||
- 单笔大额转账
|
||||
2. 每个指标使用明显高于阈值的金额,避免边界值误差。
|
||||
3. 复用两名员工和两名家属的证件号作为 `cret_no`,确保能命中员工本人及亲属范围。
|
||||
4. 为每个账户生成一组连续日期和递增的 `accounting_date_id`,规避唯一键 `(project_id, LE_ACCOUNT_NO, ACCOUNTING_DATE_ID, AMOUNT_DR, AMOUNT_CR)` 冲突。
|
||||
5. 补充少量普通转入、普通消费、工资代发等非命中流水,保证页面可读性,并验证排除逻辑。
|
||||
|
||||
**数据策略**
|
||||
|
||||
- 单笔大额收入:为员工本人生成大于 `100000` 的单笔收入,对手方不使用本人、家属和工资代发主体。
|
||||
- 累计收入超限:为同一员工和同一外部对手方生成多笔累计收入,总额超过 `50000001`。
|
||||
- 年流水交易额超限:在近一年内为同一员工生成大量转入与转出组合,使总交易额超过 `50000001`。
|
||||
- 单笔大额存现:生成 `amount_cr > 2000001` 且摘要/交易类型命中现金存入关键词的流水。
|
||||
- 单日多次存现:同一身份证同一天生成至少 `6` 笔满足大额存现条件的流水。
|
||||
- 单笔大额转账:生成 `amount_dr > 100001` 且 `user_memo` / `cash_type` 命中转账关键词、同时避开“款”字排除条件的流水。
|
||||
- 房车消费与税务支出:通过 `user_memo` 或 `customer_account_name` 命中关键词,且使用员工本人和家属证件号混合覆盖。
|
||||
|
||||
**落库方式**
|
||||
|
||||
- 新增一份独立 SQL 脚本,包含:
|
||||
- 插入前清理 `project_id=40` 既有测试流水
|
||||
- 批量插入设计好的流水数据
|
||||
- 插入后的核验 SQL
|
||||
- 落库只操作 `ccdi_bank_statement`,不修改员工、家属、项目、参数等基础表。
|
||||
|
||||
**验证方式**
|
||||
|
||||
- 校验 `project_id=40` 的流水总数和涉及证件号是否符合预期。
|
||||
- 按 `大额交易.csv` 的 SQL 口径逐项运行命中检查。
|
||||
- 抽样查看流水明细中的摘要、对手方、金额、日期,确认页面展示可用。
|
||||
|
||||
**风险与控制**
|
||||
|
||||
- 若模型实现与 CSV 口径存在偏差,可能出现“SQL 能命中、页面不命中”的情况;因此落库后需要按数据库口径与页面结果双重验证。
|
||||
- 由于 `project_id=40` 使用默认阈值,后续若产品调整项目级参数,当前测试数据可能不再命中;为避免误解,插入脚本会在注释中写明依赖的默认阈值。
|
||||
@@ -0,0 +1,58 @@
|
||||
# Project 40 Large Transaction Data Frontend Implementation Plan
|
||||
|
||||
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
||||
|
||||
**Goal:** 确认前端无需代码改造,仅通过现有流水明细页面验证 `project_id=40` 新增测试流水是否可见、可筛选、可展示。
|
||||
|
||||
**Architecture:** 本次交付以数据库测试数据生成为主,前端沿用现有 `ccdiProject` 流水明细页面能力。实施重点是准备验证口径,确保新数据在现有筛选器、列表和详情页中可被正确检索和展示。
|
||||
|
||||
**Tech Stack:** Vue 2, 若依前端, 现有流水明细查询接口
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 确认无前端代码变更需求
|
||||
|
||||
**Files:**
|
||||
- Read: `D:\ccdi\ccdi\ruoyi-ui\src\api\ccdiProjectBankStatement.js`
|
||||
- Read: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiProject\`
|
||||
- Modify: `D:\ccdi\ccdi\docs\implementation-reports\2026-03-16-project40-large-transaction-report.md`
|
||||
|
||||
**Step 1: 检查现有筛选能力**
|
||||
|
||||
确认页面已支持按时间、对手方、摘要、金额和收支方向查看流水。
|
||||
|
||||
**Step 2: 列出验证入口**
|
||||
|
||||
在报告文档中写明建议验证的页面入口、过滤条件和预期结果。
|
||||
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 补充项目40流水前端验证说明"
|
||||
```
|
||||
|
||||
### Task 2: 前端联调验证清单
|
||||
|
||||
**Files:**
|
||||
- Modify: `D:\ccdi\ccdi\docs\implementation-reports\2026-03-16-project40-large-transaction-report.md`
|
||||
|
||||
**Step 1: 编写页面验证步骤**
|
||||
|
||||
列出以下检查项:
|
||||
|
||||
- 项目 40 的流水列表可以查到新增数据
|
||||
- 房车消费、税务支出等关键词能被摘要/对手方检索到
|
||||
- 单笔大额收入和大额转账在金额排序下位于前列
|
||||
- 详情页展示身份证号、原始文件名为空时不报错
|
||||
|
||||
**Step 2: 记录无代码改动结论**
|
||||
|
||||
明确说明前端本次不需要新增接口、不需要修改组件、不需要补菜单。
|
||||
|
||||
**Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git add docs/implementation-reports/2026-03-16-project40-large-transaction-report.md
|
||||
git commit -m "文档: 完成项目40流水前端验证清单"
|
||||
```
|
||||
Reference in New Issue
Block a user