feat: v3.0 - canvas editor, JSON-only, no Excel, new UI
Some checks failed
Build & Push Docker / build (push) Has been cancelled
Some checks failed
Build & Push Docker / build (push) Has been cancelled
- Remove all Excel code (import, export, template, pandas, openpyxl) - New canvas-based schedule editor with drag & drop (interact.js) - Modern 3-panel UI: sidebar, canvas, documentation tab - New data model: Block with id/date/start/end, ProgramType with id/name/color - Clean API: GET /api/health, POST /api/validate, GET /api/sample, POST /api/generate-pdf - Rewritten PDF generator using ScenarioDocument directly (no DataFrame) - Professional PDF output: dark header, colored blocks, merged cells, legend, footer - Sample JSON: "Zimní výjezd oddílu" with 11 blocks, 3 program types - 30 tests passing (API, core models, PDF generation) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,30 +1,33 @@
|
||||
"""Pydantic v2 models for Scenar Creator."""
|
||||
"""Pydantic v2 models for Scenar Creator v3."""
|
||||
|
||||
from datetime import date, time
|
||||
import uuid
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Block(BaseModel):
|
||||
datum: date
|
||||
zacatek: time
|
||||
konec: time
|
||||
program: str
|
||||
typ: str
|
||||
garant: Optional[str] = None
|
||||
poznamka: Optional[str] = None
|
||||
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
|
||||
date: str # "YYYY-MM-DD"
|
||||
start: str # "HH:MM"
|
||||
end: str # "HH:MM"
|
||||
title: str
|
||||
type_id: str
|
||||
responsible: Optional[str] = None
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class ProgramType(BaseModel):
|
||||
code: str
|
||||
description: str
|
||||
color: str # hex #RRGGBB
|
||||
id: str
|
||||
name: str
|
||||
color: str # "#RRGGBB"
|
||||
|
||||
|
||||
class EventInfo(BaseModel):
|
||||
title: str = Field(..., max_length=200)
|
||||
detail: str = Field(..., max_length=500)
|
||||
title: str
|
||||
subtitle: Optional[str] = None
|
||||
date: Optional[str] = None
|
||||
location: Optional[str] = None
|
||||
|
||||
|
||||
class ScenarioDocument(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user