diff --git a/.Jules/palette.md b/.Jules/palette.md index b0a4d3b..14e2c33 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -36,6 +36,6 @@ **Learning:** Using 'bold blue' for all structural components (Panels, Rules, and instructional text) creates a strong, consistent visual hierarchy and improves accessibility by ensuring sufficient contrast. Applying `footer_style="bold"` in `rich.table.Table` definitions instead of inline markup maintains cleaner code and consistent visual weight for summary data. **Action:** Standardize on `bold blue` for CLI structural elements and use explicit `footer_style` properties in tables to ensure high-contrast, professional-grade terminal interfaces. -## 2026-04-05 - [Prefect UI Observability & Result Polish] -**Learning:** Enhancing the Prefect dashboard experience via explicit `name` and `task_run_name` (with variable interpolation) metadata significantly improves observability and creates a more professional developer experience. Additionally, standardizing result visual cues (like '✨' or '📊' prefixes and success emojis in table footers) provides consistent psychological closure for workflow execution. -**Action:** Use descriptive Prefect metadata for all flows and tasks, and ensure final terminal results use consistent iconography and high-contrast styling. +## 2026-04-15 - [Prefect Traceability & Terminal Scanability] +**Learning:** In orchestration-based scaffolds, providing human-readable names and dynamic run names (e.g., `process-{customer_id}`) for tasks significantly improves the observability and debugging experience in the dashboard. Highlighting key numeric metrics in the CLI using consistent secondary colors (like `bold cyan`) helps users quickly parse execution outcomes. +**Action:** Always provide descriptive `name` parameters for flows and tasks, use variable interpolation in `task_run_name` for mapped tasks, and use consistent highlighting for numeric values in terminal output. diff --git a/01_getting_started.py b/01_getting_started.py index 33616a2..efa2653 100644 --- a/01_getting_started.py +++ b/01_getting_started.py @@ -11,8 +11,7 @@ console = Console() -@task(name="Fetch Customers") -@task(name="Fetch Customer IDs") +@task(name="Fetch Customer Data") def get_customer_ids() -> list[str]: """Fetch customer IDs from a database or API.""" # Use sorted and zero-padded IDs for better terminal alignment @@ -21,8 +20,7 @@ def get_customer_ids() -> list[str]: return sorted(ids) -@task(name="Process Customer", task_run_name="Processing {customer_id}") -@task(name="Process Customer", task_run_name="Process {customer_id}") +@task(name="Process Customer", task_run_name="process-{customer_id}") def process_customer(customer_id: str) -> str: """Process a single customer.""" # Add a brief pause to make the processing state visible in the UI @@ -30,8 +28,7 @@ def process_customer(customer_id: str) -> str: return f"Processed {customer_id}" -@flow(name="Getting Started", log_prints=True) -@flow(name="Getting Started Flow", log_prints=True) +@flow(name="Getting Started Workflow", log_prints=True) def main(): """ ### 🚀 Getting Started with Prefect @@ -86,7 +83,7 @@ def main(): table.add_column( "Status", style="green", - footer=f"✅ {len(results)} Processed", + footer=f"{len(results)} Processed", footer_style="bold", ) @@ -99,10 +96,9 @@ def main(): console.print( Panel.fit( - f"[bold green]✨ Successfully processed {len(results)} customers in {duration:.2f}s![/bold green]", - title="✨ Result", - title="✨ Workflow Results", - border_style="bold blue", + f"[bold green]✨ Successfully processed [bold cyan]{len(results)}[/bold cyan] customers in [bold cyan]{duration:.2f}s[/bold cyan]![/bold green]", + title="Result", + border_style="green", ) ) diff --git a/02_logging.py b/02_logging.py index d7ca165..dd8b880 100644 --- a/02_logging.py +++ b/02_logging.py @@ -12,8 +12,7 @@ console = Console() -@task(name="Fetch Customers") -@task(name="Fetch Customer IDs") +@task(name="Fetch Customer Data") def get_customer_ids() -> list[str]: """Fetch customer IDs from a database or API.""" # Use sorted and zero-padded IDs for better terminal alignment @@ -22,8 +21,7 @@ def get_customer_ids() -> list[str]: return sorted(ids) -@task(name="Process Customer", task_run_name="Processing {customer_id}") -@task(name="Process Customer", task_run_name="Process {customer_id}") +@task(name="Process Customer", task_run_name="process-{customer_id}") def process_customer(customer_id: str) -> str: """Process a single customer.""" logger = get_run_logger() @@ -34,8 +32,7 @@ def process_customer(customer_id: str) -> str: return f"Processed {customer_id}" -@flow(name="Logging Guide", log_prints=True) -@flow(name="Logging Demo Flow", log_prints=True) +@flow(name="Logging Workflow", log_prints=True) def main(): """ ### 📊 Logging with Prefect @@ -95,7 +92,7 @@ def main(): table.add_column( "Status", style="green", - footer=f"✅ {len(results)} Processed", + footer=f"{len(results)} Processed", footer_style="bold", ) @@ -108,10 +105,9 @@ def main(): console.print( Panel.fit( - f"[bold green]✨ Successfully processed {len(results)} customers with detailed logging in {duration:.2f}s![/bold green]", - title="📊 Result", - title="📊 Workflow Results", - border_style="bold blue", + f"[bold green]✨ Successfully processed [bold cyan]{len(results)}[/bold cyan] customers with detailed logging in [bold cyan]{duration:.2f}s[/bold cyan]![/bold green]", + title="Result", + border_style="green", ) )