26 lines
901 B
Python
26 lines
901 B
Python
"""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'
|
|
personnummer_enc: str | None = None # encrypted/HMAC; prefer None
|
|
created_at: datetime | None = field(default=None)
|
|
deleted_at: datetime | None = field(default=None)
|