Files
suixinkan_ios_uikit/功能同步Checklist.md
汉秋 d99a5b1bf8 Advance UIKit rewrite with AMap integration and core UI modules.
Integrate高德 SDK with simulator-safe build flags, add map views for operating area and punch points, refactor main tabs and key feature screens to UIKit with Diffable lists, and document Swift concurrency defaults in AGENTS.md.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 15:16:12 +08:00

6.0 KiB
Raw Blame History

功能同步 ChecklistUIKit 工程)

更新时间2026-06-26
工程:suixinkan_ios_new_uikitSwift + UIKit + SnapKit
参考:../suixinkan_ios_newSwiftUI

同步进度摘要

维度 状态
代码同步(阶段 05 完成 — Core / 登录 / 四 Tab / 子业务模块均有 UIKit 实现
单元测试 完成xcodebuild test 全绿
高德地图 完成(真机) — Pod 已接入;模拟器自动降级
推送 完成PushNotificationManager + AppDelegate APNs 回调
UI 视觉还原 部分完成 — 功能对齐,细节待逐页走查
XCUITest 未开始 — 可选后续补充

状态说明

  • 完成UIKit 页面、ViewModel、必要单测已同步编译与测试通过。
  • 部分完成:主流程可用,但与参考工程在 UI 细节或平台能力上仍有差距。
  • 未开始UIKit 工程尚无对应实现。
  • 不迁移:参考工程已明确不纳入 iOS 范围。

基础架构

状态 模块 UIKit 实现 剩余事项
完成 App 根结构 RootViewControllerAppSession.phase 切换登录 / 恢复 / 主 Tab 持续随路由扩展
完成 Tab 导航 系统 UITabBarController 四 Tab + 独立 TabNavigationControllerpush 子页隐藏 TabBar。 后续新增真实子页面时继续复用 AppRoute
完成 全局状态 AppServices.shared 注入 Session / Context / Router / Toast / Loading 避免新增 monolith 状态
完成 登录态缓存 Keychain token + UserDefaults 快照 / 偏好 + 冷启动恢复
完成 网络框架 APIClient / APIEnvelope / 统一错误与 token
完成 OSS 上传 UploadAPI + OSSUploadService
完成 网络图片 UIImageView + Kingfisher 扩展
完成 设计常量 AppDesignUIColor+ AppMetrics 新页继续复用
完成 文档规范 AGENTS.md + 各 Feature 模块 .md 新模块同步补文档

平台能力

状态 模块 UIKit 实现 剩余事项
完成 Core/Map CocoaPods 高德 SDKOperatingAreaMapView 围栏 polygonPunchPointMapPickerView 点选 + 逆地理;模拟器坐标摘要兜底 Info.plist 填写 AMapAPIKey 后真机验证
完成 Core/Push PushNotificationManagerAppDelegate 注册 token 与远程通知 真机验证 APNs 与后端联调
完成 Core/Queue ScenicQueueRuntime WebSocket + 叫号 真机验证语音播报策略
部分完成 Core/Validation AppFormValidator + 各表单页内联校验 未单独抽离全部校验规则
完成 Lottie Loading SPM Lottie + GlobalLoadingOverlayView
不迁移 旧 UIKit 兼容页 参考工程 legacy UIKit 目录不迁移

登录与账号

状态 模块 UIKit 实现 剩余事项
完成 登录页 LoginViewController
完成 多账号选择 AccountSelectionViewController
完成 账号上下文 AccountContext / PermissionContext / ScenicSpotContext
完成 权限菜单 HomeMenuRouter URI 映射 未知 URI 进占位页并记录诊断

四 Tab 主功能

Tab 状态 UIKit 入口 备注
首页 完成 HomeViewController 权限菜单、常用应用、景区选择
订单 完成 OrdersViewController 含扫码、详情、押金、退款、尾片等
数据 完成 StatisticsViewController 时间段 + 汇总 + 日明细
我的 完成 ProfileViewController 头像 OSS、改密、实名、设置、协议

首页子业务模块

状态 模块 UIKit ViewController
完成 钱包 WalletViewControllers
完成 提现审核 WithdrawalAuditViewController
完成 消息中心 MessageCenterViewController
完成 排队管理 QueueManagementViewControllers
完成 立即收款 PaymentCollectionViewController
完成 任务 / 发布任务 TaskViewControllers
完成 日程管理 ScheduleViewControllers
完成 打卡点管理 PunchPointViewControllers(含地图选点)
完成 项目管理 / 店铺项目 ProjectViewControllers
完成 相册 / 云盘 / 素材 / 样片 AssetsViewControllers
完成 直播 / 直播相册 LiveViewControllers
完成 景区 / 权限 / 结算 ScenicPermissionViewControllers / ScenicSettlementViewControllers
完成 运营区域 OperatingAreaViewController(含围栏地图)
完成 位置上报 LocationReportViewControllers
完成 注册邀请 InviteViewControllers
完成 飞手认证 PilotCertificationViewController
不迁移 飞控 / DJI HomeMenuRouter 标记 unsupported

已知差异(相对 SwiftUI 参考工程)

项目 说明
UI 视觉 UITableView 功能型布局,非 SwiftUI 像素级还原
直播推流 无真 RTMP SDK外部 push_url + 诊断层(与参考工程一致)
订单尾片 无独立尾片审核进度接口
高德 Key 需在 Info.plistAMapAPIKey 填入控制台 KeyBundle ID: com.hanqiu.suixinkan-ios

验证命令

# 编译(模拟器)
xcodebuild -workspace suixinkan_ios.xcworkspace -scheme suixinkan_ios \
  -destination 'generic/platform=iOS Simulator' build

# 单元测试
xcodebuild test -workspace suixinkan_ios.xcworkspace -scheme suixinkan_ios \
  -destination 'platform=iOS Simulator,name=iPhone 17'

最近验证:BUILD SUCCEEDED / TEST SUCCEEDED2026-06-26


后续可选

  1. 真机填入 AMapAPIKey 并验证运营区域围栏、打卡点地图选点。
  2. 逐页 UI 走查,对齐 SwiftUI 参考工程视觉与交互细节。
  3. 新增 suixinkan_iosUITests 做关键流程自动化。