# 阶段4验收记录

## 范围

本阶段只验收全局前端基础和阶段3已有业务的前端交互：认证、16项工作区注册表、PC/移动Shell、主题、日期、统一API、统一弹窗与Toast、账户菜单、会员状态、系统凭据、模型池和会员管理。

行情摘要真实数据、全局搜索结果、后台刷新任务和16个工作区的业务内容分别属于阶段5及后续阶段。本阶段只提供稳定入口和明确空态，不将这些页面报告为已迁移。

## 设计规范第12节自检

### 表格

- 会员管理表按内容类型分配列宽；每日上限为右对齐等宽数字。
- 单位写在“每日上限（次）”表头，空到期时间保持为空。
- 每日上限表头可排序，并显示当前升降方向。
- 本阶段没有行情图表；图例规则留到实际图表切片验收，未用占位图假装完成。

### 间距

- Playwright实测PC内容区上内边距14px、左右内边距16px。
- 侧栏200px、顶栏46px、摘要条收起36px、状态栏30px均来自唯一令牌。
- 16个工作区共用同一Shell和动态路由，不存在页面专属骨架副本。

### 字体

- 页面标题17px/800、卡片标题14px/700、正文13px、辅助文字11至12px。
- 数字使用`tabular-nums`；未使用随视口连续缩放字号或负字距。

### 布局

- Shell与页面内容分离；4K内容限制最大可读宽度，没有将卡片和字体放大两倍。
- 1023px及以下进入独立移动Shell，底部保留“行情、选股、问师、问天、复盘”五个入口。
- 1920×1080、3840×2160和390×844实测无页面横向溢出。

### 细节

- 顶栏日期固定为`YYYY-MM-DD`，不使用会按Windows区域设置显示斜杠的原生日期外观。
- 市场数据未接入时保留空值和原因，不展示模拟数字或满屏`--`。
- 状态栏固定于视口底部；短页面不会把风险提示上移。
- 日间/夜间在Vue挂载前选择主题，弹窗、表单、表格和空态均使用语义令牌。
- 弹窗位于视口中心，支持Escape、遮罩关闭、焦点循环和焦点回收；成功反馈只使用自适应Toast。

## 权限与交互

- 真实注册/登录通过；首个账号显示管理员，普通用户不显示后台刷新和系统管理。
- 管理员兼会员时前端可同时显示两个标识；管理员未开会员时仍显示真实“普通用户”会员状态。
- 账户菜单严格包含个人资料、会员状态、修改密码、切换账号、退出五项。
- 浏览器实际保存并重读个人出生资料；会员状态显示开通状态、到期、剩余时长、今日用量、今日剩余和暂不可用加油包。
- 普通用户访问智能选股、问师和问天时保留相同页面结构，顶部提示会员限制，内容不可操作。
- 非管理员直接访问`/system`会被前端送回情绪周期，所有管理API仍由后端独立拒绝。

## 减法证据

- 16项工作区只在`workspaceRegistry.ts`登记一次，路由和两种导航共同读取。
- 浏览器请求只经`shared/api/client.ts`，CSRF由该出口统一附加。
- 全站只存在一个主题Store、一个当前会话Store、一个弹窗Host和一个Toast Host。
- CSS按令牌、基础、组件、Shell、账户、系统和移动端职责拆分；最长CSS为332行，未复制原型整份样式或增加覆盖补丁层。
- 组件CSS未出现令牌文件之外的色值；`1023px`仅作为CSS媒体查询不可变量化的语法边界。

## 自动验证

- Ruff：通过。
- pytest：40项通过。
- Vue类型检查：通过。
- Vitest：2个文件、5项通过。
- Vite生产构建：通过。
- Playwright：2项通过，覆盖管理员与普通用户、账户真实写入、三类系统管理、Ctrl+K、主题持久化、弹窗居中、桌面/4K/移动视口、HTTP失败和控制台错误审计。

## 截图

- [日间Shell 1920×1080](shell-light-1920x1080.jpg)
- [夜间Shell 1920×1080](shell-dark-1920x1080.jpg)
- [夜间系统管理 3840×2160](system-dark-3840x2160.jpg)
- [夜间移动Shell 390×844](shell-dark-390x844.jpg)

## 后续入口

阶段5建立唯一数据网关、交易日期真相、行情快照、搜索和图表基础后，替换当前市场摘要与工作区空态。移动端逐页业务信息重组仍在阶段13完成，不把本阶段的移动Shell当作全部移动页面验收。
