Add storage layer with FileStorage, MarkdownReader, and MarkdownWriter classes. Add data models (Project, Session, Note, Change).
24 lines
837 B
Python
24 lines
837 B
Python
"""Session model definition."""
|
|
from pydantic import BaseModel, Field
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
|
|
class Session(BaseModel):
|
|
"""Represents a work session on a project."""
|
|
|
|
id: str
|
|
project_slug: str
|
|
started_at: datetime
|
|
ended_at: Optional[datetime] = None
|
|
duration_minutes: Optional[int] = None
|
|
objective: str = ""
|
|
summary: str = ""
|
|
work_done: list[str] = Field(default_factory=list)
|
|
changes: list[str] = Field(default_factory=list)
|
|
decisions: list[str] = Field(default_factory=list)
|
|
blockers: list[str] = Field(default_factory=list)
|
|
next_steps: list[str] = Field(default_factory=list)
|
|
references: list[str] = Field(default_factory=list)
|
|
raw_notes: list[dict] = Field(default_factory=list) # [{"type": "work", "text": "...", "timestamp": "..."}]
|