Features: - FastAPI backend for scraping attendance and journey book data - Deterministic kilometer distribution with random variance - Refueling form filling with km values - Next.js frontend with date range selector - Docker deployment setup 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
38 lines
972 B
Python
38 lines
972 B
Python
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class JourneyEntry(BaseModel):
|
|
date: str
|
|
start_km: Optional[int] = None
|
|
end_km: Optional[int] = None
|
|
distance_km: Optional[int] = None
|
|
is_sick_day: bool = False
|
|
is_vacation: bool = False
|
|
|
|
|
|
class RefuelingEntry(BaseModel):
|
|
date: str
|
|
amount_liters: float
|
|
km_at_refuel: Optional[int] = None
|
|
|
|
|
|
class Journey(BaseModel):
|
|
month: str = Field(..., pattern=r"^\d{4}-\d{2}$")
|
|
start_km: int = Field(..., gt=0)
|
|
end_km: int = Field(..., gt=0)
|
|
entries: list[JourneyEntry] = []
|
|
refueling_entries: list[RefuelingEntry] = []
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"month": "2024-03",
|
|
"start_km": 12000,
|
|
"end_km": 13500,
|
|
"entries": [],
|
|
"refueling_entries": []
|
|
}
|
|
}
|