migration: establish exact preserved app baseline

This commit is contained in:
leefer
2026-07-30 23:51:48 +08:00
parent 41329943c4
commit 4083dceba3
399 changed files with 129967 additions and 23 deletions
@@ -0,0 +1,34 @@
# 切片00:原样可运行副本
## 范围
- 原版基线:`41329943c4878fc09ed82ec376eb93ab151e4092`
- 目标目录:`app/`
- 数据库:使用SQLite在线备份生成`app/data/review.db`,不写原版数据库。
- 排除:冻结的`next/`、密钥、正式数据库、日志、缓存、构建产物。
## 自动证据
| 检查 | 结果 |
|---|---|
| 原版与目标源文件SHA-256 | 628项一致,0项差异 |
| Python测试 | 231项通过 |
| Playwright测试 | 45项通过 |
| 数据库结构 | 36张表一致 |
| 数据库行数 | 2,830,708行一致 |
| SQLite完整性 | `ok` |
| 真实服务 | `http://127.0.0.1:8785/api/health`返回`ok` |
| 真实登录 | 管理员账号登录成功,默认进入情绪周期 |
## 视觉证据
- `app-exact-light-1920x1080.png`
- `app-exact-dark-1920x1080.png`
- `app-exact-light-390x844.png`
- `app-exact-dark-390x844.png`
四个视口均使用真实服务、数据库副本和原版前端资产。1920与390宽度下没有页面横向溢出。
## 结论
`app/`当前是原版的可独立运行副本,不包含来自`next/`的产品实现,也尚未进行业务拆分。
Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

+12 -9
View File
@@ -1,17 +1,18 @@
{
"schema_version": 1,
"updated_at": "2026-07-30T22:51:21+08:00",
"status": "preparation",
"updated_at": "2026-07-30T23:55:00+08:00",
"status": "active",
"migration_mode": "behavior_preserving_source_migration",
"source_of_truth": "current_original_webapp_runtime_and_source",
"source_root": ".",
"target_root": null,
"target_root": "app",
"failed_roots": [
"next"
],
"current_slice": null,
"last_completed_slice": "slice-00-exact-runtime-copy",
"last_checkpoint": "xiaobai-preservation-migration-charter-20260730",
"next_action": "inventory_original_assets_and_propose_target_structure_before_copying_code",
"next_action": "commit_and_push_slice-00_then_begin_startup_http_account_migration",
"authoritative_documents": [
"AGENTS.md",
"docs/migration/原版保真迁移总纲.md",
@@ -27,9 +28,11 @@
"keep_original_runtime_available",
"do_not_delete_uncertain_code"
],
"open_decisions": [
"target_directory_name",
"target_directory_structure",
"migration_slice_order"
]
"approved_decisions": {
"target_directory_name": "app",
"target_directory_structure": "approved_2026-07-30",
"migration_slice_order": "approved_2026-07-30",
"execution_mode": "autonomous_until_complete"
},
"open_decisions": []
}
+29 -10
View File
@@ -1,6 +1,6 @@
# 小白复盘保真迁移账本
> 当前状态:准备期,尚未开始业务代码迁移
> 当前状态:正式迁移,切片00“原样可运行副本”已完成
本账本是上下文恢复和人工审计的连续记录。任何迁移提交必须在同一提交中更新本文件及
`保真迁移状态.json`
@@ -9,8 +9,9 @@
- 原版根目录是唯一产品和视觉基线。
- `next/`已被用户否决并冻结,不进入后续迁移。
- 新目标目录尚未命名或建立
- 新目标目录由用户批准为`app/`,最终作为正式程序目录
- 后续采用原代码保真式迁移,不重新实现,不更换技术栈。
- 2026-07-30用户授权在既定约束内自主完成全部迁移,阶段性差异仍必须阻断后续切片。
## 当前检查点
@@ -18,6 +19,7 @@
|---|---|---|---|
| 2026-07-30 | `xiaobai-next-rejected-20260730` | 冻结失败的`next/`实现 | 禁止部署或继续开发 |
| 2026-07-30 | `xiaobai-preservation-migration-charter-20260730` | 建立保真迁移总纲、状态和恢复协议 | 尚未开始新迁移 |
| 2026-07-30 | `41329943c4878fc09ed82ec376eb93ab151e4092` | 完成只读资产清查并由用户批准`app/`结构 | 开始切片00 |
## 资产处置登记
@@ -25,14 +27,28 @@
| 原位置/符号 | 类型 | 消费者 | 处置 | 新位置 | 等价证据 | 状态 |
|---|---|---|---|---|---|---|
| 待清查 | - | - | 待定 | - | - | 未开始 |
| 原版运行源文件(排除`next/`、日志、缓存、构建产物和正式数据库) | 运行资产 | 全站 | 原样保留后逐项移动 | `app/` | 388项受控资产哈希一致;231项Python与45项Playwright测试通过 | 已复制 |
| `next/` | 失败实现 | 无正式消费者 | 原样保留但禁止迁移 | - | 用户冻结决定 | 已冻结 |
| `demo_data.py` | 疑似旧兼容代码 | 未发现运行导入 | 待定 | 待删隔离账本 | 静态扫描不足以授权删除 | 保留 |
| `static/heaven-loading.js` | 疑似旧动画 | 当前页面加载`heaven-loading-v2.js` | 待定 | 待删隔离账本 | 仍需动画运行覆盖 | 保留 |
| `commonReviewColumns`等5个前端函数 | 疑似无引用符号 | 未发现静态调用 | 待定 | 待删隔离账本 | 仍需动态注册与浏览器覆盖 | 保留 |
| `wencai_saved_queries`及其方法 | 历史兼容数据 | 当前无前端入口 | 待定 | 数据库兼容区 | 不允许在迁移期破坏旧库 | 保留 |
| 现有7层CSS | 视觉运行资产 | 全部页面和主题 | 原样保留后逐页归档 | `app/frontend/` | 必须通过截图与计算样式差分 | 保留 |
处置只允许:`原样保留``移动``合并重复``待定``确认废弃`
## 切片记录
每个切片记录以下内容:原版基线、复制范围、必要路径调整、差异测试、人工验收、未关闭问题和回档提交。
当前没有进行中的切片
已完成切片:`slice-00-exact-runtime-copy`
- 原版基线:提交`41329943c4878fc09ed82ec376eb93ab151e4092`
- 复制范围:确认参与运行、测试、部署和维护的原版文件;排除`next/`和运行产物。
- 允许改动:新目录中的路径配置、测试根目录和端口;不得改业务实现。
- 验收:新目录独立启动,231项Python测试、45项Playwright测试、数据库副本和静态资产哈希验证。
- 回档:本切片建立独立Git提交并推送Gitea。
- 完整证据:`docs/migration/evidence/slice-00/README.md`
- 资产清单:`docs/migration/原版资产清单.json`388项,0项哈希差异。
## 决策记录
@@ -41,12 +57,15 @@
| 2026-07-30 | 原版运行行为优先,规格书只用于盘点 | 防止再次依据文字重新开发 |
| 2026-07-30 | 不使用`next/`作为后续迁移起点 | 用户确认其视觉、布局和基础功能不可用 |
| 2026-07-30 | 目标结构确认前不创建业务目录 | 防止目录先行后再次补写功能 |
| 2026-07-30 | 目标目录确定为`app/` | 使用长期正式名称,不再建立新的版本式重写目录 |
| 2026-07-30 | 先建立原样可运行副本,再迁移目录职责 | 保证整理的是原件,而不是依据规格书重新实现 |
| 2026-07-30 | 不确定代码进入待删账本并延迟试删 | 删除必须能够单独回档并经自动与人工验收 |
## 恢复工作检查
- [ ] 已阅读`AGENTS.md`与保真迁移总纲。
- [ ] 已读取状态JSON和本账本最后一项。
- [ ] 已确认Git工作区和基线提交。
- [ ] 已确认没有修改`next/`或正式数据。
- [ ] 已说明当前切片及新旧等价证据。
- [ ] 已在编辑前确认没有未关闭差异。
- [x] 已阅读`AGENTS.md`与保真迁移总纲。
- [x] 已读取状态JSON和本账本最后一项。
- [x] 已确认Git工作区和基线提交。
- [x] 已确认没有修改`next/`或正式数据。
- [x] 已说明当前切片及新旧等价证据。
- [x] 已在编辑前确认没有未关闭差异。
+4 -4
View File
@@ -1,12 +1,12 @@
# 小白复盘原版保真迁移总纲
> 状态:准备期
> 状态:正式迁移
> 建立日期:2026-07-30
> 迁移性质:保行为、保视觉、保数据语义的源代码整理
## 1. 唯一目标
以当前可运行原版`webapp`为唯一母版,在尚未命名的新目录中建立更容易检索、理解和人工维护的
以当前可运行原版`webapp`为唯一母版,在用户批准的`app/`目录中建立更容易检索、理解和人工维护的
代码结构。迁移后的系统必须继续使用原版已经验收的功能、视觉、布局、动画、计算逻辑和交互,
不得依据说明文字重新开发一个相似产品。
@@ -123,6 +123,6 @@
## 10. 当前边界
- `next/`已失败冻结,不是迁移起点。
- 当前尚未确定新目录名称、目标目录结构和迁移阶段
- 在完成原版资产清查和用户确认总体方案前,不开始复制业务代码
- 新目录名称、目标结构和迁移顺序已于2026-07-30获得用户确认
- 第一切片必须先建立原样可运行副本,不允许直接开始重新实现或视觉重构
- 原版保持唯一可运行产品,不执行Docker切换或数据清理。
File diff suppressed because it is too large Load Diff