anenreo个人数字操作系统文档

← 返回首页

前端设计系统与业务工作台规范

# anenreo 前端设计系统与业务工作台规范

## 1. 目标

前端不是数据库表的可视化管理器,而是一个能够长期使用的“个人数字操作系统”。页面必须帮助用户理解:

- 当前处于什么状态;
- 最近发生了什么;
- 哪些行动、周期和承诺需要处理;
- 哪些关系需要维护;
- 哪些记录、AI推断和数据来源需要确认;
- 数据是否安全、可导出和可恢复。

本规范适用于:

```text
apps/web       Nuxt 4 + Vue 3 + Nuxt UI 4
apps/mobile    uni-app + Vue 3 + Wot Design Uni + UnoCSS
```

## 2. 视觉语言:Quiet Intelligence 2.0

关键词:安静、可信、克制、档案感、时间感、长期使用、私人空间。

明确避免:

- 大面积紫色渐变;
- 毛玻璃和透明悬浮层作为常规页面背景;
- 所有内容都包在相同白色卡片中;
- 用“AI光效”代替信息层级;
- 重阴影、夸张圆角和无意义动画;
- 只有英文模块代码,没有中文业务说明。

### 2.1 核心颜色

| 语义 | 浅色 | 深色 | 用途 |
|---|---|---|---|
| 页面背景 | `#F3F2ED` | `#111411` | 整体工作空间 |
| 内容表面 | `#FAF9F6` | `#181C19` | 主内容区 |
| 次级表面 | `#ECEBE5` | `#202520` | 辅助说明、筛选和弱强调 |
| 主文字 | `#202723` | `#E8E7E1` | 标题和正文 |
| 次级文字 | `#68716C` | `#A5ADA7` | 元数据与说明 |
| 主色 | `#3F5F54` | `#8FB0A3` | 主操作和当前状态 |
| AI语义 | `#5D6477` | `#9BA2B8` | AI草稿、推断、工具审批 |
| 遗产语义 | `#8A683C` | `#C49B63` | 数字遗产和时间胶囊 |
| 危险 | `#994D4B` | `#D27A77` | 已批准的不可逆设置操作和高风险错误;Record Kernel v2 不提供记录 DELETE |

隐私、错误和状态不能只通过颜色表达;必须同时使用图标、中文文本或边框结构。

## 3. 信息架构

### 3.1 PC主导航

```text
今日
采集
记忆
关系
行动
复盘
个人智能
资产与遗产
全部模块
```

24个模块继续保留稳定路由,但不直接铺满一级导航。高频任务优先,低频模块通过“全部模块”和全局搜索进入。

### 3.2 移动底部导航

```text
今日
采集
记忆
行动
我的
```

移动首页不复刻PC模块目录。“我的”承载AI设置、离线状态和24模块目录。

## 4. 首页:个人状态驾驶舱

首页至少包含:

1. 当前状态;
2. 快速采集;
3. 今天的行动、周期和承诺;
4. 最近记忆;
5. 主动访谈问题;
6. 关系新鲜度提醒;
7. AI、备份和安全入口。

首页对 `SECRET` 和 `LEGACY_ONLY` 只显示安全状态,不展示正文摘要。

## 5. 模块工作台

每个模块统一具有“概览、记录、流程”三种阅读任务,但概览必须按模块原型呈现:

| 原型 | 典型模块 | 展示方式 |
|---|---|---|
| 人物档案 | identity、state | 当前状态、阶段和版本摘要 |
| 排序账本 | constitution、resource、taxonomy | 排名、依据、冲突和分组 |
| 收件箱 | capture、knowledge、integration | 来源、处理状态和失败任务 |
| 时间流 | memory、timeline、review | 时间轴、热度和待复盘 |
| 多媒体 | media | 媒体网格、转写和完整性 |
| 关系 | relationship、commitment | 联系新鲜度、互动和开放循环 |
| 行动 | action、routine | 目标、任务、到期和完成节奏 |
| 健康 | health | 指标、趋势和实验 |
| 决策 | decision | 方案对比、预测、结果和偏差 |
| 访谈 | interview | 问题队列、回答和待确认提取 |
| 证据 | personal-model | 推断、证据、反证和置信度 |
| 助手 | ai-agent | 会话、工具审批和执行审计 |
| 遗产 | legacy、digital-asset | 准备度、接收人、恢复和演练 |

模块顶部指标只基于当前已加载记录,必须明确统计范围。

## 6. 记录、表单和详情

### 6.1 记录卡片

展示:

- 业务时间;
- 标题与安全摘要;
- 两个最重要的模块字段;
- 生命周期状态;
- 隐私等级;
- 修订号。

卡片必须是真实链接或按钮,支持键盘、焦点和足够触控区域。

### 6.2 表单

字段按业务分组,而不是一张从上到下的长表:

```text
基础信息
模块专用分组A
模块专用分组B
来源、时间和隐私
修改原因
```

用户原文、AI草稿、AI推断和用户确认内容的来源必须明确区分。

### 6.3 详情

详情至少区分:

- 用户可读内容;
- 模块专用字段分组;
- 来源、时间和隐私;
- 修订和版本;
- 相关功能;
- 生命周期和危险操作。

Record Kernel v2 只提供可恢复归档,不提供记录 DELETE/永久销毁;若其他配置领域拥有独立不可逆操作,必须沿用同样的确认、响应和权威回读边界,不能把它推导到统一记录页面。

## 7. 响应式布局

PC使用Grid、Flexbox和Container Query:

```text
≥1280px    导航 + 主工作区 + 上下文
900–1279px 导航 + 主工作区,上下文转抽屉
600–899px  折叠导航 + 两列内容
<600px     单列内容
```

模块组件根据所在容器而非只根据视口调整布局。移动端优先保证88rpx左右触控区域和单手操作。

## 8. 状态与反馈

必须提供业务化状态:

- 加载:骨架屏;
- 空状态:解释为什么值得创建第一条记录;
- 错误:说明发生什么、数据是否保存、如何重试;
- 无权限:区分会话失效、重新验证、仅遗产可见;
- 保存成功:说明影响范围;
- 危险操作:分级确认;
- AI执行:显示Provider、模型、输入边界和副作用。

## 9. AI设置

Web和移动端均支持:

- 本地Mock;
- OpenAI兼容接口;
- base URL;
- 模型名;
- API Key只提交给服务端加密保存;
- 页面只显示是否存在和脱敏尾号;
- 固定无隐私内容连接测试;
- 不把Key写入浏览器或移动本地存储。

## 10. 可访问性

- 提供跳到主内容链接;
- 路由变化后聚焦页面标题;
- 页面只有一个主H1;
- 使用 `nav`、`main`、`aside`、`search` 等语义;
- 所有可点击元素支持键盘与清晰 `:focus-visible`;
- 表单错误与字段关联;
- 加载和保存结果使用 `aria-live`;
- 对话框管理焦点;
- 支持 `prefers-reduced-motion`;
- 深色模式单独验证对比度。

## 11. 代码复用边界

共享组件负责一致性:

```text
PageHeader
AppSectionPanel
AppStatePanel
AppMetricTile
PrivacyBadge
RecordStatusBadge
MobileMetricStrip
MobileRecordCard
MobileBottomNav
```

模块专用视图负责业务理解:

```text
TimelineBusinessView
RelationshipBusinessView
ActionBusinessView
HealthBusinessView
DecisionBusinessView
InterviewBusinessView
AiBusinessView
LegacyBusinessView
MobileBusinessSnapshot
```

共享组件不能把所有模块重新压回通用CRUD;模块原型和字段分组必须来自统一展示目录。

## 12. 分层偏好中心

偏好中心使用“基础设置 + 高级设置”两层,不复制后台框架中与个人系统无关的租户、报表和多标签样式。

基础设置:

```text
主题模式
主题预设
字体大小
信息密度
圆角
减少动态效果
```

高级设置:

```text
Web导航模式
内容宽度
右侧上下文栏
粘性操作栏
首页Widget
技术代码显示
移动底部标签
触觉反馈
隐私模糊
单手模式
常用模块数量
```

偏好必须:

- 经过版本化和归一化;
- 默认只保存在本机;
- 支持安全导出、导入和恢复默认;
- 不包含 API Key、业务正文、会话令牌和恢复秘密;
- Web 映射到 Nuxt UI 语义色和 CSS 变量;
- 移动端同时更新 Wot ConfigProvider 与页面级 CSS 变量。

主题预设必须由共享设计令牌统一提供二十套跨端方案。每套方案包含主色、辅助色和强调色三个安全十六进制颜色槽,预览使用混合渐变;Web 使用原生颜色选择器,移动端使用可滚动色板弹层,禁止把颜色值作为普通文本让用户手填。PC 与移动端的主题代码、名称、颜色目录和自定义偏好字段必须保持一致。

## 13. 六类模板与八个专用工作台

六类基础模板用于共享布局和组件:

```text
档案类
网络关系类
行动流程类
评估分析类
智能推断类
高敏感治理类
```

以下核心模块必须拥有专用摘要和交互,不得退回单一通用CRUD:

```text
memory
relationship
action
routine
decision
interview
personal-model
legacy
```

共享模板负责一致性,专用工作台负责业务理解。模块页面可以复用记录列表、状态面板和字段组件,但必须提供本模块独有的指标、业务分组、状态转换和下一步动作。

## 14. 页面状态和空数据原则

- 404、403、409、网络失败和未知错误分别呈现,并提供恢复动作;
- 页面加载结束后必须进入成功或错误状态,不允许永久显示加载;
- 所有聚合数据为空时,首页只显示一个初始化向导;
- 统计数据不足时解释如何建立统计,不显示无意义的四个0;
- 技术枚举默认显示中文,可由“显示技术代码”偏好显示英文代码;
- 粘性和固定操作栏必须为正文预留空间,并正确处理移动端安全区。

## 15. 浏览器验收运行输入

Playwright、截图和页面验证脚本属于有权限的验收客户端,不得在源码中携带登录秘密或绑定某位开发者的浏览器缓存:

- 需要登录的脚本必须由调用方显式提供 `ANENREO_DEMO_PASSWORD`;缺失或空白时在启动浏览器和访问网络前失败;
- `ANENREO_CHROMIUM_PATH` 显式提供时优先使用并验证为普通文件,无效时失败关闭;
- 未显式提供浏览器路径时,只允许检查当前操作系统常见的 Google Chrome 和 Microsoft Edge 安装文件;
- `ANENREO_PC_URL`、`ANENREO_MOBILE_URL` 与 `ANENREO_API_URL` 必须在密码读取和网络访问前解析为字面量 `127.0.0.1`;默认端口分别为 `3000`、`5173`、`4000`,显式隔离端口必须位于 1024~65535 且三端互异,API 路径固定为 `/api/v1`;IPv6、HTTPS、localhost 名称、URL 凭据、查询、哈希、越界/重复端口和远端主机一律失败关闭;
- 禁止从 `.env` 读取验收密码,禁止把固定密码、Cookie、Token 或用户专用 `ms-playwright` 路径写入脚本、报告和截图清单;
- live AI 验收脚本遵守相同输入门禁,但只有获得单独授权时才可运行;普通浏览器验收不得隐式访问 Provider。

这些门禁只证明验收工具的输入安全和可迁移性,不代表页面流程、领域功能或外部 Provider 已完成验收。

## 16. Web 字体与图标的离线构建边界

PC Web 的发布候选必须能够在不访问公共字体服务的环境中完成构建:

- `apps/web/nuxt.config.ts` 必须通过 `ui.fonts=false` 关闭 Nuxt UI 默认带入的 `@nuxt/fonts`;
- 不得显式注册 `@nuxt/fonts`,也不得配置 Google、Google Icons、Bunny、Fontshare、Adobe 等远程字体 Provider;
- 主界面继续使用 `ui-sans-serif`、系统 UI 字体、苹方和微软雅黑等本机字体回退,不从 CSS 导入远程字体;
- Nuxt UI 组件、颜色模式和 Icon 模块继续保留,图标使用仓库依赖中的 `@iconify-json/lucide` 本地集合;
- 若未来引入品牌字体,字体文件必须随源码候选交付或来自已安装的本地 npm 字体包,并补充离线构建与许可证据;
- `check-web-build-network-policy.mjs` 同时检查源码策略和实际 build 日志,发现远程字体端点、Provider 下载、重试或超时即失败。

该门禁只证明 Web 构建的字体网络隔离,不代表页面交互或任何领域功能完成验收。