浅念
|
45d46518b1
|
docs(plan): p3 completion header note
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-20 15:23:45 +08:00 |
|
浅念
|
e484aa5427
|
docs: p3 acceptance record
P3 收口(Task 12):回归门全绿实测数字、MuMu 设备集成证据(阶段 1
十二腿 + 阶段 2 双场景,引用 it-logs 存档原文)、29+3 轮排障 13 根因
展开表、契约增补(password-change + sourceDeviceId)登记、G2 真机
清单(计划全量 + 集成期新增 5 项)、G3 引用 README-ios、偏差表(计划
内 13 + 计划外 5);总纲 P3 行进度注记(G2 待用户真机执行、D03 待确
认);P3 计划 Task 11/12 勾选。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-20 15:21:49 +08:00 |
|
浅念
|
42e1c2e34b
|
feat(mobile): ios background upload bridge (compile-gated at G3)
Swift 侧(协议与 Android UploadPlugin.kt 逐字一致,编译/真机留 G3):
- UploadBridge.swift:通道/方法/事件/失败码常量 + registerTask 参数解析
(镜像 UploadProtocol.kt)
- UploadEventBus.swift:单调 seq + 终态 ack 缓存重放(镜像
UploadEventBus.kt),iOS 增强——未 ack 终态落盘(系统后台拉起投递的
回调在进程重启后同样重放,技术方案 §6.2 持久化原生回调)
- UploadTaskStore.swift:taskId→URLSession taskIdentifier 映射 plist 持久化
(Application Support;对应 Android WorkManager 自持映射)
- UploadPlugin.swift:URLSession background
(com.photolive.photo_live.uploads)+ delegate 失败分类(2xx→completed+etag
/ 403→needsRenew / 4xx→HTTP_4XX / 网络→重试上限后 NETWORK,镜像
UploadPutExecutor/UploadWorker)、原生重试(5 次上限、10s 指数退避)、
进度 500ms 节流、queryTask/cancelTask/ackEvents、静默取消
- AppDelegate.swift:implicit engine 通道注册 + 启动重建会话 +
handleEventsForBackgroundURLSession completionHandler 暂存
- Info.plist:UIBackgroundModes 有意不声明(background URLSession 无需;
计划措辞按技术方案 §6.2 修正,见 README-ios.md)
- project.pbxproj 登记新 Swift 文件;README-ios.md(Xcode 步骤 + G3 验证
清单:实际文件上传/持久化回调窗口/服务端补偿/重启重联校准/强制退出/
低电量延迟/100 张批量)
Dart:NativeTransport 选择矩阵并入 iOS(Platform.isAndroid || isIOS,
FORCE_DART_TRANSPORT 覆盖不变)——协议两侧一致,无新通道代码。
flutter analyze 0 issue;flutter test 219 全绿。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-19 03:42:49 +08:00 |
|
浅念
|
d96e56f653
|
feat(mobile): drift upload task store with state machine
- upload_tasks 表(accountId 隔离 + 三个复合索引)、状态列枚举转换器、
datetime 文本落库(UTC 归一,亚秒精度)
- 纯状态机(task_state.dart):合法迁移表 + canTransition/assertTransition,
completed/cancelled 终态
- TaskStore 仓储:create(clientTaskId 同账号同相册应用侧唯一)、
updateState(迁移守护+旁路字段)、账号隔离读路径(硬守护)、
countsByState 徽章、cleanupCandidates/markCleanable(仅终态可清理——
评审缺口 1 硬守护,未完成源文件永不清理)
- 测试 26 例(状态机表驱动全边 + 守护/隔离/筛选/保留策略);
sqlite3 3.x build hooks 在 flutter test 宿主与 Android APK 构建均验证
(libsqlite3.so 已打包全 ABI,运行时验证留 Task 11)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-19 02:12:39 +08:00 |
|
浅念
|
5879552ecb
|
docs(plan): p3 flutter app plan (approved; review fixes applied)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-18 23:30:58 +08:00 |
|