6 Commits

Author SHA1 Message Date
serversdown 32d2a57bc9 update to 0.9.4.
Refactors project creation and management to support modular project types. Adds the unit swap modal for fast swapping field units.
2026-04-13 22:28:16 -04:00
serversdown 0f582a8a17 Merge pull request 'Update to 0.9.3' (#43) from dev into main
## [0.9.3] - 2026-03-28

### Added
- **Monitoring Session Detail Page**: New dedicated page for each session showing session info, data files (with View/Report/Download actions), an editable session panel, and report actions.
- **Session Calendar with Gantt Bars**: Monthly calendar view below the session list, showing each session as a Gantt-style bar. The dim bar represents the full device on/off window; the bright bar highlights the effective recording window. Bars extend edge-to-edge across day cells for sessions spanning midnight.
- **Configurable Period Windows**: Sessions now store `period_start_hour` and `period_end_hour` to define the exact hours that count toward reports, replacing hardcoded day/night defaults. The session edit panel shows a "Required Recording Window" section with a live preview (e.g. "7:00 AM → 7:00 PM") and a Defaults button that auto-fills based on period type.
- **Report Date Field**: Sessions can now store an explicit `report_date` to override the automatic target-date heuristic — useful when a device ran across multiple days but only one specific day's data is needed for the report.
- **Effective Window on Session Info**: Session detail and session cards now show an "Effective" row displaying the computed recording window dates and times in local time.
- **Vibration Project Redesign**: Vibration project detail page is stripped back to project details and monitoring locations only. Each location supports assigning a seismograph and optional modem. Sound-specific tabs (Schedules, Sessions, Data Files, Assigned Units) are hidden for vibration projects.
- **Modem Assignment on Locations**: Vibration monitoring locations now support an optional paired modem alongside the seismograph. The swap endpoint handles both assignments atomically, updating bidirectional pairing fields on both units.
- **Available Modems Endpoint**: New `GET /api/projects/{project_id}/available-modems` endpoint returning all deployed, non-retired modems for use in assignment dropdowns.

### Fixed
- **Active Assignment Checks**: Unified all `UnitAssignment` "active" checks from `status == "active"` to `assigned_until IS NULL` throughout `project_locations.py` and `projects.py` for consistency with the canonical active definition.

### Changed
- **Sound-Only Endpoint Guards**: FTP browser, RND viewer, Excel report generation, combined report wizard, and data upload endpoints now return HTTP 400 if called on a non-sound-monitoring project.

### Migration Notes
Run on each database before deploying:
```bash
docker compose exec terra-view python3 backend/migrate_add_session_period_hours.py
docker compose exec terra-view python3 backend/migrate_add_session_report_date.py
```
2026-03-28 13:49:00 -04:00
serversdown 5e9cc32fdc 'merge v0.9.2.' (#40) from dev into main
Reviewed-on: #40
2026-03-27 14:58:34 -04:00
serversdown 40359db066 Merge pull request 'merge 0.9.1' (#39) from dev into main
## [0.9.1] - 2026-03-23

### Fixed
- **Location slots not persisting**: Empty monitoring location slots (no unit assigned yet) were lost on save/reload. Added `location_slots` JSON column to `job_reservations` to store the full slot list including empty slots.
- **Modems in Recent Alerts**: Modems no longer appear in the dashboard Recent Alerts panel — alerts are for seismographs and SLMs only. Modem status is still tracked internally via paired device inheritance.

### Migration Notes
Run on each database before deploying:
```bash
docker compose exec terra-view python3 backend/migrate_add_location_slots.py
```
2026-03-23 21:17:15 -04:00
serversdown 3d5b2fddef Merge pull request 'Merge 0.9.0' (#36) from dev into main
[0.9.0] - 2026-03-19

Added

Job Planner: Full redesign of the Fleet Calendar into a two-tab Job Planner / Calendar interface
Planner tab: Create and manage job reservations with name, device type, dates, color, estimated units, and monitoring locations
Calendar tab: 12-month rolling heatmap with colored job bars per day; confirmed jobs solid, planned jobs dashed
Monitoring Locations: Each job has named location slots (filled = unit assigned, empty = needs a unit); progress shown as 2/5 with colored squares that fill as units are assigned
Estimated Units: Separate planning number independent of actual location count; shown prominently on job cards
Fleet Summary panel: Unit counts as clickable filter buttons; unit list shows reservation badges with job name, dates, and color
Available Units panel: Shows units available for the job's date range when assigning
Smart color picker: 18-swatch palette + custom color wheel; new jobs auto-pick a color maximally distant in hue from existing jobs
Job card progress: est. N · X/Y (Z more) with filled/empty squares; amber → green when fully assigned
Promote to Project: Promote a planned job to a tracked project directly from the planner form
Collapsible job details: Name, dates, device type, color, project link, and estimated units collapse into a summary header
Calendar bar tooltips: Hover any job bar to see job name and date range
Hash-based tab persistence: #cal in URL restores Calendar tab on refresh; device type toggle preserves active tab
Auto-scroll to today: Switching to Calendar tab smooth-scrolls to the current month
Upcoming project status: New upcoming status for projects promoted from reservations
Job device type: Reservations carry a device type so they only appear on the correct calendar
Project filtering by device type: Projects only appear on the calendar matching their type (vibration → seismograph, sound → SLM, combined → both)
Confirmed/Planned toggles: Independent show/hide toggles for job bar layers on the calendar
Cal expire dots toggle: Calibration expiry dots off by default, togglable
Changed

Renamed: "Fleet Calendar" / "Reservation Planner" → "Job Planner" throughout UI and sidebar
Project status dropdown: Inline <select> in project header for quick status changes
"All Projects" tab: Shows everything except deleted; default view excludes archived/completed
Toast notifications: All alert() dialogs replaced with non-blocking toasts (green = success, red = error)
Migration Notes

Run on each database before deploying:

docker compose exec terra-view python3 -c "
import sqlite3
conn = sqlite3.connect('/app/data/seismo_fleet.db')
conn.execute('ALTER TABLE job_reservations ADD COLUMN estimated_units INTEGER')
conn.commit()
conn.close()
"
2026-03-20 00:51:42 -04:00
serversdown 5ea64c3561 Merge pull request 'merge watcher from dev to main (0.8.0)' (#34) from dev into main
Reviewed-on: #34
2026-03-18 16:05:46 -04:00

Diff Content Not Available