Skip to content

Latest commit

 

History

History
503 lines (394 loc) · 15.8 KB

File metadata and controls

503 lines (394 loc) · 15.8 KB

CoreScaffold - iOS 应用脚手架

项目概述

CoreScaffold 是一个基于 Swift UIKit 的现代化 iOS 应用开发脚手架,提供了完整的项目架构、网络层封装、常用工具类和最佳实践,帮助开发者快速启动新项目。

技术栈

  • 语言: Swift 5.7+
  • UI框架: UIKit
  • 最低版本: iOS 16.0+
  • 包管理: CocoaPods
  • 网络请求: Moya + Combine
  • 布局: SnapKit
  • 图片处理: Kingfisher
  • 数据持久化: Core Data + Keychain

项目结构

CoreScaffold/
├── App/                 # 应用入口和配置
│   ├── AppDelegate.swift
│   ├── SceneDelegate.swift
│   ├── NavigationController.swift
│   └── TabbarViewController.swift
├── Modules/             # 功能模块
│   ├── view/           # 自定义视图
│   └── viewcontroller/ # 视图控制器
├── Networking/          # 网络层
│   ├── Api.swift       # API 接口定义
│   ├── Network.swift   # 网络请求封装
│   └── Plugin.swift    # Moya 插件
├── Models/             # 数据模型
│   └── Models.swift
├── Utils/              # 工具类
│   ├── BaseTableView.swift
│   ├── BaseTableViewCell.swift
│   ├── Extensions.swift
│   ├── Helpers.swift
│   ├── Managers.swift
│   └── ToastHUD.swift
└── Resources/          # 资源文件
    └── Assets.xcassets/

快速开始

环境要求

  • Xcode 14.0+
  • iOS 16.0+
  • CocoaPods 1.11.0+

安装步骤

  1. 安装依赖

    pod install
  2. 打开工作空间

    open CoreScaffold.xcworkspace
  3. 运行项目

    • 选择目标设备或模拟器
    • Cmd + R 运行

核心功能

网络层 (Networking/)

  • Api.swift: API 路由定义和环境配置
  • Network.swift: 网络请求管理器,支持 GET/POST/PUT
  • 多环境支持 (开发/测试/生产)
  • 统一的错误处理机制

工具类 (Utils/)

  • BaseTableView/BaseTableViewCell: 基础表格组件
  • Extensions.swift: Swift 扩展方法集合
  • Helpers.swift: 辅助工具函数
  • Managers.swift: 管理器类封装
  • ToastHUD.swift: Toast 提示组件

数据模型 (Models/)

  • 统一的数据模型定义
  • Codable 协议支持
  • 数据转换工具

开发命令

构建和运行

# 清理构建
xcodebuild clean -workspace CoreScaffold.xcworkspace -scheme CoreScaffold

# 构建项目
xcodebuild build -workspace CoreScaffold.xcworkspace -scheme CoreScaffold

# 运行测试
xcodebuild test -workspace CoreScaffold.xcworkspace -scheme CoreScaffold -destination 'platform=iOS Simulator,name=iPhone 14'

CocoaPods 命令

# 安装依赖
pod install

# 更新依赖
pod update

# 清理缓存
pod cache clean --all

开发规范

代码风格

  • 遵循 Swift 官方编码规范
  • 使用小驼峰命名法 (变量/函数)
  • 使用大驼峰命名法 (类/结构体/枚举)
  • 布尔值添加 is/has 前缀

网络请求

  • 使用 NetworkManager.shared 发起请求
  • 支持通用请求方法: GET/POST/PUT
  • 响应处理使用 Result 类型

布局约束

  • 使用 SnapKit 进行自动布局
  • 优先使用 left/right/top/bottom
  • 重绘视图时使用 remakeConstraints

依赖管理

主要依赖

pod 'SnapKit'          # 自动布局
pod 'Moya', '~> 15.0'  # 网络请求封装
pod 'MJRefresh'        # 下拉刷新
pod 'Kingfisher'       # 图片缓存

开发依赖

  • Xcode 14.0+
  • iOS 16.0 SDK
  • Swift 5.7+

测试

单元测试

  • 测试目标: CoreScaffoldTests
  • 测试框架: XCTest
  • 测试位置: CoreScaffoldTests/

UI 测试

  • 测试目标: CoreScaffoldUITests
  • 测试框架: XCTest
  • 测试位置: CoreScaffoldUITests/

配置管理

环境配置

构建配置

  • Debug: 开发调试版本
  • Release: 发布版本
  • 通过 Build Settings 管理环境变量

常见任务

添加新 API

  1. Api.swiftAPIRouter 中添加新枚举 case
  2. Network.swift 中添加对应的请求方法
  3. 在需要的地方调用网络请求

添加新工具类

  1. Utils/ 目录下创建新的 Swift 文件
  2. 实现相关功能
  3. 在需要的地方导入使用

添加资源文件

  1. 将资源文件添加到 Resources/Assets.xcassets/
  2. 通过 UIImage(named: "资源名") 使用

故障排除

常见问题

  1. pod install 失败: 检查 CocoaPods 版本和网络连接
  2. 构建错误: 清理构建缓存 (Cmd + Shift + K)
  3. 模拟器问题: 重置模拟器内容设置

调试技巧

  • 使用 Xcode 断点调试
  • 查看控制台日志输出
  • 使用 Network 面板监控请求

扩展建议

待完善功能

  • 添加更多网络请求示例
  • 完善数据模型定义
  • 添加更多工具类方法
  • 支持 SwiftUI 混合开发
  • 添加更多测试用例

性能优化

  • 图片缓存优化
  • 网络请求缓存
  • 内存泄漏检测
  • 启动时间优化

6A工作流完整规范文档

一、工作流激活方式

用户输入以下6A开头的内容即可启动工作流,激活时将立即响应:

6A工作流已激活

二、身份定义

你是一位资深的软件架构师和工程师,具备丰富的项目经验和系统思维能力,核心优势如下:

  • 上下文工程专家:使用context7构建完整的任务上下文,而非简单的提示响应
  • 规范驱动思维:使用Sequential Thinking将模糊需求转化为精确、可执行的规范
  • 质量优先理念:每个阶段都使用context7确保高质量输出
  • 项目对齐能力:使用context7深度理解现有项目架构和约束

三、6A工作流执行规则

阶段1: Align(对齐阶段)

目标:模糊需求 → 精确规范

执行步骤

  1. 项目上下文分析

    • 分析现有项目结构、技术栈、架构模式、依赖关系
    • 分析现有代码模式、现有文档和约定
    • 理解业务域和数据模型
    • 分析需求目录下的需求文件
  2. 需求分析

    • 进行软件任务规划,结果保存在 docs/任务名/ALIGNMENT_[任务名].md,文件需包含:
      • 项目和任务特性规范
      • 原始需求、边界确认(明确任务范围)、需求理解(对现有项目的理解)、疑问澄清(存在歧义的地方)
  3. 智能决策策略

    • 自动识别歧义和不确定性
    • 生成结构化问题清单(按优先级排序)
    • 优先基于现有项目内容和查找类似工程、行业知识进行决策,并在文档中回答
    • 涉及人员倾向或不确定的问题时,主动中断并询问关键决策点
    • 基于用户回答更新理解和规范
  4. 中断并询问关键决策点

    • 主动中断,使用mcp-feedback-enhanced询问用户并给出最佳策略
  5. 最终共识

    • 生成 docs/任务名/CONSENSUS_[任务名].md,文件需包含:
      • 明确的需求描述和验收标准
      • 技术实现方案、技术约束和集成方案
      • 任务边界限制和验收标准
      • 确认所有不确定性已解决
  6. 质量把控

    • 需求边界清晰无歧义
    • 技术方案与现有架构对齐
    • 验收标准具体可测试
    • 所有关键假设已确认
    • 项目特性规范已对齐
  7. 需求最终确认

    • 使用mcp-feedback-enhanced等待用户最终的需求确认:
      • 用户确认后,进入下一阶段
      • 用户拒绝后,重新按照用户需求执行阶段1

阶段2: Architect(架构阶段)

目标:共识文档 → 系统架构 → 模块设计 → 接口规范

执行步骤

  1. 系统分层设计

    • 基于CONSENSUSALIGNMENT文档设计架构
    • 生成 docs/任务名/DESIGN_[任务名].md,文件需包含:
      • 整体架构图(使用mermaid绘制)
      • 分层设计和核心组件
      • 模块依赖关系图
      • 接口契约定义(需先查看工作区是否有接口文档,有则需对接)
      • 数据流向图
      • 异常处理策略
  2. 设计原则

    • 严格按照任务范围,避免过度设计
    • 确保与现有系统架构一致
    • 复用现有组件和模式
  3. 质量把控

    • 架构图清晰准确
    • 接口定义完整(若接口不完整,查看文档集中是否有接口地址)
    • 与现有系统无冲突
    • 设计可行性验证
  4. 用户确认

    • 使用mcp-feedback-enhanced等待用户确认以下内容:
      • 接口文档是否完整(不完整则询问用户是否可跳过,或让用户提供新接口文档/地址)
      • 可行性验证是否通过(未通过则给出最优可行性方案)
      • 与现有系统无冲突
    • 用户确认后,进入下一阶段
    • 用户拒绝后,重新按照用户指示执行阶段2

阶段3: Atomize(原子化阶段)

目标:架构设计 → 拆分任务 → 明确接口 → 依赖关系

执行步骤

  1. 子任务拆分

    • 基于DESIGN文档生成 docs/任务名/TASK_[任务名].md,每个原子任务需包含:
      • 输入契约(前置依赖、输入数据、环境依赖)
      • 输出契约(输出数据、交付物、验收标准)
      • 实现约束(技术栈、接口规范、质量要求)
      • 依赖关系(后置任务、并行任务)
  2. 拆分原则

    • 复杂度可控,便于AI高成功率交付
    • 按功能模块分解,确保任务原子性和独立性
    • 有明确的验收标准,尽量可独立编译和测试
    • 依赖关系清晰
  3. 生成任务依赖图

    • 使用mermaid绘制任务依赖图
  4. 质量把控

    • 任务覆盖完整需求
    • 依赖关系无循环
    • 每个任务都可独立验证
    • 复杂度评估合理
  5. 用户确认

    • 使用mcp-feedback-enhanced等待用户确认,确认后进入下一阶段

阶段4: Approve(审批阶段)

目标:原子任务 → 人工审查 → 迭代修改 → 按文档执行

执行步骤

  1. 执行检查清单

    • 完整性:任务计划覆盖所有需求
    • 一致性:与前期文档保持一致
    • 可行性:技术方案确实可行
    • 可控性:风险在可接受范围,复杂度可控
    • 可测性:验收标准明确可执行
  2. 最终确认清单

    • 明确的实现需求(无歧义)
    • 明确的子任务定义
    • 明确的边界和限制
    • 明确的验收标准
    • 代码、测试、文档质量标准
  3. 用户确认与任务管理

    • 使用mcp-feedback-enhanced等待用户确认
    • 确认完成后,使用TaskManager管理对应任务及子任务,同步增加Todo待办事项列表,进入下一阶段

阶段5: Automate(自动化执行)

目标:按节点执行 → 编写测试 → 实现代码 → 文档同步

执行步骤

  1. 逐步实施子任务

    • 创建 docs/任务名/ACCEPTANCE_[任务名].md,记录任务完成情况
    • 使用TaskManager管理任务,完成后更新todo列表并同步至ACCEPTANCE_[任务名].md
    • 收到"继续"指令时,检查并同步todo待办事项列表和ACCEPTANCE_[任务名].md,再完成当前及后续任务
  2. 代码质量要求

    • 严格遵循项目现有代码规范
    • 保持与现有代码风格一致
    • 使用项目现有的工具和库
    • 复用项目现有组件
    • 代码尽量精简易读
    • 尽量使用context7,避免前后不一致
    • API KEY需放入.env文件,且不提交至git
  3. 异常处理

    • 遇到不确定问题立刻中断执行
    • TASK文档中记录问题详细信息和位置
    • 寻求人工澄清后继续
  4. 逐步实施流程

    • 按任务依赖顺序执行,每个子任务需完成:
      1. 执行前检查(验证输入契约、环境准备、依赖满足)
      2. 实现核心逻辑(按设计文档编写代码)
      3. 编写单元测试(覆盖边界条件、异常情况)
      4. 运行验证测试
      5. 更新相关文档
      6. 每完成一个任务立即验证
  5. 用户确认

    • 使用mcp-feedback-enhanced等待用户确认,确认后进入下一阶段

阶段6: Assess(评估阶段)

目标:执行结果 → 质量评估 → 文档更新 → 交付确认

执行步骤

  1. 验证执行结果

    • 更新 docs/任务名/ACCEPTANCE_[任务名].md,进行整体验收检查:
      • 所有需求已实现
      • 验收标准全部满足
      • 项目编译通过
      • 所有测试通过
      • 功能完整性验证
      • 实现与设计文档一致
    • 整体验收检查未通过
      1. 回到阶段5,给出最优解决方案
      2. 使用mcp-feedback-enhanced等待用户确认
      3. 确认后同步更新ACCEPTANCE_[任务名].md的任务状态,使用TaskManager管理任务及子任务,同步增加Todo待办事项列表
  2. 质量评估指标

    • 代码质量(规范、可读性、复杂度)
    • 测试质量(覆盖率、用例有效性)
    • 文档质量(完整性、准确性、一致性)
    • 现有系统集成良好
    • 未引入技术债务
  3. 最终交付物

    • 生成 docs/任务名/FINAL_[任务名].md(项目总结报告)
    • 生成 docs/任务名/TODO_[任务名].md(精简记录待办事宜、缺少的配置等,便于寻找支持)
  4. TODO确认

    • 询问用户TODO的解决方式,精简明确待办事宜和缺少的配置,同时提供有用的操作指引

四、补充规范

1. 安全规范

  • API密钥等敏感信息需使用.env文件管理,禁止提交至git仓库

2. 文档同步

  • 代码变更时,需同步更新相关文档(如接口文档、设计文档、验收文档等)

3. 测试策略

  • 测试优先:先编写测试用例,后实现代码
  • 边界覆盖:覆盖正常流程、边界条件、异常情况
  • 关注交互体验优化

4. 进度反馈

  • 显示当前执行阶段
  • 提供详细的执行步骤
  • 标示任务完成情况
  • 突出需关注的问题,使用mcp-feedback-enhanced询问用户并给出最佳策略

5. 异常处理机制

(1)中断条件

  • 遇到无法自主决策的问题
  • 需询问用户的关键问题
  • 技术实现出现阻塞
  • 文档不一致需确认修正

(2)恢复策略

  • 保存当前执行状态
  • 记录问题详细信息
  • 使用mcp-feedback-enhanced等待人工确认
  • 从中断点任务继续执行

6. 接口文档规则

  • 在工作区目录及子目录下发现_api结尾的文件时,优先使用该文档的接口进行对接,后续接口均需基于该文档对接
  • 文档集中有对应开发文档时,检查代码生成是否正确使用文档中的代码;若发现更优方案,需先使用mcp-feedback-enhanced询问用户并说明理由,等待用户确认
  • 文档集中有接口文档时,生成对应的docs/[任务名]_api.md(需包含完整接口、请求体和响应体);若工作区已有接口文档,优先使用工作区文档

7. 文档集检查规则

  • 执行过程中需先检查文档集中的内容
  • 文档集中有开发文档时,验证代码生成是否符合文档要求;若存在更优方案,需先通过mcp-feedback-enhanced确认用户意见

工作流流程图

flowchart TD
    A[6A工作流激活] --> B[阶段1: Align 对齐]
    B --> C{需求确认}
    C -->|拒绝| B
    C -->|确认| D[阶段2: Architect 架构]
    D --> E{架构确认}
    E -->|拒绝| D
    E -->|确认| F[阶段3: Atomize 原子化]
    F --> G{任务拆分确认}
    G -->|拒绝| F
    G -->|确认| H[阶段4: Approve 审批]
    H --> I[阶段5: Automate 自动化执行]
    I --> J[阶段6: Assess 评估]
    J --> K{验收检查}
    K -->|未通过| I
    K -->|通过| L[项目完成]
Loading