export type ScaleValue = 1 | 2 | 3 | 4 | 5; export type ReportStatus = | "kan_fortsette" | "trenger_pause" | "trenger_enklere_oppgave" | "bør_stoppe" | "onsker_a_stoppe" | "ønsker_å_stoppe"; export type TaskType = | "sitting" | "standing" | "walking" | "lifting" | "computer_work" | "concentration" | "multitasking" | "talking_social" | "noise" | "bright_light" | "time_pressure"; export type Limitation = | "fatigue" | "brain_fog" | "pain" | "headache_migraine" | "dizziness" | "nausea" | "sensory_overload" | "stress_anxiety" | "weakness" | "sleepiness" | "other"; export type Accommodation = | "extra_breaks" | "sitting_down" | "quiet_room" | "reduced_pace" | "shorter_task" | "help_from_others" | "remote_work" | "task_switching" | "nothing_helped"; export type TaskCompletion = | "nesten_ingenting" | "litt" | "delvis" | "som_forventet" | "mer_enn_forventet"; export type WorseThanBefore = "nei" | "litt" | "moderat" | "mye"; export type DelayedSymptom = | "fatigue" | "pain" | "brain_fog" | "flu_like" | "headache" | "dizziness" | "sleep_disruption" | "sensory_sensitivity"; export type RecoveryStatus = | "tilbake_til_baseline" | "samme_dag" | "en_dag" | "to_tre_dager" | "fire_pluss_dager" | "ikke_tilbake_til_baseline"; export interface Report { id: string; report_time: string; report_date: string; created_at: string; updated_at?: string; type: "work_report"; workplace?: string; work_start_time?: string; work_end_time?: string; work_ability: ScaleValue; energy_level: ScaleValue; mental_clarity: ScaleValue; symptom_burden: ScaleValue; effort_strain: ScaleValue; status: ReportStatus; physical_energy: ScaleValue; mental_energy: ScaleValue; physical_energy_detail?: ScaleValue; mental_energy_detail?: ScaleValue; perceived_productivity?: ScaleValue; task_completion?: TaskCompletion; task_types: TaskType[]; main_limitations: Limitation[]; helpful_accommodations: Accommodation[]; total_score_percent?: number; integrity?: ReportIntegrity; note?: string; demo?: boolean; } export interface ReportDraft { workplace?: string; work_start_time?: string; work_end_time?: string; work_ability?: ScaleValue; energy_level?: ScaleValue; mental_clarity?: ScaleValue; symptom_burden?: ScaleValue; effort_strain?: ScaleValue; status?: ReportStatus; physical_energy_detail?: ScaleValue; mental_energy_detail?: ScaleValue; perceived_productivity?: ScaleValue; task_completion?: TaskCompletion; task_types: TaskType[]; main_limitations: Limitation[]; helpful_accommodations: Accommodation[]; note: string; } export interface DelayedFollowup { id: string; report_time: string; report_date: string; created_at: string; updated_at?: string; type: "delayed_followup"; parent_report_id?: string; related_report_id?: string; worse_than_before: WorseThanBefore; delayed_symptoms: DelayedSymptom[]; recovery_status?: RecoveryStatus; integrity?: ReportIntegrity; note?: string; demo?: boolean; } export interface FollowupDraft { parent_report_id?: string; related_report_id?: string; worse_than_before?: WorseThanBefore; delayed_symptoms: DelayedSymptom[]; recovery_status?: RecoveryStatus; note: string; } export type StoredEntry = Report | DelayedFollowup; export interface EvaluatorNote { id: string; created_at: string; updated_at: string; text: string; note_type?: "person" | "report" | "followup"; related_report_id?: string; related_followup_id?: string; parent_report_id?: string; } export interface EvaluatorProfile { id: string; display_name: string; created_at: string; updated_at: string; source_fingerprint?: string; contains_demo_data?: boolean; reports: StoredEntry[]; evaluator_notes: EvaluatorNote[]; } export interface ExportPayload { schema_version: number; export_version: number; exported_at: string; data_mode?: "normal" | "demo"; contains_demo_data?: boolean; export_integrity?: ExportIntegrity; reports: StoredEntry[]; } export interface ImportSummary { reports_added: number; followups_added: number; duplicates_skipped: number; conflicts_detected: number; demo_entries_detected?: number; verification?: VerificationSummary; } export type ImportTargetResolution = "created_new_person" | "matched_existing_person" | "conflict_requires_manual_resolution"; export type VerificationStatus = "valid" | "modified" | "missing" | "unsupported" | "error"; export interface ReportIntegrity { report_id: string; canonicalization: "stable-json-v1" | "stable-json-v2"; algorithm: "sha256" | "local-fnv1a-64" | "SHA-256"; payload_hash_sha256: string; signed_at: string; verification_status?: VerificationStatus; verification_reason?: string; } export interface ExportIntegrity { schema: "arbeidsevne-export-integrity-v1"; created_at: string; algorithm: string; manifest_hash_sha256: string; note: string; } export interface VerificationSummary { valid: number; modified: number; missing: number; unsupported: number; error: number; }