# Airhub App PRD (产品需求文档)
## 产品概述
Airhub 是一款用于连接和控制智能硬件设备的移动应用,支持蓝牙配对、WiFi配网、NFC识别和设备控制。
---
## 支持的产品
| 产品 | 图标 | AI功能 | 连接方式 | 主题色 | 备注 |
|------|------|--------|----------|--------|------|
| **毛绒机芯** | 卡皮巴拉 + AI角标 | ✅ | 蓝牙 + WiFi | 暖棕色 | 完整流程 |
| **电子吧唧 AI版** | 圆形屏幕 + AI角标 | ✅ | 蓝牙 + WiFi | 科技蓝 | 完整流程 |
| **普通电子吧唧** | 圆形屏幕 (无角标) | ❌ | 仅蓝牙 | 浅灰蓝 | 仅蓝牙传图 |
| **AI手链** | 手绳图标 + AI角标 | ✅ | NFC扫描 | 活力橙 | RFID标签,无电子元件 |
| **洛天依** | 洛天依形象 | ✅ | 外部链接 | 青绿色 | 跳转下载专属APP |
> **设备识别**:蓝牙设备通过SN码识别,AI手链通过NFC RFID识别
---
## 页面架构
```
首页 (立即连接)
│
├─ 蓝牙搜索页 ──→ 发现设备 ──→ 设备详情页
│ │
│ ├─ 毛绒机芯/电子吧唧AI → WiFi配网 → 设备控制页
│ └─ 普通电子吧唧 → 直接进入设备控制页
│
├─ NFC扫描 (全局) ──→ AI手链详情页
│
└─ 产品选择页 (卡片列表) ──→ 各设备详情页
└─ 洛天依 → 外部下载链接
```
---
## 核心页面
### 0. APP启动逻辑
```
APP启动
├─ 首次使用 (无已连接设备) → 显示欢迎首页
└─ 有已连接设备 → 显示最后操作的设备首页
```
> 使用 localStorage 记录 `lastActiveDevice`,每次操作设备时更新
### 1. 欢迎首页 ✅ 已完成
- Logo (像素风) + 吉祥物 (浮动) + 渐变背景 + "立即连接"
- **仅首次使用或无设备时显示**
### 2. 蓝牙搜索页
- 马里奥问号箱子动画 → 发现设备变换为产品图标
- SN码识别设备类型
### 3. 产品选择页
- 卡片形式展示所有产品
- 点击跳转对应设备页面
- 洛天依卡片 → 外部下载链接
### 4. 设备控制页 (Device Control)
#### 4.1 通用结构
- **头部**:沉浸式 Header,包含切换设备入口、设备状态指示。
- **底部**:悬浮式 Tab 导航栏 (Icon Only),提供核心功能入口。
#### 4.2 毛绒机芯 (卡皮巴拉) 首页
- **UI布局**:
- **Header**:
- 左侧:🔄 切换按钮 (跳转产品列表)
- 右侧:
- 🟢 在线状态 (绿点 + "在线")
- 🔋 电量显示 (Icon + 百分比)
- ⚙️ 设置入口
- **Main (视觉核心)**:
- 居中展示卡皮巴拉形象 (PNG)
- 交互:待机呼吸动画
- **Footer (功能导航)**:
- 🏠 **首页 (Home)**:当前设备状态
- 📖 **故事 (Story)**:AI故事生成入口
- 🎵 **歌曲 (Music)**:音乐/音效控制
- 👤 **我的 (User)**:设备专属个人中心
- **交互弹窗:故事生成器 (Story Generator)**:
- **入口**:点击底部的 [故事] Tab。
- **逻辑**:
- **Tab分类**:角色 / 环境 / 道具。
- **限制**:每类最多选3个,总数最多9个。
- **自动跳转**:单类选满3个后,自动跳转下一 Tab。
- **选中态**:右上角“毛绒徽章”对钩 (Apple Style),无顶部预览栏。
### 5. WiFi配网页
- 选择网络 → 输入密码 → 配网进度 → 成功/失败
---
## 特殊逻辑
### NFC全局监听
```
APP任意页面 + 扫描AI手链NFC
├─ APP未打开 → 拉起APP → 跳转AI手链页面
└─ APP已打开 → 直接跳转AI手链页面
```
### 切换设备
- 所有设备详情页头部有 🔄 图标
- 点击跳转到产品选择页
---
## 设计规范 (Visual Design System)
### 🎨 双层主题色体系
Airhub 采用 **双层主题色体系**,确保品牌统一性的同时支持产品个性化:
#### 1️⃣ App 级主视觉 (Global Theme)
> 适用范围:首页 → 蓝牙搜索 → WiFi配网 → 产品列表页
| 属性 | 值 | 说明 |
|------|-----|------|
| **主渐变** | `#22D3EE → #3B82F6 → #6366F1 → #8B5CF6` | 青 → 蓝 → 靛 → 紫,水平渐变 |
| **背景** | 粉紫流动渐变 | 柔和梦幻感,多层 radial-gradient 叠加 |
| **按钮** | 3D 发光胶囊 (见下方质感规范) | 所有主要 CTA 按钮 |
#### 2️⃣ 产品级主题色 (Product Theme)
> 适用范围:UI主色调、卡片背景、按钮激活态。采用 **4色阶全息渐变** 以提升通透感与高级感。
| 产品 | 标识色 | 4色阶渐变定义 (Left → Right) | 风格描述 |
|------|------|----------|------|
| **毛绒机芯** | 暖杏褐 | `#E6B98D` (35%) `#E8C9A8` (30%) `#D4A373` (25%) `#B07D5A` | **醇厚**:左侧杏色起手不发白,右侧收于深褐,质感扎实。 |
| **电子吧唧AI** | 科技青 | `#22D3EE` (35%) `#60A5FA` (30%) `#818CF8` (25%) `#A78BFA` | **鲜艳**:左侧高亮青色(同首页按钮),右侧转紫,色彩跨度大。 |
| **普通吧唧** | 柔光紫 | `#C084FC` (35%) `#D8B4FE` (30%) `#C4B5FD` (25%) `#A78BFA` | **通透**:左侧亮紫,中间过渡到柔和淡紫,避免油漆感。 |
| **AI手链** | 活力橙 | `#FDBA74` (35%) `#FB923C` (30%) `#FBAF85` (25%) `#E07B54` | **轻盈**:左侧亮橙,右侧收于赤陶色,拒绝死板橘红。 |
| **洛天依** | 未来绿 | `#34D399` (35%) `#5EEAD4` (30%) `#22D3EE` (25%) `#2DD4BF` | **偏光**:翠绿 → 冰蓝 → 青色,极具未来感的冷色流动。 |
> **规则**:
> 1. **左实右虚**:渐变左侧起始色必须有足够饱和度,严禁使用近白色。
> 2. **4色阶**:必须包含4个色彩节点,模仿光线在玉石/光盘表面的折射效果。
> 3. **通透尾部**:渐变右侧颜色稍微提亮或降低"实心感",保持呼吸感。
---
### ✨ 按钮质感规范 (Glowing Pill Button Standard)
> **无论主题色如何变化,所有主要按钮的"质感"必须统一。**
```
┌─────────────────────────────────────────────┐
│ ▓▓▓ 顶部高光层 (rgba(255,255,255,0.15)) ▓▓▓ │
│ │
│ 按钮文字 (白色) │
│ │
│ ▒▒▒ 底部暗边 (inset shadow) ▒▒▒ │
└─────────────────────────────────────────────┘
↓↓↓ 外发光 (主题色, opacity 0.15~0.4) ↓↓↓
```
| 质感属性 | CSS 实现 |
|----------|----------|
| **形状** | `border-radius: 50% of height` (胶囊形) |
| **3D 凸起** | `inset 0 1px 1px rgba(255,255,255,0.3)` 顶部高光 |
| **底部暗边** | `inset 0 -1px 2px rgba(0,0,0,0.1)` |
| **外发光** | `0 0 15px {主题色/0.35}, 0 0 30px {主题色/0.25}, 0 6px 20px {主题色/0.4}` |
| **扫光动画** | `shine` 动画,3s 周期 |
### 3. Visual System & Themes (New Standard)
* **Global / Home Page (AI Tech)**:
* **Theme**: High-Tech, futuristic, crisp.
* **Colors**: Purple, Blue, Pink Gradients.
* **Buttons**: Glassmorphism or Tech Gradient.
* **Device Page: Capybara (Warm Plush)**:
* **Theme**: Soft, organic, warm, friendly.
* **Colors**: "Plush Gradient" -> Soft Tan (`#ECCFA8`) to Warm Brown (`#C99672`).
* **Goal**: Match the physical product "Plush Machine Core" feel.
* **Note**: Avoid "Vibrant Tech Orange" (Safety/Alert color) for main actions here.
### 4. Technical Architecture
* **Frontend**: Native JS, CSS Variables for theming.
| **按压反馈** | `transform: scale(0.98)` |
#### CSS 变量定义 (建议)
```css
:root {
/* App 全局主题 */
--theme-gradient: linear-gradient(90deg, #22D3EE 0%, #3B82F6 35%, #6366F1 65%, #8B5CF6 100%);
--theme-glow-1: rgba(34, 211, 238, 0.35);
--theme-glow-2: rgba(99, 102, 241, 0.25);
--theme-glow-3: rgba(99, 102, 241, 0.4);
}
/* 产品主题覆盖 (示例:毛绒机芯) */
.theme-plush-core {
--theme-gradient: linear-gradient(90deg, #D4A574 0%, #C08552 100%);
--theme-glow-1: rgba(212, 165, 116, 0.35);
--theme-glow-2: rgba(192, 133, 82, 0.25);
--theme-glow-3: rgba(192, 133, 82, 0.4);
}
```
---
### 🧩 视觉一致性规则
| 规则 | 说明 |
|------|------|
| **背景统一** | 所有页面使用相同的动态渐变背景系统 |
| **按钮质感统一** | 所有主要按钮遵循 "Glowing Pill" 规范,仅颜色变化 |
| **卡片风格** | 轻量玻璃拟态 (`bg-white/20~30 + blur`),带 `drop-shadow` 光晕 |
| **动作按钮** | **Glass Halo Capsule** (见下方详细规范) |
| **图标风格** | 像素风 SVG (Pixel Art),统一 24x24 viewBox |
| **动效时长** | 微交互 150-300ms,页面过渡 300-500ms |
| **边框策略** | 玻璃态元素使用 `1px rgba(255,255,255,0.3)` 弱边框 |
---
### ✨ 毛玻璃光晕胶囊规范 (Glass Halo Capsule Standard)
> **用于卡片内部或深色渐变背景上的次要/功能性操作按钮。**
| 属性 | 实现方式 |
|------|----------|
| **背景** | `rgba(255, 255, 255, 0.2)` + `backdrop-filter: blur(8px)` |
| **边框** | `1px solid rgba(255, 255, 255, 0.3)` |
| **形状** | `border-radius: 20px` (胶囊形) |
| **文字/图标** | 针对不同操作设置颜色 (如 `#EF4444` 或 `#B07D5A`) |
| **防遮挡光晕** | **核心重点**:使用 `filter: drop-shadow(0 0 2px #FFF) drop-shadow(0 0 5px rgba(255,255,255,0.8))` 确保彩色内容在深色背景下不“吃字”。 |
---
### 📜 渐变遮罩滚动页规范 (Gradient Mask Scroll Standard)
> **用于设置页、法务文档(用户协议、隐私政策)等长文本滚动页面。**
#### 核心逻辑
- **Header**:背景**完全透明**,不使用毛玻璃,保持视觉纯净。
- **Content**:内容区域使用 CSS `mask-image` 实现顶部淡出效果,滚动时文字优雅消失,而非被 Header 硬切。
#### 参数标准
| 属性 | 值 | 说明 |
|------|-----|------|
| **内容顶部间距** | `calc(safe-area + 120px)` | 内容初始位置,避开 Header |
| **遮罩透明区** | `0px ~ 100px` | 此区域完全透明(文字不可见) |
| **遮罩过渡区** | `100px ~ 130px` | 30px 渐变过渡至完全显示 |
#### CSS 实现
```css
.content-scroll {
padding-top: calc(env(safe-area-inset-top, 20px) + 120px);
/* 淡出遮罩 */
-webkit-mask-image: linear-gradient(to bottom, transparent 0px, transparent 100px, black 130px, black 100%);
mask-image: linear-gradient(to bottom, transparent 0px, transparent 100px, black 130px, black 100%);
/* 隐藏滚动条 */
scrollbar-width: none;
}
.content-scroll::-webkit-scrollbar { display: none; }
```
#### 适用页面
- `privacy.html` - 隐私政策
- `agreement.html` - 用户协议
- `collection-list.html` - 个人信息收集清单
- `sharing-list.html` - 第三方信息共享清单
- `settings.html` - 设置页 (已应用)
---
### 🔧 共享 UI 组件规范
> **所有页面必须使用以下共享组件**,定义在 `styles.css` 中,确保一处修改全局生效。
#### Layout Tokens (CSS 变量)
```css
:root {
--header-padding-top: calc(env(safe-area-inset-top, 20px) + 12px);
--page-padding-x: 20px;
--safe-area-bottom: env(safe-area-inset-bottom, 20px);
}
```
#### 共享组件类名
| 类名 | 用途 | 规格 |
|------|------|------|
| `.page-header` | 页面头部 | Grid 布局 (`40px 1fr 40px`) 实现完美居中 |
| `.back-btn` | 返回按钮 | 40×40px, 12px圆角, 简单玻璃磨砂 (首页/蓝牙同款) |
| `.page-title` | 页面标题 | 18px/700, 居中 (Grid Column 2) |
| `.primary-btn` | 主按钮 | Glowing Pill 质感, 高度 58px |
| `.scroll-container` | 滚动容器 | iOS 惯性滚动, 统一内边距 |
#### 使用示例
```html
```
---
### 字体规范
| 用途 | 字体 | 字重 | 说明 |
|------|------|------|------|
| **标题/Display** | Outfit | 500-700 | 现代几何无衬线,略带圆润,兼具科技感与友好感 |
| **正文/UI** | DM Sans | 400-600 | 几何无衬线,干净利落,阅读体验优秀 |
| **Logo/像素元素** | Press Start 2P | 400 | 像素风复古字体 |
| **回退字体栈** | -apple-system, BlinkMacSystemFont, Roboto | - | 系统字体兜底(含中文) |
> **字体选择理念 (遵循 frontend-design 规范)**
> - 拒绝 Inter/Arial/Roboto 等"AI 味"通用字体
> - Display + Body 双字体搭配,层次分明
> - Outfit 的圆润几何感与卡皮巴拉的友好气质匹配
> - DM Sans 比 Inter 更有个性,同时保持极佳可读性
> - 两者均为 Google Fonts 免费开源字体
---
## 技术接口预留
```javascript
// 蓝牙设备发现回调
onBluetoothDeviceFound(device) { /* SN码解析 */ }
// NFC扫描回调
onNFCTagRead(tagId) { /* RFID识别 */ }
// 设备类型枚举
DEVICE_TYPES = {
PLUSH_CORE: 'plush_core', // 毛绒机芯
BADGE_AI: 'badge_ai', // 电子吧唧AI
BADGE_BASIC: 'badge_basic', // 普通电子吧唧
BRACELET_AI: 'bracelet_ai', // AI手链
LUOTIANYI: 'luotianyi' // 洛天依
}
```
---
*文档最后更新: 2026-02-04*