refactor: establish standalone application boundary
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# 切片 09:我的复盘、自选、笔记、交易日志、提醒与复盘助手
|
||||
|
||||
> 基线:`b3df070`(切片 08)
|
||||
> 回档标签:`xiaobai-preservation-slice-09-20260731`
|
||||
> 结论:源码、API、数据库、账户隔离、真实页面及全量回归通过;最终视觉仍等待全站人工验收
|
||||
|
||||
## 1. 原实现归位
|
||||
|
||||
本切片只机械移动原版复盘、提醒和复盘助手实现,没有从`next/`取用代码,也没有修改自选、笔记、交易日志、提醒、会员灰化、LLM 上下文或流式协议。
|
||||
|
||||
| 原位置 | 新的唯一实现位置 | 兼容方式 |
|
||||
|---|---|---|
|
||||
| `assistant_agent.py` | `app/backend/features/review/agent.py` | 根级模块指向同一模块对象 |
|
||||
| `DashboardService`提醒方法 | `app/backend/features/alerts/facade.py` | `AlertServiceMixin` |
|
||||
| `DashboardService`复盘方法 | `app/backend/features/review/service.py` | `ReviewServiceMixin` |
|
||||
| `ReviewDatabase`提醒方法 | `app/backend/features/alerts/repository.py` | `AlertRepositoryMixin` |
|
||||
| `ReviewDatabase`复盘方法 | `app/backend/features/review/repository.py` | `ReviewRepositoryMixin` |
|
||||
| 五个 POST/流式入口 | `app/backend/features/alerts/http.py`、`review/http.py` | HTTP Mixin |
|
||||
|
||||
原版已经存在的`AlertService`、`TradeJournalService`、Repository Port 与 SQLite Adapter 继续保留为唯一底层实现。本切片没有制造第二套提醒或交易日志服务。
|
||||
|
||||
## 2. 源码等价与必要适配
|
||||
|
||||
- `assistant_agent.py`与正式 Agent 文件 SHA-256 一致,根级兼容模块与正式 Agent 是同一模块对象。
|
||||
- 5 个提醒编排方法、8 个复盘编排方法、6 个提醒 Repository 方法和 13 个复盘 Repository 方法均与原版无位置信息 AST 一致。
|
||||
- 五个 HTTP 方法只把全局`SERVICE`改为 Mixin 的`self.application_service`;状态码、字段、异常和流式事件写法不变。
|
||||
- `backend.features.alerts`和`backend.features.review`仅对旧底层服务采用延迟导出,避免`database -> feature package -> sqlite adapter -> database`初始化循环;外部`from ... import AlertService/TradeJournalService`接口不变。
|
||||
- 公共`RequestHandler._write_stream_event`继续保留,因为问师和复盘助手共同使用,且现有测试直接覆盖;统一传输层留到切片 10。
|
||||
|
||||
## 3. API 与数据库差分
|
||||
|
||||
- 原版`8790`和迁移版`8791`使用正式数据库的两个临时副本,未写正式数据库。
|
||||
- 固定日期下自选、全部复盘笔记、交易日志、提醒中心及复盘助手历史共 5 个鉴权接口,状态码与业务 JSON 完全一致。
|
||||
- 两版均为 62 个 schema 对象;`watchlist`、`review_notes`、`trade_entries`、`alerts`、`assistant_messages`、`users`、`system_settings`和`llm_usage`逐行一致。
|
||||
- 真实浏览器在迁移版临时副本中新增一条交易记录,弹窗正确关闭并显示短提示“交易记录已保存”;没有写正式数据库。
|
||||
- 未调用真实`/api/assistant/chat`,避免外部模型波动和 LLM 用量写入;Agent、流式累积与权限路径由源码等价和单元测试覆盖。
|
||||
|
||||
## 4. 真实浏览器检查
|
||||
|
||||
- 1920×1080 检查我的复盘完整布局,自选 6 只、交易日志、每日复盘三个独立输入框和最近复盘均可访问,无横向溢出。
|
||||
- 添加自选与交易日志弹窗居中可用;交易日志保存后没有出现超长空弹窗。
|
||||
- 提醒中心正常展示筛选、新建提醒和提醒记录。
|
||||
- 管理员会员账号显示完整可用的复盘助手;临时普通账号显示相同界面、顶部“复盘助手仅对会员开放”,下方快捷问题、输入框和发送按钮均灰化禁用。
|
||||
- 临时普通账号自选和交易日志均为空,证明用户私有数据没有串到管理员账号。
|
||||
- 夜间模式背景为`rgb(18, 20, 22)`,1920×1080 页面无横向溢出,控制台无错误。
|
||||
- 截图`review-workspace-night-1920x1080.png` SHA-256:`bc803305a391930a0aafd68062bab6de86eca14612799eebfda220cf2ad0798e`。
|
||||
|
||||
## 5. 自动验证与保留边界
|
||||
|
||||
| 验证 | 结果 |
|
||||
|---|---:|
|
||||
| 原版`python -m unittest discover -s tests -q` | 231 项通过 |
|
||||
| 迁移版`python -m unittest discover -s tests -q` | 287 项通过 |
|
||||
| `python -m unittest tests.test_preservation_slice_review_alerts -q` | 7 项通过 |
|
||||
| `npx.cmd playwright test --reporter=dot` | 45 项通过(2.2 分钟) |
|
||||
| `git diff --check` | 通过 |
|
||||
|
||||
- 前端 DOM、页面 JS、CSS 与移动端行为未改动,统一归位延至切片 10。
|
||||
- `demo_data.py`、`static/heaven-loading.js`、五个疑似无引用前端函数和`wencai_saved_queries`继续保留到切片 11 试删。
|
||||
- 没有修改`next/`、正式数据库、Docker/NAS 或`8765`服务。
|
||||
Reference in New Issue
Block a user