hopefully done refining

This commit is contained in:
2026-03-06 16:14:31 -05:00
parent 88e27ae414
commit 1294104f7f
20 changed files with 1736 additions and 734 deletions

View File

@@ -1,32 +1,95 @@
# Implementation Plan: Track Progress Visualization (track_progress_viz_20260306)
> **Reference:** [Spec](./spec.md) | [Architecture Guide](../../../docs/guide_architecture.md)
## Phase 1: Progress Calculation
- [ ] Task: Initialize MMA Environment
- [ ] Task: Implement progress calculation
- WHERE: src/gui_2.py or app_controller
- WHAT: Calculate % from ticket states
- HOW: Count completed vs total
Focus: Calculate progress metrics from ticket states
## Phase 2: Visualization
- [ ] Task: Render progress bar
- WHERE: src/gui_2.py
- WHAT: Visual progress bar
- HOW: imgui.progress_bar
- [ ] Task: Render percentage text
- WHERE: src/gui_2.py
- WHAT: Numeric % display
- HOW: imgui.text
- [ ] Task 1.1: Initialize MMA Environment
- Run `activate_skill mma-orchestrator` before starting
## Phase 3: Additional Features
- [ ] Task: Implement ticket counts
- WHERE: src/gui_2.py
- WHAT: Completed/remaining counts
- HOW: Text display
- [ ] Task: Implement ETA
- WHERE: src/gui_2.py
- WHAT: Time estimate
- HOW: Average time per ticket
- [ ] Task 1.2: Implement progress calculation function
- WHERE: `src/gui_2.py` or helper in `src/project_manager.py`
- WHAT: Calculate completion percentage from tickets
- HOW:
```python
def calculate_track_progress(tickets: list[Ticket]) -> dict:
total = len(tickets)
if total == 0:
return {"percentage": 0, "completed": 0, "total": 0, "in_progress": 0, "blocked": 0, "todo": 0}
completed = sum(1 for t in tickets if t.status == "completed")
in_progress = sum(1 for t in tickets if t.status == "in_progress")
blocked = sum(1 for t in tickets if t.status == "blocked")
todo = sum(1 for t in tickets if t.status == "todo")
percentage = (completed / total) * 100
return {"percentage": percentage, "completed": completed, "total": total,
"in_progress": in_progress, "blocked": blocked, "todo": todo}
```
## Phase 4: Verification
- [ ] Task: Test progress display
- [ ] Task: Conductor - Phase Verification
## Phase 2: Progress Bar Rendering
Focus: Display visual progress bar
- [ ] Task 2.1: Add progress bar to MMA Dashboard
- WHERE: `src/gui_2.py` `_render_mma_dashboard()`
- WHAT: Visual progress bar with percentage
- HOW:
```python
progress = calculate_track_progress(self.track.tickets)
imgui.text(f"Progress: {progress['completed']}/{progress['total']} tickets")
imgui.progress_bar(progress['percentage'] / 100.0, size=(300, 20))
imgui.same_line()
imgui.text(f"{progress['percentage']:.1f}%")
```
- SAFETY: Handle empty ticket list
## Phase 3: Ticket Breakdown Display
Focus: Show status breakdown
- [ ] Task 3.1: Add status breakdown text
- WHERE: `src/gui_2.py` `_render_mma_dashboard()`
- WHAT: Show counts per status
- HOW:
```python
imgui.text(f"Completed: {progress['completed']}")
imgui.text(f"In Progress: {progress['in_progress']}")
imgui.text(f"Blocked: {progress['blocked']}")
imgui.text(f"Todo: {progress['todo']}")
```
## Phase 4: ETA Estimation
Focus: Estimate time remaining
- [ ] Task 4.1: Track ticket completion times
- WHERE: `src/gui_2.py` or `src/app_controller.py`
- WHAT: Track average time per completed ticket
- HOW:
```python
self._ticket_start_times: dict[str, float] = {}
self._avg_ticket_time: float = 0.0
self._completed_count: int = 0
# On ticket start: self._ticket_start_times[ticket.id] = time.time()
# On ticket complete: elapsed = time.time() - start; update average
```
- [ ] Task 4.2: Calculate and display ETA
- WHERE: `src/gui_2.py`
- WHAT: Show estimated time remaining
- HOW:
```python
remaining = progress['total'] - progress['completed']
eta_seconds = self._avg_ticket_time * remaining
eta_minutes = int(eta_seconds / 60)
imgui.text(f"ETA: ~{eta_minutes}m ({remaining} tickets remaining)")
```
## Phase 5: Testing
Focus: Verify all functionality
- [ ] Task 5.1: Write unit tests for progress calculation
- WHERE: `tests/test_progress_viz.py` (new file)
- WHAT: Test percentage calculation, edge cases
- HOW: Create mock tickets with various statuses
- [ ] Task 5.2: Conductor - Phase Verification
- Run: `uv run pytest tests/test_progress_viz.py -v`
- Manual: Verify progress bar displays correctly