mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-08 05:19:48 -05:00
feat: Focus mode, estimates/burndown+budget alerts, recurring blocks, saved filters, and rate overrides
Add Pomodoro focus mode with session summaries Model: FocusSession; API: /api/focus-sessions/; UI: Focus modal on timer page Add estimates vs actuals with burndown and budget alerts Project fields: estimated_hours, budget_amount, budget_threshold_percent API: /api/projects/<id>/burndown; Charts in project view and project report Implement recurring time blocks/templates Model: RecurringBlock; API CRUD: /api/recurring-blocks; CLI: flask generate_recurring Add tagging and saved filters across views Model: SavedFilter; /api/entries supports tag and saved_filter_id Support billable rate overrides per project/member Model: RateOverride; invoicing uses effective rate resolution Also: Migration: 016_add_focus_recurring_rates_filters_and_project_budget.py Integrations and UI updates in projects view, timer page, and reports Docs updated (startup, invoice, task mgmt) and README feature list Added basic tests for new features
This commit is contained in:
@@ -33,6 +33,10 @@ This script provides comprehensive database setup:
|
||||
- `settings` - Application configuration and company branding
|
||||
- `invoices` - Invoice management
|
||||
- `invoice_items` - Individual invoice line items
|
||||
- `focus_sessions` - Pomodoro/focus session summaries linked to `time_entries`
|
||||
- `recurring_blocks` - Templates for recurring time blocks to auto-create entries
|
||||
- `rate_overrides` - Per-project and per-user billable rate overrides
|
||||
- `saved_filters` - User-defined saved filters payloads for reusable queries
|
||||
|
||||
#### Key Features
|
||||
|
||||
|
||||
@@ -115,6 +115,12 @@ The invoice feature interface has been significantly improved to provide a more
|
||||
|
||||
## Technical Improvements
|
||||
|
||||
### **Effective Rate Resolution**
|
||||
- Invoices generated from time entries now use a precedence order for hourly rates:
|
||||
1) project+user `rate_overrides` record; 2) project-only `rate_overrides` record;
|
||||
3) `Project.hourly_rate`; 4) `Client.default_hourly_rate`.
|
||||
- This allows granular billable rate overrides per project/member.
|
||||
|
||||
### **CSS Enhancements**
|
||||
- Modern shadow system with `shadow-sm` and `border-0`
|
||||
- Consistent spacing using Bootstrap utilities
|
||||
|
||||
@@ -168,6 +168,14 @@ If you encounter database-related errors:
|
||||
3. Verify all required tables exist
|
||||
4. Contact system administrator if issues persist
|
||||
|
||||
## Recurring Time Blocks
|
||||
|
||||
The system supports recurring time block templates via the `recurring_blocks` table.
|
||||
|
||||
- Fields: `name`, `recurrence` (weekly), `weekdays` (e.g., `mon,tue`), `start_time_local`, `end_time_local`, optional `starts_on`/`ends_on`.
|
||||
- Blocks can include `notes`, `tags`, and `billable` flag and are user-owned.
|
||||
- API endpoints allow CRUD operations; a scheduler can periodically expand these into concrete `time_entries`.
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
Planned improvements for Task Management:
|
||||
|
||||
Reference in New Issue
Block a user