"""Domain entity: PersonalData (parent profile). A PersonalData represents a parent in the planning workspace. It intentionally exists without a User login so that solo planning for a partner who hasn't registered is possible (see ARCHITECTURE.md §3.0). personnummer storage is discouraged (see §11). If kept, personnummer_enc must be keyed HMAC / authenticated encryption — never a plain SHA-256. """ from dataclasses import dataclass, field from datetime import datetime from uuid import UUID @dataclass class PersonalData: uuid: UUID workspace_id: UUID name: str salary_type: str = "monthly" # 'monthly' | 'hourly' employment_status: str = "employed" # 'employed' | 'jobseeking' | 'none' # Semesterlagen: minimum vacation days that must be *taken* each year; # only days above this may be saved (up to 5 years). Default is the # statutory 20, but employers may set a higher floor and entitlements # differ per parent, so this is user-editable (see PLANNING_ENGINE_SPEC # §9.2 and app.config.LeaveRules.min_vacation_days_per_year). min_vacation_days_per_year: int = 20 personnummer_enc: str | None = None # encrypted/HMAC; prefer None created_at: datetime | None = field(default=None) deleted_at: datetime | None = field(default=None)