Commit 19280667 authored by wenwen.tang's avatar wenwen.tang 😕

docs(memory): 记录提交分 3 层、草稿落盘、14 张残留清理与部署验证

parent 9b014b66
This diff is collapsed.
......@@ -14,7 +14,17 @@
- **AD~AI 房产/房产税六列已删**(`RETIRED_TAX_COLS`,守护 `test_retired_cols_not_used_by_billing`)
- 默认锁定只读;改单元格/增行/删行必须 `confirm=true`(否则 428);备份 `data/tables/.backup/`
- **电费批次** `data/batches/{id}.json`:只留原始数据(details/totals/documents/发送状态),按账期月份留档;
测试残留移入 `data/batches/_trash/`(store 只 listdir 顶层 `*.json`,子目录隐身、可恢复)
测试残留移入 `data/batches/_trash/YYYYMMDD/`(store 只 listdir 顶层 `*.json`,子目录隐身、可恢复)
- 已有回收站:`_trash/20261013/`(17 张)、`_trash/20261014/`(14 张,output 同批移入 `output/elec/_trash/`)
- **账期口径**(2026-10-14 确认):**批次 = 点一次「生成通知书」的产物**(号 `YYYYMMDD-HHMMSS` ·
`make_batch_id` 纯 ASCII 时间戳);**账期 `period_label` 只是批次上的一个文本字段,不是独立实体**,
`list_periods()` 按它归组即为页面上的「账期汇总」(组内按 `created_at` 倒序)
- 来源:① 录入页「所属期间」(默认今天年月;点「带入上一期」时 `nextPeriod()` +1 月)—— 主要
② Excel 解析 `elec_parser._extract_period`(先正则抓 A1 标题「YYYY年M月」,再退抄表日期年月)
③ 后端兜底 `ingest_rows`:未传时用**通知日期**的年月
- ⚠️ **自由文本、无格式归一化**:匹配是 `strip()` 后精确比较 → 「2026-11」与「2026年11月」会分成两组;
空值归「(未标账期)」
- 同账期多张批次是正常的(分批录 / 按公司分批 / 补录),故台账按账期汇总并默认折叠
## 免租(`rentos/rentfree.py`,2026-10-13 重写为两种类型)
- `首N月免租`:窗口 `[I, I+L月)`,含起始不含结束;0.5 月 = 15 天
......@@ -55,6 +65,29 @@
- ⚠️ **会 `innerHTML` 重渲染的绑定函数里不要挂 document 级监听**:每渲染一次堆一个,
旧闭包持有已移除的节点 → 用一次性模块标志(`VCOLS_DOC_BOUND`)或事件委托
## 电费「核对中改数据」(2026-10-14 · 当日晚改口径)
核对表**可直接编辑**,**改数据不影响核对状态**;点「确认核对」才把改动**一并存盘**。
前端 `confirmVerify()` 两步:①`saveVerifyData()` 按 `_bid` 分组逐张 `PUT /api/batches/{id}`
(有改动才发请求)→ ②`POST /api/periods/verify {rows, done:true}` 把勾选整期写成「已核对」。
于是「改过的行要不要重新核」由**用户勾了没勾**决定,服务端不猜。
- **已删** `keep_verify` / `_kept_verify` / `_detail_fp` / `_same_detail`(旧「改过的行退回待核对」
口径被上面两步取代,留着会与新口径矛盾);`reingest` 恢复为**一律重置核对**
- 前端脏数据基线:`ELEC_CMP_FIELDS` + `ESNAP`/`takeVerifySnapshot()`/`dirtyRows()`/`editSummary()`
- ⚠️ 基线键必须用稳定 `_rid`,**不能用数组下标**(删中间行会让基线整体错位)
- ⚠️ 改动提示**只改文字、绝不重渲染模式条**(`markVerifyDirty` 300ms 节流),否则输入框失焦
- ⚠️ `PUT` 是**全量覆盖**:每组必须带上该批次的**全部行**,只是「哪些批次要发」按有无改动筛
- ⚠️ 退出核对若有未保存改动要**明确警告会丢失**(数据只在确认时落盘)
## 电费录入「临时保存」草稿(2026-10-14)
录入页「临时保存」把当前明细整份落盘 `data/drafts/elec__{账号}.json`(**按账号隔离**),
下次进电费页自动恢复、直接接着编辑;生成通知书 / 清空 / 手动丢弃时删除草稿。
- 接口 `GET|PUT|DELETE /api/drafts/elec`;`_write_cap` 里 PUT/DELETE 记 `CAP_ELEC`(访客可用)
- `store.draft_path/save_draft/load_draft/delete_draft`;账号名净化 `[^0-9A-Za-z_\-] → _`
- 前端 `saveElecDraft/clearElecDraft/restoreElecDraft/elecBootFill`;`applyNav` 里电费页改调
`elecBootFill()` —— **有草稿就不「带入上期」**(否则互相覆盖)
- ⚠️ **沙箱白名单必须加 `DRAFT_DIR`**:`ui_verify_runner` 与自带沙箱的 `7/8/9/10/11`、
`check_scheduler` 都逐一补过 —— 漏了就会把草稿写进**真实** `data/drafts/`(与批次泄漏同类坑)
## 房租车位费出单
链路:`rent_parser.py` → `rent_render.py`(→ `notice_pdf`)→ `service.ingest_rent` → 批次
- 计费:期间起 = **AC**,止 = 起 + N 个自然月 − 1 天;`房屋租赁费 = P × N`、`物业费 = O × N`;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment