Files
boc/quixzoom-capture-pipeline/ios/QuixZoomCapture/Models/CaptureSession.swift
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

126 lines
2.7 KiB
Swift

import Foundation
import CoreLocation
import CoreMotion
/**
* QUIXZOOM Capture Session
*
* Representerar en inspelningssession med all metadata.
* Varje session får ett unikt uppdrags-ID.
*/
struct CaptureSession: Codable, Identifiable {
let id: String
let missionId: String
let startTime: Date
var endTime: Date?
var mode: CaptureMode
var status: SessionStatus
// Konfiguration
var config: SessionConfig
// Insamlad data
var frames: [FrameMetadata]
var telemetry: [TelemetryData]
var path: [GPSPoint]
var instructions: [AIInstruction]
// Kvalitet
var qualityScore: Double
var reliabilityScore: Double
enum CaptureMode: String, Codable {
case recording // Nivå 1: Basinsamling
case guided // Nivå 2: AI-guidad
case mission // Nivå 3: Uppdragsbaserad
case adaptive // Nivå 4: Adaptiv intelligens
}
enum SessionStatus: String, Codable {
case preparing
case recording
case paused
case uploading
case completed
case failed
}
}
struct SessionConfig: Codable {
var videoQuality: VideoQuality
var telemetryRate: Double // Hz
var uploadMode: UploadMode
var missionType: String? // "crosswalks", "streetlights", etc.
var area: AreaConfig?
enum VideoQuality: String, Codable {
case p720 = "720p"
case p1080 = "1080p"
case p4K = "4K"
}
enum UploadMode: String, Codable {
case realtime // Direktuppladdning
case buffered // Buffra lokalt, ladda upp vid wifi
case manual // Manuell uppladdning
}
}
struct AreaConfig: Codable {
var name: String
var bounds: GeoBounds
var targetObjects: [String]?
}
struct GeoBounds: Codable {
var minLat: Double
var maxLat: Double
var minLng: Double
var maxLng: Double
}
struct FrameMetadata: Codable {
let timestamp: Date
let frameId: String
let gps: GPSPoint
let quality: Double
let fileSize: Int
}
struct TelemetryData: Codable {
let timestamp: Date
let gps: GPSPoint
let imu: IMUData
let compass: Double
let altitude: Double
}
struct GPSPoint: Codable {
let latitude: Double
let longitude: Double
let accuracy: Double
let altitude: Double
let timestamp: Date
}
struct IMUData: Codable {
let accelerometer: XYZ
let gyroscope: XYZ
let magnetometer: XYZ?
}
struct XYZ: Codable {
let x: Double
let y: Double
let z: Double
}
struct AIInstruction: Codable {
let timestamp: Date
let text: String
let priority: String
let reason: String
var completed: Bool
var completedAt: Date?
}