MockNetworkService.swift 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import Foundation
  2. import Combine
  3. /// Mock network service simulating cloud sync progress and AI report generation.
  4. final class MockNetworkService: NetworkServiceProtocol {
  5. // MARK: - NetworkServiceProtocol
  6. func syncSession(_ sessionId: UUID) -> AnyPublisher<Double, Error> {
  7. // Simulate upload progress from 0.0 to 1.0 over ~3 seconds
  8. let totalSteps = 30
  9. let interval: TimeInterval = 0.1
  10. return Timer.publish(every: interval, on: .main, in: .common)
  11. .autoconnect()
  12. .scan(0) { count, _ in count + 1 }
  13. .map { step in
  14. min(Double(step) / Double(totalSteps), 1.0)
  15. }
  16. .prefix(while: { $0 <= 1.0 })
  17. .append(1.0)
  18. .removeDuplicates()
  19. .setFailureType(to: Error.self)
  20. .eraseToAnyPublisher()
  21. }
  22. func fetchAIReport(for cloudSessionId: String) async throws -> String {
  23. // Simulate network latency
  24. try await Task.sleep(for: .seconds(1))
  25. return """
  26. # 田野调查 AI 分析报告
  27. **会话编号**: \(cloudSessionId)
  28. **生成时间**: \(DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short))
  29. ## 摘要
  30. 本次田野调查共记录音频片段 3 段,拍摄现场照片 5 张,添加文字笔记 8 条。调查地点位于城市边缘的工业遗址区域,\
  31. 主要关注废弃厂房的建筑结构保存状况及周边生态恢复情况。
  32. ## 关键发现
  33. 1. **建筑结构**:主厂房钢结构框架保存完好,屋顶覆盖层已大面积脱落。东侧附属建筑存在明显沉降迹象。
  34. 2. **生态恢复**:厂区内部已有大量自生植被覆盖,观察到至少 3 种本地鸟类在废弃管道中筑巢。
  35. 3. **环境风险**:西北角地面检测到轻微土壤污染痕迹,建议后续进行专业采样分析。
  36. ## 音频转写片段
  37. > "……这里的钢梁连接处可以看到明显的铆接工艺,这是典型的上世纪八十年代的建造方式。注意看这个节点,\
  38. 焊接补强的痕迹说明后期做过结构加固……"
  39. ## 建议后续行动
  40. - 对西北角区域进行土壤采样送检
  41. - 联系当地档案馆获取原始建筑图纸
  42. - 安排无人机航拍以获取完整厂区俯瞰影像
  43. ---
  44. *此报告由星痕现场记录 AI 引擎自动生成,仅供参考。*
  45. """
  46. }
  47. }