migration: preserve startup accounts and system slice

This commit is contained in:
leefer
2026-07-31 00:42:06 +08:00
parent 4083dceba3
commit 4002f096f4
37 changed files with 6821 additions and 6327 deletions
@@ -0,0 +1,57 @@
# 切片 01:启动、HTTP、账号、会员与系统管理
> 基线:`4083dce`(切片 00 原样可运行副本)
> 回档标签:`xiaobai-preservation-slice-01-20260731`
> 结论:自动差分通过;前端运行资产未改动,仍等待最终全站人工验收
## 1. 本次范围
本切片只整理原版 `app/` 副本中的启动、通用 HTTP、账号、会员和系统管理实现。所有实现均从
原文件机械移动,原导入面由兼容外壳保持;没有从冻结的 `next/` 复制产品代码,也没有重新设计
页面、接口或数据结构。
| 原位置 | 新的唯一实现位置 | 兼容方式 |
|---|---|---|
| `app/server.py` 的进程组装与完整应用服务 | `app/backend/application.py``app/backend/bootstrap/runtime.py` | `app/server.py` 继续导出原符号并保持原启动命令 |
| `app/server.py` 的 Cookie、鉴权、CSRF、静态文件和 JSON 传输 | `app/backend/http/handler.py` | `RequestHandler` 组合 `HttpTransportMixin` |
| `app/server.py` 的账号与会员 HTTP 方法 | `app/backend/features/accounts/http.py` | `RequestHandler` 组合 `AccountHttpMixin` |
| `app/server.py` 的系统管理 HTTP 方法 | `app/backend/features/system/http.py` | `RequestHandler` 组合 `SystemHttpMixin` |
| `app/server.py` 的账号、会员和出生信息业务方法 | `app/backend/features/accounts/service.py` | `DashboardService` 委托 `AccountService` |
| `app/database.py` 的账号、会话、会员与用户凭据方法 | `app/backend/features/accounts/repository.py` | `ReviewDatabase` 组合 `AccountRepositoryMixin` |
| `app/database.py` 的系统设置存取方法 | `app/backend/features/system/repository.py` | `ReviewDatabase` 组合 `SystemSettingsRepositoryMixin` |
| `app/security.py` | `app/backend/features/accounts/security.py` | 根文件保留原导出 |
| `app/app_config.py` | `app/backend/bootstrap/config.py` | 根文件保留原导出 |
## 2. 不变量与差分证据
- API`config/api.config.json``app/config/api.config.json` 的 SHA-256 相同;路由路径、方法、
访问角色、状态码和错误载荷由原注册表与全量测试继续约束。
- 数据库:原版和迁移副本均为 36 张业务表、62 个 schema 对象,规范化 schema SHA-256 均为
`0615a0423856d0eb02bccd81a071840bd50d6563da96d556cec49967ad8a5f4c`
- 账号边界:注册、登录、会话、密码、会员和出生信息使用临时数据库执行同一原版契约,5 项专项
测试全部通过。
- 前端:本切片没有修改 `app/static/``index.html``app.js``styles.css` 与根目录原版对应文件
哈希相同。`app-light-1920x1080.png` 保存本切片运行截图。
- 兼容:原 `python server.py` 命令以及测试和外部模块使用的 `server.DashboardService`
`server.RequestHandler``server.SERVICE``server.automatic_screener_jobs` 均保持可用。
## 3. 验证结果
| 验证 | 结果 |
|---|---:|
| `python -m unittest discover -s tests -q` | 236 项通过 |
| `python -m unittest tests.test_preservation_slice_accounts -v` | 5 项通过 |
| `npx playwright test --reporter=dot` | 45 项通过 |
| `python -m compileall -q ...` | 通过 |
| `git diff --check` | 通过(仅 Git 的 CRLF 提示) |
Playwright 在自行创建 Python 静态服务器时存在 Windows 子进程退出等待问题;验证时预先启动
`127.0.0.1:8876` 静态服务器并由 Playwright 复用,45 项用例在 143 秒内正常返回退出码 0。
## 4. 保留与待处理
- `app/backend/application.py` 仍包含其余尚未迁移切片的原版实现,这是刻意保留,不是本切片遗漏。
- `app/server.py``app/app_config.py``app/security.py``app/database.py` 的兼容面须等所有消费者
完成归位后再评估;本阶段禁止删除。
- 没有删除任何不确定代码,没有修改正式根目录数据库,也没有切换 Docker/NAS。
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

+6 -5
View File
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"updated_at": "2026-07-30T23:55:00+08:00",
"updated_at": "2026-07-31T00:37:00+08:00",
"status": "active",
"migration_mode": "behavior_preserving_source_migration",
"source_of_truth": "current_original_webapp_runtime_and_source",
@@ -9,13 +9,14 @@
"failed_roots": [
"next"
],
"current_slice": null,
"last_completed_slice": "slice-00-exact-runtime-copy",
"last_checkpoint": "xiaobai-preservation-migration-charter-20260730",
"next_action": "commit_and_push_slice-00_then_begin_startup_http_account_migration",
"current_slice": "slice-02-market-search-charts-data",
"last_completed_slice": "slice-01-startup-http-accounts-system",
"last_checkpoint": "xiaobai-preservation-slice-01-20260731",
"next_action": "capture_slice-02_market_search_chart_data_contracts_then_move_original_implementations",
"authoritative_documents": [
"AGENTS.md",
"docs/migration/原版保真迁移总纲.md",
"docs/migration/目标目录与切片顺序.md",
"docs/migration/保真迁移账本.md",
"docs/migration/next失败冻结记录.md"
],
+12 -1
View File
@@ -1,6 +1,6 @@
# 小白复盘保真迁移账本
> 当前状态:正式迁移,切片00“原样可运行副本”已完成
> 当前状态:正式迁移,切片01“启动、HTTP、账号、会员与系统管理”已完成
本账本是上下文恢复和人工审计的连续记录。任何迁移提交必须在同一提交中更新本文件及
`保真迁移状态.json`
@@ -20,6 +20,7 @@
| 2026-07-30 | `xiaobai-next-rejected-20260730` | 冻结失败的`next/`实现 | 禁止部署或继续开发 |
| 2026-07-30 | `xiaobai-preservation-migration-charter-20260730` | 建立保真迁移总纲、状态和恢复协议 | 尚未开始新迁移 |
| 2026-07-30 | `41329943c4878fc09ed82ec376eb93ab151e4092` | 完成只读资产清查并由用户批准`app/`结构 | 开始切片00 |
| 2026-07-31 | `xiaobai-preservation-slice-01-20260731` | 启动、HTTP、账号、会员与系统管理原实现归位 | 自动差分通过,进入切片02 |
## 资产处置登记
@@ -50,6 +51,16 @@
- 完整证据:`docs/migration/evidence/slice-00/README.md`
- 资产清单:`docs/migration/原版资产清单.json`388项,0项哈希差异。
已完成切片:`slice-01-startup-http-accounts-system`
- 原版基线:提交`4083dce`,即切片00原样副本。
- 迁移范围:进程入口、应用组装、HTTP传输、账号安全、账号/会员业务、账号/系统设置持久化。
- 兼容边界:根级`server.py``app_config.py``security.py`继续保留原导入和命令入口。
- API与数据库:API/功能注册表哈希一致;原版与副本数据库均为36表、62个schema对象且schema哈希一致。
- 验收:236项Python测试、5项切片专项测试、45项Playwright测试全部通过;前端运行资产未改动。
- 回档:标签`xiaobai-preservation-slice-01-20260731`
- 完整证据:`docs/migration/evidence/slice-01/README.md`
## 决策记录
| 日期 | 决策 | 原因 |
@@ -0,0 +1,71 @@
# 保真迁移目标目录与切片顺序
> 状态:已由用户确认
> 生效日期:2026-07-30
本文件把已批准的`app/`目标结构和迁移顺序固化为可恢复约束。目录只表达职责,迁移时从
原版复制、移动和拆分真实实现;禁止先建立空业务骨架后按规格书重写。
## 目标目录
```text
app/
server.py # 最终仅保留进程入口与HTTP服务器组装
backend/
bootstrap/ # 路径、环境、配置和依赖容器
http/ # 路由、鉴权、响应、静态资源和通用传输能力
features/
accounts/ # 登录、账号、会员及用户身份
system/ # 管理员配置和运行状态
market/ # 公共行情、搜索、详情和图表
sentiment/ # 情绪周期
pools/ # 涨停、炸板、跌停、昨日涨停和涨停表现
ladder/ # 市场天梯
rotation/ # 板块轮动
auction/ # 集合竞价
themes/ # 题材库
popularity/ # 人气热榜
dragon_tiger/ # 龙虎榜与游资档案
screener/ # 阶段、策略、自定义选股及持续跟踪
mentor/ # 问师
heaven/ # 观势、观气、观心
review/ # 自选、复盘笔记、交易日志和复盘助手
alerts/ # 提醒中心
data/ # 统一数据网关、口径、质量和供应商适配
database/ # 连接、迁移和领域Repository
jobs/ # 后台任务定义、状态、调度和重试
llm/ # 唯一模型网关、流式协议和调用审计
frontend/
index.html # 原版DOM骨架;仅在等价验证后拆分
shared/ # API、状态、Shell、弹窗和通用组件
pages/<feature>/ # 页面自己的行为与样式
styles/ # 令牌、基础层、Shell和经验证后的公共样式
vendor/ # 浏览器端第三方静态资产
config/ # 页面、功能、API、任务及数据字段注册表
data/ # SQLite及私有运行数据,保持Git忽略
tests/ # 单元、契约、差异和浏览器回归
tools/ # 清查、迁移、差异验证和维护工具
vendor/ # Python离线依赖
游资skills/ # 原版公开Skill;私有Skill仍位于data/
```
允许迁移期间保留根级兼容外壳;外壳只能转发到唯一实现,并须在账本登记删除条件。
## 固定切片顺序
| 切片 | 完整纵向范围 |
|---:|---|
| 00 | 原版可运行副本、资产清单、数据库副本和视觉基线 |
| 01 | 启动、HTTP通用能力、登录账号、会员和系统管理 |
| 02 | 公共行情、全局搜索、详情、悬浮图表、数据网关和数据质量 |
| 03 | 情绪周期、五类股池和涨停表现 |
| 04 | 市场天梯和板块轮动 |
| 05 | 集合竞价、题材库、人气热榜和龙虎榜 |
| 06 | 智能选股、自定义选股和策略持续跟踪 |
| 07 | 问师、模型Skill和LLM流式链路 |
| 08 | 问天:观势、观气和观心 |
| 09 | 我的复盘、自选、笔记、交易日志、提醒和复盘助手 |
| 10 | 前端Shell、页面文件、共享组件、CSS层级和移动端职责归位 |
| 11 | 待定代码试删、全量并行验收、维护文档和切换准备 |
每个切片先记录原版证据,再移动实现,再执行同输入差异;未通过时不得进入下一切片。