更新了保存图表模块

This commit is contained in:
guzhujushi committed 2026-10-20 08:47:15 +08:00
1 parent 748affb7f0
commit f99cf5c3c9
4 files changed
+228 -20

No files matched your search

+25 -5
View File
@@ -1,6 +1,6 @@
# STATUS — 当前进度
> 更新日期:2026-10-12
> 更新日期:2026-10-18
## 本次任务
@@ -18,12 +18,12 @@
- A 档**薄封装**(`rmse`/`mae`/`fit_linear`/`train_test_split`…)算工程,Codex 可直接实现。
- 分地盘按**文件**划,不按函数划(同一文件两人各写一半曾导致用户编辑器保存失败)。
当前 **L0 11/12**:`Result`、`get_rng`/`set_seed`、`load_table`/`save_table`、`clean_missing`、
当前 **L0 12/12(已全部完成)**:`Result`、`get_rng`/`set_seed`、`load_table`/`save_table`、`clean_missing`、
`detect_outliers`、`normalize`/`standardize`、`describe`、`correlation_matrix`、`bootstrap_ci`、
`monte_carlo`(**用户写**,2026-10-04);另**提前落地**了 L1 的 `confidence_interval` / `t_test` /
`monte_carlo_probability`、`monte_carlo_integral`、`random_walk`、`markov_simulate`、
`markov_steady_state`、`mm1_metrics`(**均为用户写**)—— `solve` 层的 L1 清单**已全部落地**。
剩余 1 项:`save_figure`(Codex 写)。
`save_figure` 已于 2026-10-18 由 Codex 落地,L0 收官。
**`models/metrics.py` 已完成(第九~十轮)**:6 个指标(`rmse` / `mae` / `mape` / `smape` / `r2_score` /
`adjusted_r2`)+ 共享入口 `verify_yt_yp` **由用户写**、Codex 审;`compare_models` 由 Codex 按 A 档落地
(含指标名**别名映射**)。`models` 下一步是 `regression.py`。
@@ -428,11 +428,11 @@
只差 Python 补丁号(3.13.9 vs 3.13.15)。详见 `docs/04-environment.md` §5。
- [x] ~~Gitea 远程尚未配置~~ → **已配置并推送完成**,见上面 D 节与决策 19/20。
note:仓库当前是 **Public**(匿名 `git ls-remote` 可读),要改私有去 Gitea 仓库设置。
- [ ] L0 完成 **11/12**(`Result`、`get_rng`/`set_seed`、`load_table`/`save_table`、`clean_missing`、
- [x] L0 完成 **12/12**(`Result`、`get_rng`/`set_seed`、`load_table`/`save_table`、`clean_missing`、
`detect_outliers`、`normalize`、`standardize`、`describe`、`correlation_matrix`、`bootstrap_ci`、
`monte_carlo`(用户写,2026-10-04));另 L1 的 `confidence_interval` / `t_test` /
`monte_carlo_probability` / `monte_carlo_integral` 已提前落地;
**L0 只剩 `save_figure`(Codex 写)**,详情见 E 节与"下一步"
**L0 已全部完成**(`save_figure` 于 2026-10-18 落地),详情见"下一步"第十一轮
- [ ] 本机 `exec_command` 在沙箱模式下**完全不可用**
(`helper_unknown_error: setup refresh had errors`),只有提权
(`require_escalated`)模式可用。沙箱模式只允许写 `D:\MCM&ICM_Toolkit`。
@@ -650,6 +650,26 @@ Codex 侧:把这三条口径写进 7 处 `Raises`(**又是易错点 30**:
测试 23 → 31 条:首列排序(升序 / 降序两条)、别名、坏指标名、坏 `models` / `cv`、每折样本数下限、`random_state` 可复现。
## 下一步
### ⭐ 当前进度与待办(2026-10-18 第十一轮)
**本轮:L0 收官 —— `save_figure` 落地(Codex 写,A 档)。**
- `viz/export.py`:实现 `save_figure`。入口先校验 `fig` / `dpi` / `formats` / `bbox_inches` /
`transparent` / `path`,**全部校验通过后才建目录、写文件**;`formats` 支持大小写归一,
空 / 未知 / 重复格式一律报错;`path` 带图片后缀时自动去后缀(不会写出 `fig1.png.png`)。
- `tests/test_viz.py`:去掉违反决策 26 的模块级 `pytestmark`,改为逐条 skip;
`test_save_figure_writes_png_and_pdf` 不再依赖未实现的 `plot()`,改用 `plt.subplots()` 构造图。
新增 8 条:后缀剥离、自动建目录、格式归一与顺序、单个字符串 / 空 / 未知 / 重复格式、
校验先于副作用、坏 `dpi` / `bbox_inches` / `transparent` / 非 `Figure`。
- 三连:`pytest` **242 passed / 24 skipped**、`ruff` **0**、`pyright` **0**。
**下一步**
1. `models/regression.py` 的 `fit_linear` / `fit_polynomial`(A 档)。**开工前先定返回契约**:
`Result` 没有 `fit/predict/score`,与 `compare_models` 要求 `Model` 协议的入参对不上,
需要定成"`Result.data` 放已拟合模型 + `compare_models` 接受两种入参"之类的桥接方案。
2. `decision/entropy_weights`(S 档,用户写);Codex 先补函数卡片 / 测试骨架。
3. 集中拍板 `STATUS.md` 里挂着的小口径(`t_test` / `as_array` / `bootstrap_ci` / `markov_*` / `mm1` / 死代码)。
### ⭐ 当前进度与待办(2026-10-12 第十轮)
**本轮:你办掉第九轮那 4 条口径里的 3 条,Codex 落地 `compare_models`(别名映射)。**