Files
suixinkan_ios_uikit/功能同步Checklist.md
汉秋 a1c031c9b7 Integrate CYLTabBar center scan button and unify UIKit navigation.
Add CYLTabBarController with a global scan entry, promote MainTabBarController to the window root after login, replace RouterPath-based navigation with AppNavigator, and fix Profile diffable cell reconfiguration crashes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 16:36:18 +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 根结构 RootViewController 监听登录阶段;登录后 MainTabBarController 作为 window 根控制器 持续随路由扩展
完成 Tab 导航 CYLTabBarController 四 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 做关键流程自动化。