Add storage layer with FileStorage, MarkdownReader, and MarkdownWriter classes. Add data models (Project, Session, Note, Change).
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""Summary service for heuristic summary generation."""
|
|
|
|
from ..models import Session
|
|
from .note_service import consolidate_notes
|
|
|
|
|
|
def generate_summary(session: Session) -> str:
|
|
"""
|
|
Generate a heuristic summary from the session.
|
|
Uses consolidate_notes to extract work_done, decisions, blockers.
|
|
"""
|
|
# Consolidate raw notes into categorized sections
|
|
consolidated = consolidate_notes(session.raw_notes)
|
|
|
|
lines = []
|
|
|
|
# Work done section
|
|
if consolidated["work_done"]:
|
|
lines.append("Trabajo realizado:")
|
|
for item in consolidated["work_done"]:
|
|
lines.append(f" - {item}")
|
|
lines.append("")
|
|
|
|
# Decisions section
|
|
if consolidated["decisions"]:
|
|
lines.append("Decisiones:")
|
|
for item in consolidated["decisions"]:
|
|
lines.append(f" - {item}")
|
|
lines.append("")
|
|
|
|
# Blockers section
|
|
if consolidated["blockers"]:
|
|
lines.append("Bloqueos:")
|
|
for item in consolidated["blockers"]:
|
|
lines.append(f" - {item}")
|
|
lines.append("")
|
|
|
|
# If no content, provide a minimal summary
|
|
if not lines:
|
|
return f"Session de {session.duration_minutes} minutos sin progreso registrado."
|
|
|
|
return "\n".join(lines)
|