Implement storage layer for MVP-1 Personal Tracker CLI
Add storage layer with FileStorage, MarkdownReader, and MarkdownWriter classes. Add data models (Project, Session, Note, Change).
This commit is contained in:
23
tracker/models/session.py
Normal file
23
tracker/models/session.py
Normal file
@@ -0,0 +1,23 @@
|
||||
"""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": "..."}]
|
||||
Reference in New Issue
Block a user