docs: update progress.txt for story 7.0
This commit is contained in:
118
progress.txt
118
progress.txt
@@ -157,9 +157,125 @@ CODEBASE PATTERNS:
|
||||
- dashboard/api.py (added calculate_streak function)
|
||||
- dashboard/test_habits_streak.py (created)
|
||||
|
||||
[✓] Story 5.0: Backend API - POST /api/habits/{id}/check
|
||||
Commit: ca4ee77
|
||||
Date: 2026-02-10
|
||||
|
||||
Implementation:
|
||||
- Added POST /api/habits/{id}/check endpoint to dashboard/api.py
|
||||
- Extracts habit ID from URL path (/api/habits/{id}/check)
|
||||
- Adds today's date (YYYY-MM-DD) to completions array
|
||||
- Returns 400 if habit already checked today
|
||||
- Returns 404 if habit ID not found
|
||||
- Sorts completions chronologically (oldest first) after adding
|
||||
- Uses ISO date format YYYY-MM-DD (not full timestamps)
|
||||
- Calculates and returns streak using calculate_streak utility
|
||||
- Returns 200 with updated habit object including streak
|
||||
- Streak is calculated but not persisted (only in response)
|
||||
- Updates lastUpdated timestamp in habits.json
|
||||
- Graceful error handling for missing/corrupt files
|
||||
|
||||
Tests:
|
||||
- Created dashboard/test_habits_check.py
|
||||
- Tests for successful habit check (returns 200 + updated habit)
|
||||
- Tests for already checked validation (400 error)
|
||||
- Tests for habit not found (404 error)
|
||||
- Tests for persistence to habits.json
|
||||
- Tests for chronological sorting of completions
|
||||
- Tests for streak calculation in response
|
||||
- Tests for weekly habit checking
|
||||
- Tests for ISO date format (YYYY-MM-DD, no time)
|
||||
- All 8 tests pass ✓
|
||||
- All previous tests (schema, GET, POST, streak) still pass ✓
|
||||
|
||||
Files modified:
|
||||
- dashboard/api.py (added handle_habits_check method + route in do_POST)
|
||||
- dashboard/test_habits_check.py (created)
|
||||
- dashboard/habits.json (reset to empty for testing)
|
||||
|
||||
[✓] Story 6.0: Backend API - GET /api/habits with streaks
|
||||
Commit: c84135d
|
||||
Date: 2026-02-10
|
||||
|
||||
Implementation:
|
||||
- Enhanced GET /api/habits endpoint to include calculated streaks
|
||||
- Each habit in response now includes 'streak' field (integer)
|
||||
- Each habit in response now includes 'checkedToday' field (boolean)
|
||||
- Streak is calculated using the calculate_streak utility function
|
||||
- checkedToday checks if today's date (YYYY-MM-DD) is in completions array
|
||||
- All original habit fields are preserved in response
|
||||
- Get today's date once and reuse for all habits (efficient)
|
||||
- Enhanced habits array built by looping through each habit and adding fields
|
||||
- Updated docstring to reflect new functionality
|
||||
|
||||
Tests:
|
||||
- Created dashboard/test_habits_get_enhanced.py
|
||||
- Tests for streak field inclusion in response
|
||||
- Tests for checkedToday boolean field inclusion
|
||||
- Tests for correct streak calculation (daily and weekly habits)
|
||||
- Tests for broken streaks (should return 0)
|
||||
- Tests for empty habits array handling
|
||||
- Tests for preservation of original habit fields
|
||||
- All 5 tests pass ✓
|
||||
- All previous tests (schema, GET, POST, streak, check) still pass ✓
|
||||
|
||||
Files modified:
|
||||
- dashboard/api.py (enhanced handle_habits_get method)
|
||||
- dashboard/test_habits_get_enhanced.py (created)
|
||||
|
||||
[✓] Story 7.0: Frontend - Create habits.html page structure
|
||||
Commit: dd0bf24
|
||||
Date: 2026-02-10
|
||||
|
||||
Implementation:
|
||||
- Created dashboard/habits.html with basic layout matching dashboard style
|
||||
- Uses common.css and swipe-nav.js for consistent styling and navigation
|
||||
- Added navigation bar with 5 items (Dashboard, Workspace, KB, Files, Habits)
|
||||
- Habits nav item has 'active' class to indicate current page
|
||||
- Page header with title "Habit Tracker" and subtitle
|
||||
- Empty state section with lucide 'target' icon
|
||||
- Empty state message: "Nicio obișnuință încă. Creează prima!"
|
||||
- Add habit button with lucide 'plus' icon and text "Adaugă obișnuință"
|
||||
- Theme toggle functionality (dark/light mode) matching dashboard
|
||||
- Placeholder JavaScript functions for future API integration
|
||||
- HTML5 compliant structure with lang="ro" attribute
|
||||
|
||||
Tests:
|
||||
- Created dashboard/test_habits_html.py
|
||||
- Tests for file existence
|
||||
- Tests for valid HTML5 structure (DOCTYPE, required tags, lang attribute)
|
||||
- Tests for common.css and swipe-nav.js inclusion
|
||||
- Tests for navigation bar with correct items and active state
|
||||
- Tests for page title "Habit Tracker" in both <title> and <h1>
|
||||
- Tests for empty state message with exact text
|
||||
- Tests for add habit button with lucide plus icon
|
||||
- All 7 tests pass ✓
|
||||
- All previous tests (schema, API endpoints) still pass ✓
|
||||
|
||||
Files modified:
|
||||
- dashboard/habits.html (created)
|
||||
- dashboard/test_habits_html.py (created)
|
||||
- dashboard/habits.json (reset to empty for testing)
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
CODEBASE PATTERNS UPDATE:
|
||||
|
||||
5. Frontend HTML Pages
|
||||
- Location: dashboard/*.html
|
||||
- Common structure: DOCTYPE html, lang="ro", UTF-8 charset
|
||||
- Shared resources: common.css, swipe-nav.js, lucide icons CDN
|
||||
- Navigation pattern: header.header > logo + nav.nav > nav-item links
|
||||
- Active nav item has 'active' class
|
||||
- Theme toggle button in nav with onclick="toggleTheme()"
|
||||
- Main content in <main class="main"> with max-width container
|
||||
- Page header pattern: .page-header > .page-title + .page-subtitle
|
||||
- Empty states: .empty-state with centered icon, message, and action button
|
||||
- Icons: use lucide via data-lucide attribute, initialize with lucide.createIcons()
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
NEXT STEPS:
|
||||
- Continue with remaining 14 stories
|
||||
- Continue with remaining 11 stories
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Reference in New Issue
Block a user