diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..a9b9c0f --- /dev/null +++ b/TODO.md @@ -0,0 +1,74 @@ +# TODO + +待办项,**按用户需求驱动**——别凭空虚构。完成一项后:勾选 + 改 CHANGELOG + 在 commit message 引用本节。 + +> 用户视角(配置 / 安装)见 [README.md](README.md)。设计目标见 [design.md](design.md)。工程手册见 [DEVELOPER.md](DEVELOPER.md)。 + +## 后端 + +- [ ] **`POST /notebook-version/restore` 端点**(design.md 里标"暂缓") + - 现状:restore 走纯前端 `model.fromJSON()` + `context.save()`,只能恢复**当前打开的** notebook + - 端点能力:脚本/CLI 调 API 恢复任意路径的 notebook;删了的 notebook 从 S3 拉回 + - 必须走 `ContentsManager.write`(不能直接写文件),要处理权限 / 文件锁 / 并发 + - 估计:~50 行 Python + ~30 行测试 + - 触发条件:团队有 CI 灾备 / 批量恢复需求 + +- [ ] **修复 S3 提交后 list 偶发返回旧 manifest** + - 根因:commit 写 manifest 后前端独立发 list;某些 S3 兼容服务(MinIO / Ceph RGW / 阿里云 OSS 等)实现各异,强一致性不保证 + - 方案:把 list 塞进 commit 响应(commit 写完立刻在同进程内 list 一定是最新),省掉独立 GET + - 估计:~30 行(改 commit 响应 + 前端 `setVersions` 直写 + 测试) + - 临时缓解:侧边栏「刷新」按钮(已加) + +## 前端 + +- [ ] **`schema/plugin.json` settings schema** + - 现状:空 schema,插件激活时只 `console.log` settings,无任何可配置项 + - 候选配置:`confirmRestore` / `defaultDescription` / `maxVersionsToShow` / `commitShortcut` / `skipDuplicate` + - 估计:~100 行(schema.json + 前端读 settings + 一个真用上的配置项) + - 触发条件:真有用户想调参再加 + +- [ ] **修复 jest 在 pnpm 链接器下跑不起来** + - 根因:`.yarnrc.yml` 用 `yarnLinker: pnpm`,虚拟存储把 `ts-jest` 和 `jest-util` 隔开 + - 当前绕过:`jlpm build`(tsc 严格 + rspack)验证前端 + - 方案 A:改 `.yarnrc.yml` 切 `nodeLinker: node-modules`(影响整个 monorepo 解析) + - 方案 B:完全重写 `jest.config.js` 不依赖 `@jupyterlab/testing` 的 baseConfig + - 估计:A 1 行;B 半日 + +- [ ] **前端 diff 逻辑单测** + - `src/diff.ts` 是纯函数,最值得测;目前没有单测跑(受上面 jest 故障牵连) + - 估计:跟 jest 修复一起做,~50 行测试 + +## 测试 / CI + +- [ ] **ui-tests(Playwright + Galata)跑通** + - 当前:`ui-tests/` 目录有但 README 里有 yarn.lock 是空的,从未跑过 + - 前置:先把 jest 修通,CI 工作流 `.github/workflows/build.yml` 跑通 + - 估计:跟 CI 一起做,~2-3 天 + +- [ ] **CI 流水线加后端 pytest** + - 当前 `.github/workflows/build.yml` 没看到 pytest 步骤 + - 估计:~10 行 yaml + +## 发布 + +- [ ] **v0.0.1 tag + 推送到 origin** + ```bash + git tag v0.0.1 + git push origin main --tags + ``` + +- [ ] **v0.0.1 wheel 发布到 PyPI**(如需) + - `python -m build` 出 wheel(hatch 自动嵌前端) + - `twine upload dist/*` + - 触发条件:要让别人 `pip install snapshot` 装上 + +## 优先级 + +按"真实价值"排: + +1. 修 S3 一致性(用户已报告的 bug 根因) +2. v0.0.1 tag(当前未发版) +3. jest 修复 + 前端单测(解锁 `jlpm test` 工作流) +4. CI 加 pytest +5. settings schema / restore 端点(按需) +6. ui-tests(锦上添花)