migration: preserve startup accounts and system slice
This commit is contained in:
@@ -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 |
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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 | 待定代码试删、全量并行验收、维护文档和切换准备 |
|
||||
|
||||
每个切片先记录原版证据,再移动实现,再执行同输入差异;未通过时不得进入下一切片。
|
||||
Reference in New Issue
Block a user