349 lines
13 KiB
Markdown
349 lines
13 KiB
Markdown
# 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
|
||
<!-- Grid 让标题绝对居中,无需 Spacer -->
|
||
<header class="page-header">
|
||
<button class="back-btn">←</button>
|
||
<h1 class="page-title">选择产品</h1>
|
||
</header>
|
||
<main class="scroll-container">
|
||
<!-- 页面内容 -->
|
||
</main>
|
||
```
|
||
|
||
---
|
||
|
||
### 字体规范
|
||
|
||
| 用途 | 字体 | 字重 |
|
||
|------|------|------|
|
||
| **正文/UI** | Inter | 400-600 |
|
||
| **Logo/像素元素** | Press Start 2P | 400 |
|
||
| **回退字体栈** | -apple-system, BlinkMacSystemFont, Roboto | - |
|
||
|
||
> **为什么选择 Inter?**
|
||
> - 专为数字屏幕设计,高可读性
|
||
> - 被 GitHub、Figma、Linear 等知名产品使用
|
||
> - 支持多语言,中英文混排效果好
|
||
> - 免费开源,无授权问题
|
||
|
||
---
|
||
|
||
## 技术接口预留
|
||
|
||
```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*
|