更新 app.md

This commit is contained in:
lc
2025-12-20 11:13:50 +08:00
parent 50d5864632
commit eda20835e1

124
app.md
View File

@@ -1,69 +1,85 @@
# 构建 iOS 原生应用 "私密管家" (SecretKeeper)
# Role Definition
你是一位拥有 10 年经验的 iOS 专家,精通 SwiftUI、SwiftData、CryptoKit 和 LocalAuthentication。
你的任务是基于我提供的《需求文档》,在当前的 Xcode 项目 "TopSafe" 中,从零构建核心功能。
## 具体功能模块实现细节:
# 📂 Context: 需求文档 (App Requirements)
"""
# 构建 iOS 原生应用 "私密管家" (SecretKeeper / TopSafe)
**任务:**
请根据以下详细的功能描述和字段定义,开发一个名为“超级保险库”的原生 iOS 应用。
### 一、 详细页面与录入字段定义
## 一、 详细页面与录入字段定义
#### 1. 账号保险库 (Account Vault)
**界面要求** 顶部有 Segmented Control 切换按钮:**全部 / APP/ 网站/邮箱/其它**
**列表页:** 按字母 A-Z 分组,显示项目名称、用户名/邮箱、所属地区标签。
**界面要求:** 顶部有 Segmented Control 切换按钮:全部 / APP / 网站 / 邮箱 / 其它。
**列表页** 按字母 A-Z 分组,显示项目名称、用户名/邮箱、所属地区标签
**录入/编辑页字段:**
- 账号名称 **(Name):** 必填
- **用户名 (Username):** 常用账号标识
- **邮箱地址 (Email):** 支持自动填充
- **手机号 (Phone):** 数字键盘
- **登录密码 (Password):** **核心字段**需加密存储。需实时显示强度条0-100分
- **网站地址 (URL):** URL 格式校验
- **所属地区 (Region):** 默认为“中国”
- **所属分类 (Category):** 从预设分类APP、网站、邮箱、其它中选择分类头像可选择默认的图标
- **详细备注 (Notes):** 多行文本,记录补充信息
- 每个账号提供头像的选择功能app默认提供40个扁平化彩色图标让用户选择
- 账号列表页顶部有 Segmented Control 切换按钮进行分类的筛选
- 账号名称 (Name): 必填。
- 用户名 (Username): 常用账号标识
- 邮箱地址 (Email): 支持自动填充
- 手机号 (Phone): 数字键盘
- 登录密码 (Password): **核心字段**需加密存储。需实时显示强度条0-100分
- 网站地址 (URL): URL 格式校验
- 所属地区 (Region): 默认为“中国”
- 所属分类 (Category): App/Web/Email/Other提供默认图标选择
- 详细备注 (Notes): 多行文本
- 图标选择: 提供 40 个预设扁平化图标
#### 2. 银行卡包 (Bank Cards)
**列表页:** 3D 仿真卡片视图显示银行名称、卡号末四位、CVV码和持卡人。
**界面要求:** 顶部有 Segmented Control 切换按钮: **“全部” / “银行卡” / “信用卡”** 。
**录入/编辑页字段:**
- **卡片类型:** Segmented Control - 储蓄卡 / 信用卡。
- **银行名称 (Bank Name):** TextField - 必填。
- **银行卡号 (Card Number):** TextField - 数字键盘格式化显示4位一空格**加密存储**。
- **持卡人 (Card Holder):** TextField - 自动大写。
- **有效期 (Expiry Date):** TextField - 格式 MM/YY。
- **安全码 (CVV):** SecureField - 3位数字**加密存储**。
- **支付密码 (Pay Password):** SecureField - 6位数字用于在线支付**加密存储**。
- **提款密码 (Withdraw Password):** SecureField - ATM 密码,​**加密存储**。
- **卡面颜色:** Color Picker - 提供预设的 5 种渐变色方案。
**界面要求:** 顶部 Segmented Control全部 / 银行卡 / 信用卡。
**列表页:** **3D 仿真卡片视图**显示银行名称、卡号末四位、CVV持卡人。
**字段细节:**
- 卡号、CVV、支付密码、提款密码必须 **加密存储** (Encrypted)。
- 卡面颜色: 提供 5 种渐变色方案。
#### 3. 媒体库 (Media Vault)
**界面要求:** 顶部有 Segmented Control 切换按钮:​ **“全部” / “照片” / “视频”** ​。
**录入逻辑:**
- **数据源:** 调用 PhotosPicker
- 功能要求 **** 提供在系统相册中导入功能,导入成功后根据用户需要删除系统相册中的相同内容
- 导出 **** 提供导出到系统相册的功能
**界面要求:** Segmented Control全部 / 照片 / 视频。
**功能:**
- 调用 PhotosPicker 导入系统相册内容。
- 导入后询问是否删除系统原图。
- 支持导出回系统相册
*技术提示:大文件请存储在 App 的 Document Directory数据库只存文件路径。*
#### 4. 安全与设置 (Settings)
- 主密码设置 (Master Password)。
- 生物识别 (FaceID) 开关。
- 数据导入导出 (JSON)。
- 主题切换。
- **主密码设置:** 首次启动强制设置6位数字密码派生加密根密钥。
- **生物识别开关:** 开启后App 进入后台自动加锁,唤起时优先使用 FaceID
- **iCloud 同步:** 进提供给内购用户,此功能预留
- **数据重置:** 一键清空数据库及沙盒文件。
- 暗黑/明亮/自动跟随系统主题选择。
- 数据导入导出:提供本地/远程加密json文件的导入导出
## 二、 交互与安全
- 密码强度低于 60 分显示红色警告
- 复制敏感信息时触发触感反馈 (Haptic Feedback)
"""
---
# 🛠 Technical Architecture (技术架构)
### 二、 交互逻辑要求
1. **Data Models (SwiftData)**:
- 创建 `/Models/AccountItem.swift`: 包含上述账号字段。
- 创建 `/Models/BankCard.swift`: 包含银行卡字段,敏感字段应设为 String但在 ViewModel 层进行加密处理。
- 创建 `/Models/MediaItem.swift`: 存储 `filePath` (String) 和 `type` (Enum)。不要直接把图片 Data 存入数据库。
- **安全审计:** 列表页对于强度分低于 60 的密码,显示红色警告图标。
- **触感反馈:** 点击“复制”按钮时,触发震动反馈。
2. **Security Service (Crypto & Auth)**:
- 创建 `/Services/SecurityService.swift`:
- 使用 `LocalAuthentication` 处理 FaceID。
- 使用 `CryptoKit` 提供 `encrypt(string:)``decrypt(data:)` 方法用于处理密码和CVV字段。
3. **UI Implementation (SwiftUI)**:
- **Tab架构**: 使用 `TabView` 分为:账号、银行卡、私密媒体、设置。
- **3D Card**: 在 `BankCardView` 中使用 `Rotation3DEffect` 实现翻转或透视效果。
- **Forms**: 使用原生 `Form``Section` 构建录入页。
# 🚀 Execution Workflow (执行步骤)
**Phase 1: 数据层建设**
- 优先创建 SwiftData 的 Model 类。
- 定义 `Category``CardType` 枚举 (Enum)。
**Phase 2: 核心功能与 UI**
- 生成 `AccountListView``AccountEditView` (含密码强度计算逻辑)。
- 生成 `BankCardListView` (3D卡片 UI) 和录入页。
- 生成 `MediaVaultView` (集成 PhotosUI)。
**Phase 3: 入口重构**
- 重写 `ContentView`,添加 TabView 导航。
- 添加 App 启动时的 FaceID 验证遮罩层 (LockView)。
# Action
请先分析需求,然后**直接写入/生成**上述所有文件。请确保代码可以直接在 Xcode 16+ 环境编译通过。