85 lines
3.8 KiB
Markdown
85 lines
3.8 KiB
Markdown
# Role Definition
|
||
你是一位拥有 10 年经验的 iOS 专家,精通 SwiftUI、SwiftData、CryptoKit 和 LocalAuthentication。
|
||
你的任务是基于我提供的《需求文档》,在当前的 Xcode 项目 "TopSafe" 中,从零构建核心功能。
|
||
|
||
# 📂 Context: 需求文档 (App Requirements)
|
||
"""
|
||
# 构建 iOS 原生应用 "私密管家" (SecretKeeper / TopSafe)
|
||
|
||
## 一、 详细页面与录入字段定义
|
||
|
||
#### 1. 账号保险库 (Account Vault)
|
||
**界面要求:** 顶部有 Segmented Control 切换按钮:全部 / APP / 网站 / 邮箱 / 其它。
|
||
**列表页:** 按字母 A-Z 分组,显示项目名称、用户名/邮箱、所属地区标签。
|
||
**录入/编辑页字段:**
|
||
- 账号名称 (Name): 必填。
|
||
- 用户名 (Username): 常用账号标识。
|
||
- 邮箱地址 (Email): 支持自动填充。
|
||
- 手机号 (Phone): 数字键盘。
|
||
- 登录密码 (Password): **核心字段**,需加密存储。需实时显示强度条(0-100分)。
|
||
- 网站地址 (URL): URL 格式校验。
|
||
- 所属地区 (Region): 默认为“中国”。
|
||
- 所属分类 (Category): App/Web/Email/Other,提供默认图标选择。
|
||
- 详细备注 (Notes): 多行文本。
|
||
- 图标选择: 提供 40 个预设扁平化图标。
|
||
|
||
#### 2. 银行卡包 (Bank Cards)
|
||
**界面要求:** 顶部 Segmented Control:全部 / 银行卡 / 信用卡。
|
||
**列表页:** **3D 仿真卡片视图**,显示银行名称、卡号末四位、CVV、持卡人。
|
||
**字段细节:**
|
||
- 卡号、CVV、支付密码、提款密码:必须 **加密存储** (Encrypted)。
|
||
- 卡面颜色: 提供 5 种渐变色方案。
|
||
|
||
#### 3. 媒体库 (Media Vault)
|
||
**界面要求:** Segmented Control:全部 / 照片 / 视频。
|
||
**功能:**
|
||
- 调用 PhotosPicker 导入系统相册内容。
|
||
- 导入后询问是否删除系统原图。
|
||
- 支持导出回系统相册。
|
||
*技术提示:大文件请存储在 App 的 Document Directory,数据库只存文件路径。*
|
||
|
||
#### 4. 安全与设置 (Settings)
|
||
- 主密码设置 (Master Password)。
|
||
- 生物识别 (FaceID) 开关。
|
||
- 数据导入导出 (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 存入数据库。
|
||
|
||
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+ 环境编译通过。 |