# focus **Repository Path**: shanzhu2/focus ## Basic Information - **Project Name**: focus - **Description**: 数据化驱动自我目标情况 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-07 - **Last Updated**: 2026-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Focus - 目标管理应用 ## 项目简介 Focus 是一款基于 SwiftUI 开发的个人目标管理应用,帮助用户设定目标、分解任务、跟踪进度,并通过 CloudKit 实现跨设备数据同步。 ## 主要功能 ### 🎯 目标管理 - 创建、编辑、删除目标 - 支持目标分类和标签 - 自动计算目标进度 - 目标完成评分系统 - 目标归档功能 ### ✅ 任务管理 - 为目标添加具体任务 - 任务优先级设置 - 任务状态跟踪(待办、进行中、已完成、超期完成、逾期完成) - 任务质量评估(A/B/C/D 等级) - 自动判断任务完成时效 ### 📊 数据统计 - 多维度数据统计(日/周/月/年) - 任务完成率分析 - 热力图展示(月度/年度) - 实时进度跟踪 ### ☁️ 数据同步 - 基于 CloudKit 的云端同步 - 自动同步机制 - 离线数据缓存 - 冲突自动解决 ### 👤 用户管理 - iCloud 账号登录 - 个人资料管理 - 主题设置(浅色/深色/跟随系统) - 通知设置 ## 技术栈 - **开发语言**: Swift - **UI 框架**: SwiftUI - **数据存储**: Core Data + CloudKit - **架构模式**: MVVM - **最低版本**: iOS 15.0+ ## 项目结构 ``` focus/ ├── focusApp.swift # 应用入口 ├── ContentView.swift # 根视图 ├── Models/ # 数据模型 │ ├── GoalModel.swift │ ├── TaskModel.swift │ └── ... ├── Views/ # 视图组件 │ ├── Home/ │ ├── Goals/ │ ├── Tasks/ │ ├── Statistics/ │ └── Profile/ ├── ViewModels/ # 视图模型 │ ├── HomeViewModel.swift │ ├── GoalViewModel.swift │ └── ... ├── Services/ # 服务层 │ ├── AuthService.swift │ ├── CloudKitService.swift │ ├── SyncEngine.swift │ └── AutoSyncManager.swift └── Resources/ # 资源文件 ``` ## 核心业务逻辑 ### 目标评分计算 目标评分基于关联任务的权重、质量和时效: ``` Score = Σ(任务权重 × 质量分数 × 时效系数) / 总权重 ``` - **质量分数**: A=100, B=85, C=70, D=50 - **时效系数**: - 按时完成: 1.0 - 超期完成(24小时内): 0.9 - 逾期完成(超过24小时): 0.7 ### 数据同步策略 1. 用户操作立即保存到本地缓存 2. 后台异步同步到 CloudKit 3. 同步失败自动重试 4. 网络恢复后继续同步 ## 环境配置 ### 前置要求 - macOS 12.0+ - Xcode 14.0+ - Apple Developer 账号 - iCloud 账号 ### CloudKit 配置 1. 登录 [Apple Developer CloudKit Dashboard](https://icloud.developer.apple.com/dashboard/) 2. 创建 Container: `iCloud.com.shanzhu.focus-todo` 3. 配置 Schema: - **Goal** 记录类型 - **Task** 记录类型 - **UserSettings** 记录类型 详细配置步骤请参考 [CloudKit配置指南.md](focus/CloudKit配置指南.md) ### 本地开发 1. 克隆项目 ```bash git clone cd focus ``` 2. 打开 `focus.xcodeproj` 3. 配置 CloudKit Container - 在 Xcode 中选择项目 - Signing & Capabilities → + Capability → iCloud - 勾选 CloudKit - 选择或创建 Container: `iCloud.com.shanzhu.focus-todo` 4. 运行项目 - 选择目标设备或模拟器 - 点击 Run (⌘R) ## 主要依赖 - SwiftUI (系统框架) - CloudKit (系统框架) - Core Data (系统框架) ## 注意事项 ### CloudKit Schema 配置 如果遇到 "Field 'recordName' is not marked queryable" 错误,请检查 CloudKit Dashboard 中的 Schema 配置: - 确保 `recordName` **不要**被标记为 Queryable - 确保必要的字段(如 `creationDate`、`name`)可以被查询 详细解决方案请参考 [CloudKit配置指南.md](focus/CloudKit配置指南.md) ### 数据隔离 - 使用 CloudKit Private Database - 每个用户只能访问自己的数据 - 不支持跨用户共享 ## 开发规范 - 遵循 MVVM 架构模式 - 使用 SwiftUI 声明式 UI - 代码注释清晰,解释"为什么"而非"如何" - 遵循 Swift 命名规范 --- **注意**: 本项目为个人学习项目,请勿用于商业用途。