# 模型信息 XLSX 更新实施计划

> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** 直接更新 `assets/模型信息.xlsx`，仅对未真实实现模型补齐可明确推出的字段，并新增 SQL 可执行性与缺少内容结论列。

**Architecture:** 先以项目代码、规则定义、数据库表结构为依据，逐行判定模型是否已经具备真实命中逻辑；对未实现模型再执行表格回填和 SQL 可执行性校验，最后补充实施记录。整个过程不新增业务规则，不修改后端实现逻辑，只更新资料文件与文档。

**Tech Stack:** Python 3、openpyxl、rg、MySQL MCP、Git

---

### Task 1: 梳理实现状态与回填依据

**Files:**
- Modify: `assets/模型信息.xlsx`
- Reference: `docs/design/2026-03-20-model-info-xlsx-update-design.md`
- Reference: `docs/reports/implementation/2026-03-17-model-sql-check-and-rewrite.md`

- [ ] **Step 1: 列出 XLSX 中的全部模型行**

Run:

```bash
python3 - <<'PY'
from openpyxl import load_workbook
wb = load_workbook('assets/模型信息.xlsx')
ws = wb['Sheet1']
for idx, row in enumerate(ws.iter_rows(min_row=2, values_only=True), start=2):
    if row[2]:
        print(idx, row[2], row[3], row[6], row[7])
PY
```

Expected: 输出每一行对应的序号、模型名称、相关指标和指标英文名。

- [ ] **Step 2: 检索项目内真实规则实现与占位规则**

Run:

```bash
rg -n "HOUSE_OR_CAR_EXPENSE|TAX_EXPENSE|SINGLE_LARGE_INCOME|CUMULATIVE_INCOME|ANNUAL_TURNOVER|LARGE_CASH_DEPOSIT|ABNORMAL_CUSTOMER_TRANSACTION|LOW_INCOME_RELATIVE_LARGE_TRANSACTION|MULTI_PARTY_GAMBLING_TRANSFER|GAMBLING_SENSITIVE_KEYWORD|MONTHLY_FIXED_INCOME|FIXED_COUNTERPARTY_TRANSFER|FOREX_BUY_AMT|INTEREST_PAYMENT_BY_OTHERS|LARGE_PURCHASE_TRANSACTION|SUPPLIER_CONCENTRATION|STOCK_TFR_LARGE|WITHDRAW_CNT|SALARY_QUICK_TRANSFER" ccdi-project ruoyi-ui sql docs
```

Expected: 区分哪些模型已有真实命中逻辑，哪些只有占位规则或文档描述。

- [ ] **Step 3: 用当前数据库结构确认 SQL 校验基线**

Run:

```bash
python3 - <<'PY'
from openpyxl import load_workbook
wb = load_workbook('assets/模型信息.xlsx')
ws = wb['Sheet1']
print('rows=', ws.max_row, 'cols=', ws.max_column)
PY
```

Expected: 确认当前工作簿可正常读取，为后续回写做基线检查。

### Task 2: 更新 XLSX 未实现模型信息

**Files:**
- Modify: `assets/模型信息.xlsx`

- [ ] **Step 1: 追加两列表头**

实现要求：

```text
在现有最后一列后新增：
1. 当前环境是否可执行SQL
2. 当前缺少内容
```

- [ ] **Step 2: 对已真实实现模型保持跳过**

实现要求：

```text
只标记为“已实现并跳过”，不重写该行原有内容，不填新增结论列。
```

- [ ] **Step 3: 对未实现模型补齐可明确推出的字段**

实现要求：

```text
优先补充指标英文名、风险筛查对象、技术口径、可疑结果返回、风险等级；
仅在项目代码、规则表、SQL 或当前库结构能明确支持时回填，不能唯一确定则保留原值。
```

- [ ] **Step 4: 写入 SQL 可执行性结论**

实现要求：

```text
当前环境可直接执行写“是”，否则写“否”；
“当前缺少内容”列中写最小必需缺项或明确错误，可执行则写“/”。
```

- [ ] **Step 5: 保存工作簿**

Run:

```bash
python3 - <<'PY'
from openpyxl import load_workbook
wb = load_workbook('assets/模型信息.xlsx')
wb.save('assets/模型信息.xlsx')
print('saved')
PY
```

Expected: 输出 `saved`，且文件可再次被 `openpyxl` 正常打开。

### Task 3: 校验结果并补充实施记录

**Files:**
- Modify: `assets/模型信息.xlsx`
- Create: `docs/reports/implementation/2026-03-20-model-info-xlsx-update-record.md`

- [ ] **Step 1: 抽样读取更新后的关键行**

Run:

```bash
python3 - <<'PY'
from openpyxl import load_workbook
wb = load_workbook('assets/模型信息.xlsx')
ws = wb['Sheet1']
for row_no in [10, 11, 12, 14, 18, 22, 25, 26, 28, 31]:
    vals = [ws.cell(row_no, col).value for col in range(3, ws.max_column + 1)]
    print(row_no, vals)
PY
```

Expected: 关键未实现模型行已带有新增结论列，且补充信息与设计口径一致。

- [ ] **Step 2: 记录本次实施内容和判定依据**

实施记录应包含：

```text
1. 已实现模型跳过的判定口径
2. 未实现模型的回填原则
3. 新增列说明
4. SQL 可执行性判断依据
5. 抽样验证结果
```

- [ ] **Step 3: 检查 Git 变更范围**

Run:

```bash
git status --short
```

Expected: 只包含本次任务相关文件；如存在无关变更，不纳入提交。

- [ ] **Step 4: 提交本次修改**

Run:

```bash
git add docs/plans/fullstack/2026-03-20-model-info-xlsx-update-implementation.md docs/reports/implementation/2026-03-20-model-info-xlsx-update-record.md assets/模型信息.xlsx
git commit -m "更新模型信息xlsx并补充校验结论"
```

Expected: 生成仅包含本次任务文件的中文提交。
