{{ theme.skipToContentLabel || 'Skip to content' }}

Software Requirements Specification (SRS)

Dust Ranger Data Management System

Document Version: 1.0 Date: February 2026 Status: Final


Document Control

VersionDateAuthorDescription
1.0February 2026Development TeamInitial SRS based on implemented system

Table of Contents

  1. Introduction
  2. Overall Description
  3. Specific Requirements
  4. External Interface Requirements
  5. Non-Functional Requirements
  6. Feature Module Requirements
  7. Data Requirements
  8. Appendices

1. Introduction

1.1 Purpose

This Software Requirements Specification (SRS) document provides a comprehensive description of the functional and non-functional requirements for the Dust Ranger Data Management System. This document serves as the authoritative reference for:

  • Development team members implementing and maintaining the system
  • Quality assurance engineers designing test cases
  • Technical architects making design decisions
  • Project managers tracking feature completeness

1.2 Scope

The Dust Ranger Data Management System is a web-based environmental monitoring platform designed for mining operations. The system provides:

Core Capabilities:

  • Real-time dust concentration monitoring across multiple mining sites
  • Water truck fleet management and flow meter tracking
  • Automated PDF report generation with statistical analysis
  • Email scheduling and notification automation
  • Role-based access control with granular permissions
  • Geographic visualization through interactive heatmaps
  • Asset tracking and operational status monitoring

System Boundaries:

  • In Scope: Web application, database, authentication, reporting, email automation
  • Out of Scope: Hardware device firmware, third-party scraper implementation, mobile native apps

1.3 Definitions, Acronyms, and Abbreviations

TermDefinition
AWSTAustralian Western Standard Time (UTC+8)
BOMBureau of Meteorology (Australia)
CSVComma-Separated Values file format
JWTJSON Web Token for authentication
MCMass Concentration (µg/m³)
NCNumber Concentration (particles/cm³)
PDFPortable Document Format
PMParticulate Matter (PM1.0, PM2.5, PM4.0, PM10)
RBACRole-Based Access Control
RLSRow-Level Security (PostgreSQL feature)
SPASingle Page Application
SRSSoftware Requirements Specification
SDDSystem Design Document

1.4 References

DocumentVersionDescription
System Design Document (SDD)2.0Technical architecture and design
CLAUDE.md-Project conventions and commands
IEEE 830-1998-SRS standard format

1.5 Overview

This document is organized according to IEEE 830 standard with adaptations for agile development:

  • Section 2 provides overall system description and context
  • Section 3 defines specific functional requirements
  • Section 4 describes external interface requirements
  • Section 5 specifies non-functional requirements
  • Section 6 details requirements for each feature module
  • Section 7 defines data requirements and constraints
  • Appendices include data dictionary, traceability matrix, and glossary

2. Overall Description

2.1 Product Perspective

The Dust Ranger Data Management System operates as a self-contained web application with the following system context:

┌─────────────────────────────────────────────────────────────────────┐
│                         EXTERNAL SYSTEMS                             │
├─────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐              │
│  │  DustRanger  │  │   Bureau of  │  │  DeepSeek    │              │
│  │   Devices    │  │  Meteorology │  │   AI API     │              │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘              │
│         │                 │                 │                       │
│         ▼                 ▼                 ▼                       │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │              External Scraper APIs                            │  │
│  │  • Dust Level Scraper  • Flow Meter Scraper  • Asset Scraper │  │
│  └──────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│              DUST RANGER DATA MANAGEMENT SYSTEM                      │
├─────────────────────────────────────────────────────────────────────┤
│  ┌────────────────────────────────────────────────────────────┐    │
│  │                 React 19 Frontend (SPA)                     │    │
│  │  Dashboard │ Dust Levels │ Flow Meter │ Reports │ Heatmap  │    │
│  └────────────────────────────────────────────────────────────┘    │
│                              │                                       │
│                              ▼                                       │
│  ┌────────────────────────────────────────────────────────────┐    │
│  │              Supabase Backend (Self-Hosted)                 │    │
│  │  PostgreSQL │ Auth │ Storage │ Edge Functions │ Realtime   │    │
│  └────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────────┐
│                           END USERS                                  │
├─────────────────────────────────────────────────────────────────────┤
│  Administrators │ Operations Managers │ Field Technicians           │
└─────────────────────────────────────────────────────────────────────┘

2.2 Product Functions

The system provides the following major functions:

Function CategoryDescription
Data CollectionAutomated scraping of dust levels, flow meter readings, and asset data
Data VisualizationInteractive charts, heatmaps, and statistical displays
Report GenerationPDF reports with charts, statistics, and AI-generated descriptions
Email AutomationScheduled and recurring email notifications with attachments
User ManagementRole-based access control with module and site permissions
Asset TrackingEquipment monitoring, calibration tracking, and location management
Climate IntegrationWeather data correlation for environmental context

2.3 User Classes and Characteristics

2.3.1 Administrator

Description: System administrators with full access to all features and configuration.

Characteristics:

  • Technical proficiency: High
  • Frequency of use: Daily
  • Primary tasks: User management, system configuration, troubleshooting

Permissions:

  • Full access to all modules and sites
  • User and group management
  • System settings configuration
  • Bypass row-level security

2.3.2 Operations Manager

Description: Site managers responsible for monitoring and reporting.

Characteristics:

  • Technical proficiency: Medium
  • Frequency of use: Daily
  • Primary tasks: Report generation, data analysis, email scheduling

Typical Permissions:

  • View all permitted modules
  • Generate and manage reports
  • Configure email schedules
  • View activity logs

2.3.3 Field Technician

Description: On-site personnel collecting data and maintaining equipment.

Characteristics:

  • Technical proficiency: Low to Medium
  • Frequency of use: Weekly
  • Primary tasks: Data upload, weekly reports, calibration records

Typical Permissions:

  • View dust levels, flow meter, heatmap
  • Create weekly reports
  • Upload CSV data
  • Record calibrations and refills

2.4 Operating Environment

Client Environment:

  • Modern web browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
  • Minimum screen resolution: 1280x720
  • Internet connection: 1 Mbps minimum

Server Environment:

  • Oracle Cloud Infrastructure (Sydney region)
  • Docker Compose deployment
  • PostgreSQL 15.8 database
  • Cloudflare CDN for static assets

2.5 Design and Implementation Constraints

ConstraintDescriptionImpact
Database Row LimitSupabase API returns max 1000 rows per queryRequires batch fetching for large datasets
Edge Function Timeout60 seconds maximum execution timeLong operations need chunking
Authentication DomainEmail restricted to @dustac.com.auLimits user registration
Timezone HandlingPrimary focus on AWST (UTC+8)Date calculations must be timezone-aware
Browser StorageLocalStorage limited to 10MBSession data size constrained

2.6 Assumptions and Dependencies

Assumptions:

  1. Users have stable internet connectivity
  2. DustRanger devices produce CSV files with consistent column structure
  3. External scraper APIs maintain backward compatibility
  4. Users receive basic training before production use

Dependencies:

  1. Supabase platform availability (self-hosted)
  2. External scraper API availability
  3. Bureau of Meteorology data feed
  4. DeepSeek AI API for chart descriptions
  5. QuickChart.io for server-side chart rendering
  6. Google Maps API for heatmap visualization

3. Specific Requirements

3.1 Functional Requirements Overview

This section defines the functional requirements organized by system capability. Each requirement is assigned a unique identifier for traceability.

Requirement ID Format: FR-[Category]-[Number]

Category CodeCategory Name
AUTHAuthentication
RBACRole-Based Access Control
DATAData Management
EXPORTData Export
SCRAPERExternal Data Collection

3.2 Authentication Requirements

FR-AUTH-001: Email/Password Authentication

Priority: High Description: The system shall support email/password authentication for user login.

Acceptance Criteria:

  • Users can register with email and password
  • Email domain restricted to @dustac.com.au
  • Password must meet minimum security requirements
  • Failed login attempts are logged

FR-AUTH-002: OAuth Authentication

Priority: Medium Description: The system shall support OAuth authentication via Azure and Google.

Acceptance Criteria:

  • Users can authenticate via Azure AD
  • Users can authenticate via Google
  • OAuth tokens are securely stored
  • Session persists across browser refreshes

FR-AUTH-003: JWT Session Management

Priority: High Description: The system shall use JWT tokens for session management.

Acceptance Criteria:

  • Access tokens expire after configurable period
  • Refresh tokens enable session renewal
  • Tokens stored in localStorage with custom key
  • Invalid tokens redirect to login page

FR-AUTH-004: Password Reset

Priority: High Description: The system shall provide password reset functionality.

Acceptance Criteria:

  • Users can request password reset via email
  • Reset links expire after 24 hours
  • Password update requires current session or valid reset token
  • Password history prevents reuse of recent passwords

FR-AUTH-005: Auth Token URL Handling

Priority: Medium Description: The system shall preserve auth tokens in URL hash for OAuth callbacks.

Acceptance Criteria:

  • Auth tokens in URL hash are detected before Supabase processes
  • SessionStorage stores pending auth state during redirects
  • Tokens are cleared from URL after processing

3.3 Role-Based Access Control Requirements

FR-RBAC-001: User Roles

Priority: High Description: The system shall support two user roles: admin and user.

Acceptance Criteria:

  • Admin role has full system access
  • User role requires explicit permission grants
  • Role is stored in user_profiles table
  • Role changes take effect immediately

FR-RBAC-002: Module Permissions

Priority: High Description: The system shall enforce module-level access control.

Acceptance Criteria:

  • Each module has can_view and can_edit permissions
  • Permissions stored in user_module_permissions table
  • UI elements hidden for unpermitted modules
  • API requests blocked for unpermitted modules

Module List:

Module IDModule Name
dashboardDashboard
dust_levelsDust Levels
flow_meterFlow Meter
dust_rangerDust Ranger
reportsReports
weekly_reportsWeekly Reports
email_schedulesEmail Schedules
heatmapHeatmap
assetsAssets
climateClimate
settingsSettings
user_managementUser Management

FR-RBAC-003: Site Permissions

Priority: High Description: The system shall enforce site-level access control.

Acceptance Criteria:

  • Each site has can_view and can_edit permissions per user
  • Permissions stored in user_site_permissions table
  • Data filtered by permitted sites in all queries
  • Row-Level Security (RLS) enforces site permissions in database

FR-RBAC-004: User Groups

Priority: Medium Description: The system shall support user groups for bulk permission assignment.

Acceptance Criteria:

  • Groups can be created with name and description
  • Users can be assigned to multiple groups
  • Groups can have module and site permissions
  • Effective permissions = direct permissions ∪ group permissions

FR-RBAC-005: Permission Inheritance

Priority: Medium Description: The system shall merge direct and group permissions.

Acceptance Criteria:

  • Permission source tracked: direct, group, both, or none
  • Most permissive permission wins (OR logic)
  • Permission changes propagate immediately
  • Admin role bypasses all permission checks

3.4 Data Management Requirements

FR-DATA-001: Batch Data Fetching

Priority: High Description: The system shall support batch fetching for datasets exceeding 1000 records.

Acceptance Criteria:

  • Queries automatically paginate when results exceed 1000
  • All pages combined into single result set
  • Progress indication for large fetches
  • Timeout handling for very large datasets

FR-DATA-002: Timezone-Aware Calculations

Priority: High Description: The system shall handle timezone conversions correctly.

Acceptance Criteria:

  • All timestamps stored with timezone information
  • Date calculations use AWST (UTC+8) as primary timezone
  • Dust levels stored with year/month/day fields to avoid parsing issues
  • UI displays dates in user's local timezone

FR-DATA-003: Data Validation

Priority: High Description: The system shall validate all data on import.

Acceptance Criteria:

  • CSV files validated before import
  • Validation errors block import with clear messages
  • Warnings logged but allow import to proceed
  • Data type constraints enforced at database level

FR-DATA-004: Audit Logging

Priority: Medium Description: The system shall log all data changes for audit purposes.

Acceptance Criteria:

  • Create, update, delete operations logged
  • Log includes user ID, timestamp, and changed data
  • Logs stored in sys_activity_logs table
  • Logs retained for minimum 2 years

FR-DATA-005: Soft Delete Pattern

Priority: Medium Description: The system shall use soft delete for recoverable data.

Acceptance Criteria:

  • Deleted records marked with deleted_at timestamp
  • Soft-deleted records excluded from normal queries
  • Admin can view and restore soft-deleted records
  • Hard delete available for permanent removal

3.5 Data Export Requirements

FR-EXPORT-001: CSV Export

Priority: High Description: The system shall support CSV export with customizable fields.

Acceptance Criteria:

  • Users can select fields to include in export
  • Export respects current filters and date range
  • Large exports use streaming to prevent timeout
  • Filename includes date range and filter context

FR-EXPORT-002: PDF Report Generation

Priority: High Description: The system shall generate PDF reports with charts and statistics.

Acceptance Criteria:

  • Reports include time series, hourly, and daily charts
  • Statistics calculated: min, max, avg, median, std dev
  • Sampling rate configurable (1-100%) for large datasets
  • Reports stored in pdf-reports storage bucket

FR-EXPORT-003: Data Sampling

Priority: Medium Description: The system shall support data sampling for large exports.

Acceptance Criteria:

  • Sampling rate configurable per export
  • Sampling preserves data distribution
  • Statistics calculated from full dataset before sampling
  • Sampling method documented in export metadata

3.6 External Data Collection Requirements

FR-SCRAPER-001: Dust Level Scraper

Priority: High Description: The system shall collect dust level data via external scraper API.

Acceptance Criteria:

  • Scraper triggered manually or on schedule
  • Data validated before storage
  • Scraper status tracked in scraper_task_runs table
  • Errors logged with retry capability

FR-SCRAPER-002: Flow Meter Scraper

Priority: High Description: The system shall collect flow meter data via external scraper API.

Acceptance Criteria:

  • Scraper triggered manually or on schedule
  • Flow readings include litres dispensed and timestamp
  • Duplicate detection prevents data duplication
  • Site-specific scraper configuration supported

FR-SCRAPER-003: Heatmap Scraper

Priority: Medium Description: The system shall collect heatmap data via external scraper API.

Acceptance Criteria:

  • Geographic coordinates included with readings
  • Data stored in heatmap tables (data_heatmap)
  • Scraper supports date range filtering
  • Large datasets handled with pagination

FR-SCRAPER-004: Asset Scraper

Priority: Medium Description: The system shall collect asset data from SingleSourceIOT API.

Acceptance Criteria:

  • Asset metadata synchronized periodically
  • Location data updated with GPS coordinates
  • Operational status tracked (operational, error, offline)
  • Last contact time recorded for connectivity monitoring

4. External Interface Requirements

4.1 User Interfaces

UI-001: Responsive Web Interface

Description: The system shall provide a responsive web interface accessible from desktop and tablet devices.

Requirements:

  • Support screen resolutions from 1280x720 to 4K
  • Responsive layout adapts to screen size
  • Touch-friendly controls for tablet use
  • Consistent navigation across all pages

UI-002: Dashboard Layout

Description: The main dashboard shall display key metrics and system health indicators.

Layout Components:

  • Header with navigation and user menu
  • Collapsible sidebar with module navigation
  • Main content area with metric cards
  • Footer with version and status information

UI-003: Data Tables

Description: Data tables shall support sorting, filtering, and pagination.

Requirements:

  • Column sorting (ascending/descending)
  • Multi-column filtering
  • Configurable page size (10, 25, 50, 100)
  • Export to CSV from table view
  • Column visibility toggle

UI-004: Charts and Visualizations

Description: The system shall display interactive charts for data visualization.

Chart Types:

  • Time series line charts
  • Bar charts (hourly/daily averages)
  • Scatter plots (correlation analysis)
  • Heatmaps (geographic distribution)
  • Pie/donut charts (distribution analysis)

Interaction Features:

  • Zoom and pan
  • Tooltip on hover
  • Legend toggle
  • Date range selection
  • Export to PNG/SVG

UI-005: Forms and Input

Description: Forms shall provide validation feedback and user guidance.

Requirements:

  • Real-time validation feedback
  • Required field indicators
  • Error messages below fields
  • Auto-save for long forms (weekly reports)
  • Confirmation dialogs for destructive actions

4.2 Hardware Interfaces

HW-001: No Direct Hardware Interfaces

Description: The system does not interface directly with hardware devices.

Notes:

  • DustRanger devices communicate via external scraper APIs
  • Flow meters communicate via external scraper APIs
  • Weather stations communicate via BOM API
  • All hardware integration is abstracted through APIs

4.3 Software Interfaces

SW-001: Supabase Backend

Description: The system interfaces with Supabase for database, authentication, and storage.

InterfaceProtocolPurpose
PostgREST APIHTTPS/RESTDatabase queries
GoTrue APIHTTPS/RESTAuthentication
Storage APIHTTPS/RESTFile upload/download
RealtimeWebSocketLive updates

SW-002: External Scraper APIs

Description: The system interfaces with external scraper services for data collection.

ScraperEndpointData Type
Dust Level ScraperEdge Function triggerDust concentration readings
Flow Meter ScraperEdge Function triggerWater usage readings
Heatmap ScraperEdge Function triggerGeographic dust data
Asset ScraperSingleSourceIOT APIAsset metadata and locations

SW-003: Bureau of Meteorology API

Description: The system interfaces with BOM for weather data.

Data Retrieved:

  • Temperature (9am, 3pm)
  • Rainfall
  • Wind speed and direction
  • Humidity
  • Atmospheric pressure

SW-004: DeepSeek AI API

Description: The system interfaces with DeepSeek V3.2 for AI-powered chart descriptions.

Usage:

  • Generate natural language descriptions of chart data
  • Identify trends and anomalies
  • Provide insights for reports

SW-005: QuickChart.io API

Description: The system interfaces with QuickChart.io for server-side chart rendering.

Usage:

  • Generate PNG images of charts for PDF reports
  • Support for line, bar, scatter, and pie charts
  • Configurable chart dimensions and styling

SW-006: Google Maps API

Description: The system interfaces with Google Maps for heatmap visualization.

Features Used:

  • Map rendering
  • Heatmap layer
  • Marker placement
  • Custom overlays

4.4 Communication Interfaces

COMM-001: HTTPS Protocol

Description: All client-server communication shall use HTTPS.

Requirements:

  • TLS 1.2 or higher
  • Valid SSL certificates
  • HSTS headers enabled
  • Certificate pinning for mobile (future)

COMM-002: WebSocket Protocol

Description: Real-time updates shall use WebSocket connections.

Usage:

  • Supabase Realtime subscriptions
  • Live data updates (selective features)
  • Connection auto-reconnect on failure

COMM-003: Email Protocol

Description: Email notifications shall use SMTP via Edge Functions.

Requirements:

  • Support HTML and plain text formats
  • Attachment support (CSV files)
  • Delivery status tracking
  • Bounce handling

5. Non-Functional Requirements

5.1 Performance Requirements

NFR-PERF-001: Page Load Time

Description: Dashboard and main pages shall load within acceptable time limits.

MetricTargetPriority
Largest Contentful Paint (LCP)< 2.5s (75th percentile)High
First Input Delay (FID)< 100msHigh
Cumulative Layout Shift (CLS)< 0.1Medium

NFR-PERF-002: API Response Time

Description: API requests shall complete within acceptable time limits.

Operation TypeTarget (95th percentile)Priority
Read operations< 500msHigh
Write operations< 2sMedium
Complex queries< 5sMedium

NFR-PERF-003: PDF Generation Time

Description: PDF reports shall generate within acceptable time limits.

Report SizeTargetPriority
Standard (10 pages)< 30sHigh
Large (30 pages)< 60sHigh
Very large (50+ pages)< 120sMedium

NFR-PERF-004: Concurrent Users

Description: The system shall support concurrent user load.

MetricTargetPriority
Concurrent users100 without degradationMedium
Peak load150 with graceful degradationLow

NFR-PERF-005: Data Processing

Description: Data processing operations shall complete within acceptable time limits.

OperationTargetPriority
CSV upload (10K rows)< 30sHigh
Data export (50K rows)< 60sMedium
Chart rendering< 5sHigh

5.2 Safety Requirements

NFR-SAFE-001: Data Integrity

Description: The system shall maintain data integrity under all conditions.

Requirements:

  • Database transactions for multi-step operations
  • Referential integrity constraints
  • Validation at application and database levels
  • Backup and recovery procedures

NFR-SAFE-002: Graceful Degradation

Description: The system shall degrade gracefully when external services fail.

Requirements:

  • Cached data displayed when API unavailable
  • Clear error messages for users
  • Automatic retry for transient failures
  • Manual fallback options available

5.3 Security Requirements

NFR-SEC-001: Authentication Security

Description: The system shall implement secure authentication.

Requirements:

  • Password hashing with bcrypt
  • JWT token expiration (configurable)
  • Secure token storage
  • Session invalidation on logout

NFR-SEC-002: Authorization Security

Description: The system shall enforce authorization at all levels.

Requirements:

  • Row-Level Security (RLS) in database
  • API endpoint authorization checks
  • UI element visibility based on permissions
  • Audit logging of access attempts

NFR-SEC-003: Data Protection

Description: The system shall protect sensitive data.

Requirements:

  • HTTPS/TLS for data in transit
  • Encryption for data at rest (database)
  • PII handling compliance
  • Data retention policies

NFR-SEC-004: Input Validation

Description: The system shall validate all user input.

Requirements:

  • Server-side validation for all inputs
  • SQL injection prevention (parameterized queries)
  • XSS prevention (React escaping, CSP headers)
  • File upload validation (type, size, content)

NFR-SEC-005: Security Monitoring

Description: The system shall monitor for security threats.

Requirements:

  • Failed login attempt logging
  • Unusual activity detection
  • Security event alerting
  • Regular security audits

5.4 Software Quality Attributes

NFR-QUAL-001: Maintainability

Description: The system shall be maintainable by the development team.

Requirements:

  • TypeScript strict mode enabled
  • ESLint configuration enforced
  • Code coverage ≥80% lines, ≥75% branches
  • Documentation for all public APIs
  • Consistent coding conventions

NFR-QUAL-002: Testability

Description: The system shall be testable at all levels.

Requirements:

  • Unit tests for services and hooks
  • Integration tests for API endpoints
  • E2E tests for critical user flows
  • Test data fixtures available
  • CI/CD pipeline with automated testing

NFR-QUAL-003: Reliability

Description: The system shall be reliable and available.

Requirements:

  • 99% uptime target
  • Automated health checks
  • Error recovery mechanisms
  • Database backup and restore procedures

NFR-QUAL-004: Scalability

Description: The system shall scale to meet growing demands.

Requirements:

  • Horizontal scaling via Docker Compose
  • Database connection pooling (PgBouncer)
  • CDN for static assets
  • Batch processing for large datasets

NFR-QUAL-005: Usability

Description: The system shall be usable by target user groups.

Requirements:

  • Consistent UI patterns across modules
  • Responsive design for desktop and tablet
  • Dark mode support
  • Keyboard navigation support
  • WCAG 2.1 AA accessibility compliance

5.5 Business Rules

NFR-BUS-001: Data Validation Rules

Description: The system shall enforce data validation rules.

Data TypeValidation Rule
Dust concentrationNon-negative numeric value
TemperatureRange: -50°C to 60°C
HumidityRange: 0% to 100%
Flow meter readingNon-negative numeric value
Email addressValid email format
Date/timeValid date, not in future

NFR-BUS-002: Business Logic Rules

Description: The system shall implement business logic rules.

Rule IDDescription
BL-001Tank status: normal (>50%), attention (20-50%), low (0-20%), anomaly (<0%)
BL-002Calibration reminder: last calibration date + interval
BL-003Effective permissions = direct permissions ∪ group permissions
BL-004Provisional data marked until confirmed by operator
BL-005Archived assets excluded from active monitoring

NFR-BUS-003: Operational Constraints

Description: The system shall operate within defined constraints.

ConstraintLimit
Database query row limit1000 per request
Edge function timeout60 seconds
File upload size50MB maximum
Email attachment size10MB maximum
Report generation timeout120 seconds

6. Feature Module Requirements

This section details the functional requirements for each of the 16 feature modules. Requirements are organized with user stories, acceptance criteria, and cross-references to the System Design Document (SDD v2).

6.1 Dashboard Module

Module ID: dashboard SDD Reference: Section 10.1 Priority: High

6.1.1 Overview

The Dashboard module provides a real-time overview of system health, key metrics, and operational status across all mining sites.

6.1.2 User Stories

US-DASH-001: View System Overview

As an operations manager, I want to see a summary of all key metrics on a single page, so that I can quickly assess the overall system status.

Acceptance Criteria:

  • Dashboard displays total number of active sites
  • Dashboard displays total number of active devices
  • Dashboard displays latest dust level readings
  • Dashboard displays flow meter status summary
  • Data refreshes automatically every 5 minutes

US-DASH-002: View Data Freshness

As a field technician, I want to see when data was last updated, so that I know if the information is current.

Acceptance Criteria:

  • Each metric card shows "last updated" timestamp
  • Stale data (>24 hours) highlighted with warning indicator
  • Manual refresh button available
  • Freshness calculated per data source

US-DASH-003: View Asset Health

As an administrator, I want to see the health status of all assets, so that I can identify devices needing attention.

Acceptance Criteria:

  • Asset health summary shows operational/error/offline counts
  • Click-through to detailed asset list
  • Last contact time displayed for each asset
  • Alerts for devices offline >24 hours

US-DASH-004: View Dust Ranger Summary

As an operations manager, I want to see a summary of Dust Ranger device activity, so that I can monitor fleet utilization.

Acceptance Criteria:

  • Total measurements collected today/this week
  • Active vs inactive device count
  • Average readings per device
  • Data gap indicators

US-DASH-005: View Calibration Status

As a field technician, I want to see calibration compliance status, so that I can schedule maintenance activities.

Acceptance Criteria:

  • Count of devices due for calibration
  • Count of overdue calibrations
  • Next calibration due date
  • Link to calibration management

6.1.3 Functional Requirements

Req IDDescriptionPriority
FR-DASH-001Display overview metrics (sites, devices, readings)High
FR-DASH-002Show dust ranger health statusHigh
FR-DASH-003Display flow meter refill cadenceMedium
FR-DASH-004Show asset health indicatorsMedium
FR-DASH-005Display calibration compliance statusMedium
FR-DASH-006Provide data freshness indicatorsHigh
FR-DASH-007Support multi-site filteringMedium
FR-DASH-008Auto-refresh data periodicallyLow

6.1.4 Data Requirements

Input Data:

  • Aggregated metrics from data_dust_levels
  • Aggregated metrics from data_flow_meters
  • Asset status from data_assets
  • Calibration records from ops_flow_calibrations

Output Data:

  • Metric cards with current values
  • Trend indicators (up/down/stable)
  • Status badges (healthy/warning/critical)

6.2 Dust Levels Module

Module ID: dust_levels SDD Reference: Section 10.2 Priority: High

6.2.1 Overview

The Dust Levels module displays and analyzes dust concentration data from monitoring stations across mining sites.

6.2.2 User Stories

US-DL-001: View Dust Level Data

As an operations manager, I want to view dust concentration readings by site and date, so that I can monitor environmental conditions.

Acceptance Criteria:

  • Data displayed in tabular format with sorting
  • Filter by site, geofence, and date range
  • Show PM1.0, PM2.5, PM4.0, PM10 values
  • Include temperature and humidity readings

US-DL-002: View Statistics

As an operations manager, I want to see statistical summaries of dust levels, so that I can identify trends and anomalies.

Acceptance Criteria:

  • Display average, min, max values per site
  • Show standard deviation
  • Compare against threshold values
  • Highlight exceedances

US-DL-003: Compare Sites

As an operations manager, I want to compare dust levels across multiple sites, so that I can identify problem areas.

Acceptance Criteria:

  • Select multiple sites for comparison
  • Side-by-side chart display
  • Normalized comparison option
  • Export comparison data

US-DL-004: Export Data

As an operations manager, I want to export dust level data to CSV, so that I can perform offline analysis.

Acceptance Criteria:

  • Select date range for export
  • Choose fields to include
  • Download as CSV file
  • Filename includes date range

US-DL-005: Trigger Data Refresh

As a field technician, I want to manually trigger a data refresh, so that I can see the latest readings.

Acceptance Criteria:

  • "Refresh Data" button available
  • Progress indicator during refresh
  • Success/failure notification
  • Last refresh timestamp displayed

US-DL-006: View Weather Correlation

As an operations manager, I want to see dust levels correlated with weather data, so that I can understand environmental factors.

Acceptance Criteria:

  • Weather data displayed alongside dust readings
  • Temperature, humidity, wind speed included
  • Correlation chart available
  • Weather station source identified

6.2.3 Functional Requirements

Req IDDescriptionPriority
FR-DL-001Display dust concentration readings by site and geofenceHigh
FR-DL-002Support date range filtering (daily, weekly, monthly)High
FR-DL-003Calculate and display statistics (avg, max, min)High
FR-DL-004Integrate weather station dataMedium
FR-DL-005Export data to CSV formatHigh
FR-DL-006Compare dust levels across multiple sitesMedium
FR-DL-007Trigger external scraper APIMedium
FR-DL-008Support timezone-aware date calculations (AWST)High
FR-DL-009Display road corrugations/bumps dataLow
FR-DL-010Mark data as provisional vs confirmedMedium
FR-DL-011Manage site visibility preferencesLow

6.2.4 Data Requirements

Database Tables:

  • data_dust_levels - Daily dust concentration readings
  • data_weather - Weather station observations
  • cfg_site_weather_stations - Site-to-weather-station mappings
  • scraper_task_runs - Scraper execution history

Data Fields:

FieldTypeDescription
site_idUUIDReference to mine site
geofenceTEXTGeofence identifier
yearINTEGERYear of reading
monthINTEGERMonth of reading
dayINTEGERDay of reading
pm1_avgDECIMALPM1.0 average (µg/m³)
pm25_avgDECIMALPM2.5 average (µg/m³)
pm4_avgDECIMALPM4.0 average (µg/m³)
pm10_avgDECIMALPM10 average (µg/m³)
temperatureDECIMALTemperature (°C)
humidityDECIMALRelative humidity (%)
is_provisionalBOOLEANProvisional data flag

6.2.5 Business Rules

Rule IDDescription
BR-DL-001Dust levels stored with year/month/day fields to avoid JavaScript Date parsing issues
BR-DL-002All timestamps include timezone information (AWST offset)
BR-DL-003Data marked as provisional until confirmed by operators
BR-DL-004Weather data integrated from Bureau of Meteorology
BR-DL-005Site visibility preferences stored per user

6.3 Flow Meter Module

Module ID: flow_meter SDD Reference: Section 10.3 Priority: High

6.3.1 Overview

The Flow Meter module tracks water usage, tank refills, calibrations, and tank management for water truck operations.

6.3.2 User Stories

US-FM-001: View Flow Meter Readings

As an operations manager, I want to view flow meter readings, so that I can track water usage.

Acceptance Criteria:

  • Display litres dispensed per reading
  • Filter by site, asset, and date range
  • Show cumulative usage totals
  • Identify usage patterns

US-FM-002: Record Tank Refill

As a field technician, I want to record tank refills, so that I can track water replenishment.

Acceptance Criteria:

  • Enter refill amount in litres
  • Select asset and date
  • Add optional notes
  • Record redundancy amount (backup water)

US-FM-003: View Tank Status

As an operations manager, I want to see current tank levels, so that I can plan refill schedules.

Acceptance Criteria:

  • Display tank level percentage
  • Show status indicator (normal/attention/low/anomaly)
  • Calculate based on capacity and usage
  • Alert for low tank levels

US-FM-004: Manage Tank Corrections

As a field technician, I want to record tank level corrections, so that I can adjust for manual measurements.

Acceptance Criteria:

  • Enter corrected tank level
  • Provide reason for correction
  • Track correction history
  • Recalculate subsequent readings

US-FM-005: Track Calibrations

As a field technician, I want to track flow meter calibrations, so that I can ensure measurement accuracy.

Acceptance Criteria:

  • Record calibration date and results
  • Upload calibration evidence (photos/documents)
  • Set next calibration due date
  • Generate calibration reminders

US-FM-006: View Calibration Reminders

As an operations manager, I want to see calibration reminders, so that I can schedule maintenance.

Acceptance Criteria:

  • List devices due for calibration
  • Show overdue calibrations highlighted
  • Filter by site and status
  • Send reminder notifications

US-FM-007: Identify Usage Gaps

As an operations manager, I want to identify days without water usage, so that I can investigate operational issues.

Acceptance Criteria:

  • Highlight consecutive days without dispensing
  • Filter by minimum gap duration
  • Show gap analysis chart
  • Export gap report

US-FM-008: Export Flow Meter Data

As an operations manager, I want to export flow meter data, so that I can perform offline analysis.

Acceptance Criteria:

  • Select date range and assets
  • Include refills and calibrations
  • Download as CSV
  • Include calculated fields

6.3.3 Functional Requirements

Req IDDescriptionPriority
FR-FM-001Display flow meter readings with litres dispensedHigh
FR-FM-002Record and manage tank refillsHigh
FR-FM-003Track tank corrections (manual adjustments)Medium
FR-FM-004Configure tank capacities per assetMedium
FR-FM-005Calculate tank level percentage and statusHigh
FR-FM-006Identify usage gaps (days without data)Medium
FR-FM-007Generate calibration remindersMedium
FR-FM-008Record calibration evidenceMedium
FR-FM-009Export flow meter data to CSVHigh
FR-FM-010Support manual data entryMedium
FR-FM-011Mark records as ignoredLow
FR-FM-012Calculate redundancy amountsLow

6.3.4 Data Requirements

Database Tables:

  • data_flow_meters - Flow meter readings
  • ops_dustloc_refills - Tank refill records
  • ops_flow_calibrations - Calibration records
  • ops_tank_corrections - Tank level corrections
  • ops_tank_capacities - Tank capacity configurations

Data Fields (data_flow_meters):

FieldTypeDescription
idUUIDPrimary key
site_idUUIDReference to mine site
asset_idUUIDReference to asset
reading_dateDATEDate of reading
litres_dispensedDECIMALWater dispensed (litres)
tank_levelDECIMALCurrent tank level (litres)
is_ignoredBOOLEANExclude from statistics
created_atTIMESTAMPTZRecord creation time

Data Fields (ops_dustloc_refills):

FieldTypeDescription
idUUIDPrimary key
asset_idUUIDReference to asset
refill_dateDATEDate of refill
litres_addedDECIMALWater added (litres)
redundancy_litresDECIMALBackup water amount
notesTEXTOptional notes
created_byUUIDUser who recorded

6.3.5 Business Rules

Rule IDDescription
BR-FM-001Tank status: normal (>50%), attention (20-50%), low (0-20%), anomaly (<0%), overflow (>capacity)
BR-FM-002Calibration reminders based on last calibration date + interval
BR-FM-003Redundancy rate applied to base litres for backup calculation
BR-FM-004Gap analysis identifies consecutive days without dispensing
BR-FM-005Ignored records excluded from all reports and statistics

6.4 Dust Ranger Module

Module ID: dust_ranger SDD Reference: Section 10.4 Priority: High

6.4.1 Overview

The Dust Ranger module analyzes particle concentration data from mobile dust monitoring devices mounted on vehicles.

6.4.2 User Stories

US-DR-001: View Mass Concentration Data

As an operations manager, I want to view mass concentration data (PM1, PM2.5, PM4, PM10), so that I can monitor air quality.

Acceptance Criteria:

  • Display PM values in µg/m³
  • Filter by site, vehicle, and date range
  • Show time series chart
  • Calculate daily/hourly averages

US-DR-002: View Number Concentration Data

As an operations manager, I want to view number concentration data (NC0.5, NC1, NC2.5, NC4, NC10), so that I can analyze particle counts.

Acceptance Criteria:

  • Display NC values in particles/cm³
  • Toggle between MC and NC data types
  • Show distribution analysis
  • Compare across vehicles

US-DR-003: View Device Statistics

As an operations manager, I want to see statistics per device, so that I can monitor fleet performance.

Acceptance Criteria:

  • Total measurements per device
  • Average values per device
  • Data gaps identified
  • First/last reading timestamps

US-DR-004: Identify Zero Readings

As a field technician, I want to identify zero reading events, so that I can detect device malfunctions.

Acceptance Criteria:

  • Highlight periods with zero readings
  • Filter by duration threshold
  • Show zero reading chart
  • Link to device maintenance

US-DR-005: Export Dust Ranger Data

As an operations manager, I want to export dust ranger data, so that I can perform detailed analysis.

Acceptance Criteria:

  • Select date range and vehicles
  • Choose data type (MC or NC)
  • Configure sampling rate
  • Download as CSV

6.4.3 Functional Requirements

Req IDDescriptionPriority
FR-DR-001Display mass concentration (PM1, PM2.5, PM4, PM10) dataHigh
FR-DR-002Display number concentration (NC0.5, NC1, NC2.5, NC4, NC10) dataHigh
FR-DR-003Filter by date range, sites, and vehiclesHigh
FR-DR-004Generate hourly and daily averagesHigh
FR-DR-005Calculate device statisticsMedium
FR-DR-006Display time series with sampling for large datasetsHigh
FR-DR-007Identify zero reading eventsMedium
FR-DR-008Export data to CSVHigh
FR-DR-009Support environmental data (temperature, humidity)Low
FR-DR-010Provide aggregated statisticsMedium

6.4.4 Data Requirements

Database Tables:

  • data_dust_ranger - Raw dust ranger measurements

PostgreSQL Functions:

  • dust_ranger_get_stats - Aggregate statistics
  • dust_ranger_get_hourly_averages - Hourly averages
  • dust_ranger_get_daily_averages - Daily averages
  • dust_ranger_get_device_stats - Per-device statistics
  • dust_ranger_get_sampled_timeseries - Sampled time series

Data Fields:

FieldTypeDescription
idUUIDPrimary key
site_idUUIDReference to mine site
vehicle_idTEXTVehicle identifier
timestampTIMESTAMPTZMeasurement timestamp
pm1DECIMALPM1.0 mass concentration
pm25DECIMALPM2.5 mass concentration
pm4DECIMALPM4.0 mass concentration
pm10DECIMALPM10 mass concentration
nc05DECIMALNC0.5 number concentration
nc1DECIMALNC1.0 number concentration
nc25DECIMALNC2.5 number concentration
nc4DECIMALNC4.0 number concentration
nc10DECIMALNC10 number concentration
temperatureDECIMALTemperature (°C)
humidityDECIMALRelative humidity (%)

6.4.5 Business Rules

Rule IDDescription
BR-DR-001Data types: MC (mass concentration) or NC (number concentration)
BR-DR-002Hourly/daily averages calculated server-side for performance
BR-DR-003Time series sampling limits to max_points for visualization
BR-DR-004Zero readings indicate potential device issues
BR-DR-005Data gaps calculated from first_seen to last_seen timestamps

6.5 Reports Module

Module ID: reports SDD Reference: Section 10.5 Priority: High

6.5.1 Overview

The Reports module generates comprehensive PDF reports with charts, statistics, and data analysis from uploaded CSV data.

6.5.2 User Stories

US-RPT-001: Generate PDF Report

As an operations manager, I want to generate PDF reports from uploaded data, so that I can share analysis with stakeholders.

Acceptance Criteria:

  • Upload CSV file with dust ranger data
  • Configure report parameters
  • Generate PDF with progress indicator
  • Download or view generated report

US-RPT-002: Configure Report Charts

As an operations manager, I want to select which charts to include, so that I can customize report content.

Acceptance Criteria:

  • Toggle time series chart
  • Toggle hourly average chart
  • Toggle daily average chart
  • Toggle device statistics
  • Toggle raw data table

US-RPT-003: View Report Statistics

As an operations manager, I want to see statistical summaries in reports, so that I can understand data distribution.

Acceptance Criteria:

  • Display min, max, average values
  • Show median and standard deviation
  • Include data point count
  • Show date range covered

US-RPT-004: Configure Sampling Rate

As an operations manager, I want to configure data sampling, so that I can manage report size for large datasets.

Acceptance Criteria:

  • Set sampling rate (1-100%)
  • Preview data point count
  • Statistics calculated from full dataset
  • Sampling method documented

US-RPT-005: Manage Generated Reports

As an operations manager, I want to view and manage generated reports, so that I can access historical reports.

Acceptance Criteria:

  • List all generated reports
  • Filter by date, site, status
  • View report inline
  • Download report PDF
  • Delete old reports

US-RPT-006: View AI-Generated Descriptions

As an operations manager, I want to see AI-generated chart descriptions, so that I can understand trends without manual analysis.

Acceptance Criteria:

  • AI analyzes chart data
  • Natural language description generated
  • Trends and anomalies highlighted
  • Descriptions included in PDF

6.5.3 Functional Requirements

Req IDDescriptionPriority
FR-RPT-001Generate PDF reports from uploaded CSV dataHigh
FR-RPT-002Include time series chartsHigh
FR-RPT-003Include hourly average chartsHigh
FR-RPT-004Include daily average chartsHigh
FR-RPT-005Include device statistics and timelineMedium
FR-RPT-006Include raw data tables (optional)Low
FR-RPT-007Support sampling rate configurationMedium
FR-RPT-008Generate report statisticsHigh
FR-RPT-009Support multiple report templatesMedium
FR-RPT-010Store reports in storage bucketHigh
FR-RPT-011Track report generation metadataMedium
FR-RPT-012Support custom chart configurationMedium
FR-RPT-013Include flow meter data (optional)Low
FR-RPT-014Generate AI-powered chart descriptionsMedium

6.5.4 Data Requirements

Database Tables:

  • rpt_reports - Report metadata
  • upload_csv_files - Source CSV files
  • upload_measurements - Parsed measurement data

Data Fields (rpt_reports):

FieldTypeDescription
idUUIDPrimary key
site_idUUIDReference to mine site
titleTEXTReport title
statusTEXTpending/generating/completed/failed
file_pathTEXTStorage path to PDF
configJSONBReport configuration
statisticsJSONBCalculated statistics
created_byUUIDUser who generated
created_atTIMESTAMPTZGeneration timestamp
duration_msINTEGERGeneration duration

6.5.5 Business Rules

Rule IDDescription
BR-RPT-001Reports generated using PDF-lib and QuickChart.io
BR-RPT-002Sampling rate reduces data points for large datasets
BR-RPT-003Report status: pending → generating → completed/failed
BR-RPT-004Statistics calculated from all data points before sampling
BR-RPT-005Charts generated via QuickChart.io API

6.6 Weekly Reports Module

Module ID: weekly_reports SDD Reference: Section 10.6 Priority: Medium

6.6.1 Overview

The Weekly Reports module provides structured field reporting for operational activities, with auto-save functionality and multiple report sections.

6.6.2 User Stories

US-WR-001: Create Weekly Report

As a field technician, I want to create weekly reports, so that I can document field activities.

Acceptance Criteria:

  • Select report week (start/end dates)
  • Select site(s) covered
  • Fill in multiple sections
  • Save as draft or complete

US-WR-002: Record Site Observations

As a field technician, I want to record observations per device, so that I can document device status.

Acceptance Criteria:

  • List devices at selected site
  • Add status and notes per device
  • Include photos (optional)
  • Track observation date

US-WR-003: Record Flow Meter Usage

As a field technician, I want to record flow meter usage summary, so that I can document water consumption.

Acceptance Criteria:

  • Enter volume used
  • Specify date range
  • Add usage notes
  • Link to flow meter data

US-WR-004: Auto-Save Report

As a field technician, I want my report to auto-save, so that I don't lose work if I navigate away.

Acceptance Criteria:

  • Auto-save every 30 seconds
  • Visual indicator of save status
  • Recover unsaved changes
  • Manual save option available

US-WR-005: Complete Report

As a field technician, I want to mark a report as complete, so that it becomes read-only for review.

Acceptance Criteria:

  • Validate required fields
  • Change status to completed
  • Lock report from editing
  • Notify relevant users

6.6.3 Functional Requirements

Req IDDescriptionPriority
FR-WR-001Create weekly reports with multiple sectionsHigh
FR-WR-002Site observations sectionHigh
FR-WR-003Flow meter usage sectionHigh
FR-WR-004Dashboard updates sectionMedium
FR-WR-005Vendor activities sectionMedium
FR-WR-006Water truck testing sectionMedium
FR-WR-007Hardware installations sectionMedium
FR-WR-008Admin reporting sectionMedium
FR-WR-009Other tasks sectionMedium
FR-WR-010Auto-save functionalityHigh
FR-WR-011Support draft and completed statusHigh
FR-WR-012Custom date range for flow meter dataMedium

6.6.4 Report Sections

SectionDescriptionFields
Site ObservationsDevice status and notesdevice_id, status, notes, photos
Flow Meter UsageWater consumption summaryvolume_used, date_range, notes
Dashboard UpdatesSystem changesupdate_type, description, date
Vendor ActivitiesMaintenance and supportvendor, activity, date, outcome
Water Truck TestingTest resultstest_summary, issues, improvements
Hardware InstallationsNew equipmentequipment, location, date, notes
Admin ReportingTravel and admintravel_details, reporting_activities
Other TasksMiscellaneoussite_support, stakeholder, internal

6.6.5 Data Requirements

Database Tables:

  • rpt_weekly_summaries - Weekly report records

Data Fields:

FieldTypeDescription
idUUIDPrimary key
site_idUUIDReference to mine site
week_startDATEReport week start
week_endDATEReport week end
statusTEXTdraft/completed
site_observationsJSONBObservations data
flow_meter_usageJSONBUsage data
dashboard_updatesJSONBUpdates data
vendor_activitiesJSONBVendor data
water_truck_testingJSONBTesting data
hardware_installationsJSONBInstallation data
admin_reportingJSONBAdmin data
other_tasksJSONBOther tasks data
created_byUUIDUser who created
updated_atTIMESTAMPTZLast update time

6.6.6 Business Rules

Rule IDDescription
BR-WR-001Report period end typically Sunday, week starting Monday
BR-WR-002Auto-save triggered on field changes (30 second debounce)
BR-WR-003Draft reports can be edited, completed reports are read-only
BR-WR-004Flow meter date range customizable per report

6.7 Heatmap Module

Module ID: heatmap SDD Reference: Section 10.7 Priority: Medium

6.7.1 Overview

The Heatmap module visualizes geographic distribution of dust concentration data on interactive maps.

6.7.2 User Stories

US-HM-001: View Heatmap

As an operations manager, I want to view dust concentration on a map, so that I can identify geographic hotspots.

Acceptance Criteria:

  • Display Google Map with heatmap overlay
  • Color intensity indicates concentration level
  • Filter by date range
  • Zoom and pan controls

US-HM-002: Configure Heatmap Display

As an operations manager, I want to customize heatmap appearance, so that I can optimize visualization.

Acceptance Criteria:

  • Select color gradient scheme
  • Adjust radius and opacity
  • Configure weight scale
  • Toggle dissipation effect

US-HM-003: View Data Points

As an operations manager, I want to see individual data points, so that I can examine specific readings.

Acceptance Criteria:

  • Click on map to see nearby readings
  • Display marker with reading details
  • Show timestamp and values
  • Link to source data

US-HM-004: View Contour Lines

As an operations manager, I want to see contour lines, so that I can visualize concentration gradients.

Acceptance Criteria:

  • Toggle contour line display
  • Configure contour intervals
  • Show contour labels
  • Export contour data

6.7.3 Functional Requirements

Req IDDescriptionPriority
FR-HM-001Display Google Map with heatmap overlayHigh
FR-HM-002Support multiple gradient color schemesMedium
FR-HM-003Configurable heatmap parametersMedium
FR-HM-004Support canvas-based renderingMedium
FR-HM-005Display marker points with asset informationMedium
FR-HM-006Show contour linesLow
FR-HM-007Filter by date range and data typeHigh
FR-HM-008Display statistics (count, min, max)Medium

6.7.4 Data Requirements

Database Tables:

  • data_heatmap - Geographic dust concentration readings
  • data_asset_locations - Asset location tracking

Data Fields:

FieldTypeDescription
idUUIDPrimary key
site_idUUIDReference to mine site
latitudeDECIMALGPS latitude
longitudeDECIMALGPS longitude
valueDECIMALConcentration value
data_typeTEXTMC or NC
timestampTIMESTAMPTZReading timestamp

6.7.5 Business Rules

Rule IDDescription
BR-HM-001Heatmap data sourced from data_heatmap table in main database
BR-HM-002Contour generation from point data
BR-HM-003Canvas rendering for large datasets (>1000 points)

6.8 Email Schedules Module

Module ID: email_schedules SDD Reference: Section 10.8 Priority: Medium

6.8.1 Overview

The Email Schedules module automates email notifications and reporting with support for templates, attachments, and recurring schedules.

6.8.2 User Stories

US-ES-001: Create Email Schedule

As an operations manager, I want to create email schedules, so that I can automate report distribution.

Acceptance Criteria:

  • Enter recipients (to, cc, bcc)
  • Set subject and body
  • Choose send mode (manual, scheduled, recurring)
  • Save as draft or activate

US-ES-002: Configure Recurring Emails

As an operations manager, I want to set up recurring emails, so that reports are sent automatically.

Acceptance Criteria:

  • Select recurrence type (daily, weekly, monthly)
  • Set recurrence day/time
  • Configure end date (optional)
  • View next scheduled send

US-ES-003: Use Email Templates

As an operations manager, I want to use templates, so that I can maintain consistent email formatting.

Acceptance Criteria:

  • Create snippet templates for reusable content
  • Create variable templates for dynamic data
  • Insert templates into email body
  • Preview rendered template

US-ES-004: Attach Data Files

As an operations manager, I want to attach data files, so that recipients receive relevant data.

Acceptance Criteria:

  • Attach CSV files (flow meter data)
  • Configure attachment date range
  • Select sites to include
  • Preview attachment content

US-ES-005: View Email History

As an operations manager, I want to view email send history, so that I can track delivery status.

Acceptance Criteria:

  • List all sent emails
  • Show send status (sent, failed)
  • View error messages for failures
  • Resend failed emails

US-ES-006: Preview Email

As an operations manager, I want to preview emails before sending, so that I can verify content.

Acceptance Criteria:

  • Render template variables
  • Show attachment list
  • Display recipient list
  • Test send to self

6.8.3 Functional Requirements

Req IDDescriptionPriority
FR-ES-001Create email schedules with recipientsHigh
FR-ES-002Support manual, scheduled, recurring modesHigh
FR-ES-003Configure recurrence (daily, weekly, monthly)High
FR-ES-004Support email templates with variablesMedium
FR-ES-005Create snippet templatesMedium
FR-ES-006Create variable templatesMedium
FR-ES-007Attach CSV filesHigh
FR-ES-008Configure attachment data sourcesMedium
FR-ES-009Track email send historyHigh
FR-ES-010Support multiple sender addressesLow
FR-ES-011Display email previewMedium
FR-ES-012Handle send failures with loggingHigh
FR-ES-013Support cron-based recurring sendsMedium

6.8.4 Data Requirements

Database Tables:

  • email_schedules - Email schedule definitions
  • email_senders - Sender configurations
  • email_snippet_templates - Reusable content fragments
  • email_variable_templates - Dynamic variable templates
  • email_schedule_attachments - Attachment configurations
  • email_logs - Send history and status

Data Fields (email_schedules):

FieldTypeDescription
idUUIDPrimary key
nameTEXTSchedule name
subjectTEXTEmail subject
bodyTEXTEmail body (HTML)
recipients_toTEXT[]To recipients
recipients_ccTEXT[]CC recipients
recipients_bccTEXT[]BCC recipients
modeTEXTmanual/scheduled/recurring
statusTEXTdraft/scheduled/processing/sent/failed
recurrence_typeTEXTnone/daily/weekly/monthly
recurrence_configJSONBRecurrence settings
next_send_atTIMESTAMPTZNext scheduled send
created_byUUIDUser who created

6.8.5 Business Rules

Rule IDDescription
BR-ES-001Email status: draft → scheduled → processing → sent/failed
BR-ES-002Recurrence end date optional (null = indefinite)
BR-ES-003Next send time calculated from recurrence config
BR-ES-004Cron job processes recurring emails daily
BR-ES-005Failed sends logged with error message
BR-ES-006Variable templates support nested fields

6.9 User Management Module

Module ID: user_management SDD Reference: Section 10.9 Priority: High

6.9.1 Overview

The User Management module provides role-based access control with module and site-level permissions, user groups, and audit logging.

6.9.2 User Stories

US-UM-001: Manage Users

As an administrator, I want to manage user accounts, so that I can control system access.

Acceptance Criteria:

  • List all users with status
  • Create new user accounts
  • Edit user profile and role
  • Activate/deactivate users

US-UM-002: Assign Module Permissions

As an administrator, I want to assign module permissions, so that I can control feature access.

Acceptance Criteria:

  • Select modules to grant access
  • Set can_view and can_edit per module
  • View effective permissions
  • Bulk permission assignment

US-UM-003: Assign Site Permissions

As an administrator, I want to assign site permissions, so that I can control data access.

Acceptance Criteria:

  • Select sites to grant access
  • Set can_view and can_edit per site
  • View effective permissions
  • Bulk permission assignment

US-UM-004: Manage User Groups

As an administrator, I want to manage user groups, so that I can simplify permission management.

Acceptance Criteria:

  • Create groups with name and description
  • Assign users to groups
  • Set group module permissions
  • Set group site permissions

US-UM-005: View Effective Permissions

As an administrator, I want to see effective permissions, so that I can verify access configuration.

Acceptance Criteria:

  • Show merged direct and group permissions
  • Indicate permission source (direct/group/both)
  • Highlight conflicts or gaps
  • Export permission report

6.9.3 Functional Requirements

Req IDDescriptionPriority
FR-UM-001Create and manage user accountsHigh
FR-UM-002Assign user roles (admin, user)High
FR-UM-003Configure module-level permissionsHigh
FR-UM-004Configure site-level permissionsHigh
FR-UM-005Create user groupsMedium
FR-UM-006Assign users to groupsMedium
FR-UM-007Merge direct and group permissionsHigh
FR-UM-008Activate/deactivate usersHigh
FR-UM-009Track permission changesMedium
FR-UM-010Support permission inheritanceMedium

6.9.4 Data Requirements

Database Tables:

  • user_profiles - User profile with role
  • user_module_permissions - Module-level access
  • user_site_permissions - Site-level access
  • user_groups - User group definitions
  • user_group_members - Group membership
  • user_group_module_permissions - Group module permissions
  • user_group_site_permissions - Group site permissions

Data Fields (user_profiles):

FieldTypeDescription
idUUIDPrimary key (auth.users reference)
emailTEXTUser email
full_nameTEXTDisplay name
roleTEXTadmin/user
is_activeBOOLEANAccount active status
created_atTIMESTAMPTZAccount creation time
updated_atTIMESTAMPTZLast update time

6.9.5 Business Rules

Rule IDDescription
BR-UM-001Admin role has full access to all modules and sites
BR-UM-002User role requires explicit permission grants
BR-UM-003Effective permissions = direct permissions ∪ group permissions
BR-UM-004Permission source tracked: direct, group, both, or none
BR-UM-005Row-level security (RLS) enforces site permissions in database
BR-UM-006is_admin() function bypasses RLS for admin users

6.10 Assets Module

Module ID: assets SDD Reference: Section 10.10 Priority: Medium

6.10.1 Overview

The Assets module tracks and manages monitoring equipment including dust rangers, flow meters, weather stations, and vehicles.

6.10.2 User Stories

US-AM-001: View Asset List

As an operations manager, I want to view all assets, so that I can monitor equipment inventory.

Acceptance Criteria:

  • List all registered assets
  • Filter by type, site, and status
  • Search by name or serial number
  • Sort by various columns

US-AM-002: Register Asset

As an administrator, I want to register new assets, so that I can track equipment.

Acceptance Criteria:

  • Enter asset details (name, serial, type)
  • Assign to mine site
  • Set provider type
  • Upload asset documentation

US-AM-003: View Asset Status

As an operations manager, I want to see asset operational status, so that I can identify issues.

Acceptance Criteria:

  • Display operational status (operational/error/offline)
  • Show last contact time
  • Highlight devices offline >24 hours
  • Link to device data

US-AM-004: Track Asset Location

As an operations manager, I want to track asset locations, so that I can monitor fleet positions.

Acceptance Criteria:

  • Display GPS coordinates
  • Show on map view
  • Track location history
  • Update from scraper data

6.10.3 Functional Requirements

Req IDDescriptionPriority
FR-AM-001Register assets (dust rangers, flow meters, etc.)High
FR-AM-002Track asset metadata (serial, name, description)High
FR-AM-003Track asset provider typeMedium
FR-AM-004Monitor operational statusHigh
FR-AM-005Track last contact timeHigh
FR-AM-006Associate assets with mine sitesHigh
FR-AM-007Archive/delete assetsMedium
FR-AM-008Track asset locations (GPS)Medium
FR-AM-009Support asset search and filteringMedium
FR-AM-010Integrate with SingleSourceIOT APIMedium

6.10.4 Data Requirements

Database Tables:

  • cfg_assets - Asset configuration (legacy)
  • data_assets - Asset data from scraper
  • data_asset_locations - Asset location tracking

Asset Types:

TypeDescription
dust_rangerMobile dust monitoring device
flow_meterWater flow measurement device
weather_stationWeather monitoring station
vehicleWater truck or service vehicle
pumpWater pump equipment
otherOther equipment types

Asset Providers:

ProviderDescription
mqttMQTT protocol
httpHTTP/REST API
modbusModbus protocol
opcuaOPC-UA protocol
lorawanLoRaWAN network
cellularCellular modem
satelliteSatellite communication
manualManual data entry

6.10.5 Business Rules

Rule IDDescription
BR-AM-001Asset types define equipment category
BR-AM-002Asset providers indicate data collection method
BR-AM-003Last contact time indicates device connectivity
BR-AM-004Archived assets excluded from active monitoring
BR-AM-005Asset display name used in UI instead of asset_id

6.11 Mine Sites Module

Module ID: mine_sites SDD Reference: Section 10.11 Priority: High

6.11.1 Overview

The Mine Sites module configures and manages mining operation sites with feature toggles and location settings.

6.11.2 User Stories

US-MS-001: View Mine Sites

As an administrator, I want to view all mine sites, so that I can manage site configuration.

Acceptance Criteria:

  • List all configured sites
  • Show site code and name
  • Display enabled features
  • Show asset count per site

US-MS-002: Create Mine Site

As an administrator, I want to create new mine sites, so that I can onboard new operations.

Acceptance Criteria:

  • Enter site name and code
  • Set location coordinates
  • Configure enabled features
  • Assign initial assets

US-MS-003: Configure Site Features

As an administrator, I want to enable/disable features per site, so that I can customize functionality.

Acceptance Criteria:

  • Toggle dust levels feature
  • Toggle flow meter feature
  • Toggle heatmap feature
  • Toggle other features

6.11.3 Functional Requirements

Req IDDescriptionPriority
FR-MS-001Create and manage mine sitesHigh
FR-MS-002Configure site-specific featuresHigh
FR-MS-003Store site coordinatesMedium
FR-MS-004Associate assets with sitesHigh
FR-MS-005Support system sites (protected)Medium
FR-MS-006Track site creation and modificationLow

6.11.4 Data Requirements

Database Tables:

  • cfg_mine_sites - Mine site configuration

Data Fields:

FieldTypeDescription
idUUIDPrimary key
nameTEXTSite display name
codeTEXTSite code (unique)
locationTEXTLocation description
latitudeDECIMALGPS latitude
longitudeDECIMALGPS longitude
is_systemBOOLEANSystem site flag
featuresJSONBEnabled features
created_atTIMESTAMPTZCreation timestamp
updated_atTIMESTAMPTZLast update

6.11.5 Business Rules

Rule IDDescription
BR-MS-001System sites marked with is_system flag cannot be deleted
BR-MS-002Each feature can be enabled/disabled per site
BR-MS-003Site coordinates used for heatmap and location tracking

6.12 Settings Module

Module ID: settings SDD Reference: Section 10.12 Priority: Medium

6.12.1 Overview

The Settings module configures application-wide settings including thresholds, weather station mappings, and scraper configurations.

6.12.2 User Stories

US-SET-001: Configure Dust Thresholds

As an administrator, I want to configure dust level thresholds, so that I can define alert levels.

Acceptance Criteria:

  • Set warning threshold
  • Set critical threshold
  • Configure per site (optional)
  • Apply to all visualizations

US-SET-002: Map Weather Stations

As an administrator, I want to map weather stations to sites, so that I can correlate weather data.

Acceptance Criteria:

  • Select weather station per site
  • Set as primary station
  • Record distance to site
  • View available stations

US-SET-003: Configure Scrapers

As an administrator, I want to configure scraper settings, so that I can control data collection.

Acceptance Criteria:

  • Set API tokens
  • Configure field mappings
  • Set scraper schedule
  • View scraper status

6.12.3 Functional Requirements

Req IDDescriptionPriority
FR-SET-001Configure dust level thresholdsHigh
FR-SET-002Map weather stations to mine sitesMedium
FR-SET-003Configure scraper settingsMedium
FR-SET-004Store application configurationMedium
FR-SET-005Support site-specific settingsLow

6.12.4 Data Requirements

Database Tables:

  • cfg_app_settings - Application configuration
  • cfg_site_weather_stations - Site-to-weather-station mappings
  • scraper_cfg_api_tokens - API credentials
  • scraper_cfg_settings - Scraper configuration

6.12.5 Business Rules

Rule IDDescription
BR-SET-001Settings stored as key-value pairs with JSON values
BR-SET-002Primary weather station marked for each site
BR-SET-003Distance to weather station tracked for reference

6.13 Upload Module

Module ID: upload SDD Reference: Section 10.13 Priority: High

6.13.1 Overview

The Upload module imports CSV data into the system with validation, preview, and batch processing capabilities.

6.13.2 User Stories

US-UP-001: Upload CSV File

As a field technician, I want to upload CSV files, so that I can import dust ranger data.

Acceptance Criteria:

  • Select CSV file(s) for upload
  • Validate file format
  • Show upload progress
  • Handle upload errors

US-UP-002: Preview CSV Data

As a field technician, I want to preview CSV data before import, so that I can verify content.

Acceptance Criteria:

  • Display first N rows
  • Show detected columns
  • Highlight validation errors
  • Show unique vehicles and date range

US-UP-003: Import CSV Data

As a field technician, I want to import validated CSV data, so that I can add data to the system.

Acceptance Criteria:

  • Import validated files
  • Show import progress
  • Handle duplicate detection
  • Generate import report

US-UP-004: Generate Report from Upload

As a field technician, I want to generate a report from uploaded data, so that I can create analysis documents.

Acceptance Criteria:

  • Select uploaded file(s)
  • Configure report options
  • Generate PDF report
  • Link report to upload session

6.13.3 Functional Requirements

Req IDDescriptionPriority
FR-UP-001Upload CSV files with dust ranger measurementsHigh
FR-UP-002Validate CSV format and data typesHigh
FR-UP-003Parse and preview CSV dataHigh
FR-UP-004Detect unique vehicles and date rangesMedium
FR-UP-005Generate validation errors and warningsHigh
FR-UP-006Support batch file uploadsMedium
FR-UP-007Track upload sessions and statusHigh
FR-UP-008Generate reports from uploaded dataHigh
FR-UP-009Store CSV files in storage bucketHigh
FR-UP-010Support daily, weekly, monthly upload typesLow

6.13.4 Data Requirements

Database Tables:

  • upload_sessions - Upload batch metadata
  • upload_csv_files - Individual CSV file records
  • upload_measurements - Parsed measurement data

Upload Status Flow:

pending → uploading → validating → importing → completed
                  ↓           ↓            ↓
               failed      invalid      failed

6.13.5 Business Rules

Rule IDDescription
BR-UP-001Upload status: pending → uploading → validating → importing → completed/failed
BR-UP-002File status: pending → uploading → uploaded → validating → valid/invalid → importing → completed/failed
BR-UP-003Validation errors block import, warnings are logged
BR-UP-004CSV headers must match expected format
BR-UP-005Date/time parsed with vehicle ID extraction

6.14 Climate Module

Module ID: climate SDD Reference: Section 10.14 Priority: Low

6.14.1 Overview

The Climate module integrates weather station data from the Bureau of Meteorology for environmental context.

6.14.2 User Stories

US-CL-001: View Weather Data

As an operations manager, I want to view weather station data, so that I can understand environmental conditions.

Acceptance Criteria:

  • Display temperature (9am, 3pm)
  • Show rainfall data
  • Display wind speed and direction
  • Show humidity and pressure

US-CL-002: Manage Weather Stations

As an administrator, I want to manage weather station configurations, so that I can control data sources.

Acceptance Criteria:

  • List available weather stations
  • View station metadata
  • Map stations to sites
  • View data availability

6.14.3 Functional Requirements

Req IDDescriptionPriority
FR-CL-001Display weather station dataMedium
FR-CL-002Support 9am and 3pm observationsMedium
FR-CL-003Track wind gust direction and speedLow
FR-CL-004Display sunshine and evaporation dataLow
FR-CL-005Manage weather station configurationsMedium
FR-CL-006Map weather stations to mine sitesMedium

6.14.4 Data Requirements

Database Tables:

  • data_weather - Weather observations
  • scraper_cfg_weather_stations - Weather station metadata

Data Fields:

FieldTypeDescription
idUUIDPrimary key
station_idTEXTBOM station identifier
observation_dateDATEObservation date
temp_9amDECIMALTemperature at 9am (°C)
temp_3pmDECIMALTemperature at 3pm (°C)
rainfallDECIMALRainfall (mm)
wind_speedDECIMALWind speed (km/h)
wind_directionTEXTWind direction
humidityDECIMALRelative humidity (%)
pressureDECIMALAtmospheric pressure (hPa)

6.14.5 Business Rules

Rule IDDescription
BR-CL-001Data sourced from Bureau of Meteorology
BR-CL-002Multiple observations per day (9am, 3pm)
BR-CL-003Wind data includes direction and speed

7. Data Requirements

7.1 Database Schema Overview

The database is organized into logical groups with consistent naming conventions:

PrefixCategoryDescription
user_User ManagementUser profiles, permissions, groups
cfg_ConfigurationSystem and site configuration
data_Data StorageMonitoring data (dust, flow, weather)
ops_OperationsOperational records (refills, corrections)
rpt_ReportsGenerated reports and templates
email_Email SystemSchedules, logs, templates
upload_UploadCSV upload sessions and files
scraper_ScraperScraper configuration and runs
sys_SystemActivity logs and system tables

7.2 Entity Relationship Summary

┌─────────────────┐       ┌─────────────────┐       ┌─────────────────┐
│  user_profiles  │───────│ user_module_    │       │  user_groups    │
│                 │       │ permissions     │       │                 │
└────────┬────────┘       └─────────────────┘       └────────┬────────┘
         │                                                    │
         │                ┌─────────────────┐                │
         └────────────────│ user_site_      │────────────────┘
                          │ permissions     │
                          └────────┬────────┘

                          ┌────────▼────────┐
                          │  cfg_mine_sites │
                          └────────┬────────┘

         ┌─────────────────────────┼─────────────────────────┐
         │                         │                         │
┌────────▼────────┐       ┌────────▼────────┐       ┌────────▼────────┐
│ data_dust_levels│       │ data_flow_meters│       │  data_heatmap   │
└─────────────────┘       └─────────────────┘       └─────────────────┘

7.3 Data Dictionary

7.3.1 User Management Tables

user_profiles

ColumnTypeNullableDescription
idUUIDNOPrimary key (references auth.users)
emailTEXTNOUser email address
full_nameTEXTYESDisplay name
roleTEXTNOUser role (admin/user)
is_activeBOOLEANNOAccount active status
created_atTIMESTAMPTZNOAccount creation timestamp
updated_atTIMESTAMPTZNOLast update timestamp

user_module_permissions

ColumnTypeNullableDescription
idUUIDNOPrimary key
user_idUUIDNOReference to user_profiles
moduleTEXTNOModule identifier
can_viewBOOLEANNOView permission
can_editBOOLEANNOEdit permission
created_atTIMESTAMPTZNOCreation timestamp
updated_atTIMESTAMPTZNOLast update timestamp

user_site_permissions

ColumnTypeNullableDescription
idUUIDNOPrimary key
user_idUUIDNOReference to user_profiles
site_idUUIDNOReference to cfg_mine_sites
can_viewBOOLEANNOView permission
can_editBOOLEANNOEdit permission
created_atTIMESTAMPTZNOCreation timestamp
updated_atTIMESTAMPTZNOLast update timestamp

7.3.2 Configuration Tables

cfg_mine_sites

ColumnTypeNullableDescription
idUUIDNOPrimary key
nameTEXTNOSite display name
codeTEXTNOSite code (unique)
locationTEXTYESLocation description
latitudeDECIMAL(10,8)YESGPS latitude
longitudeDECIMAL(11,8)YESGPS longitude
is_systemBOOLEANNOSystem site flag
featuresJSONBYESEnabled features
created_atTIMESTAMPTZNOCreation timestamp
updated_atTIMESTAMPTZNOLast update timestamp

cfg_app_settings

ColumnTypeNullableDescription
idUUIDNOPrimary key
keyTEXTNOSetting key (unique)
valueJSONBYESSetting value
descriptionTEXTYESSetting description
created_atTIMESTAMPTZNOCreation timestamp
updated_atTIMESTAMPTZNOLast update timestamp

7.3.3 Data Tables

data_dust_levels

ColumnTypeNullableDescription
idUUIDNOPrimary key
site_idUUIDNOReference to cfg_mine_sites
geofenceTEXTYESGeofence identifier
yearINTEGERNOYear of reading
monthINTEGERNOMonth of reading
dayINTEGERNODay of reading
pm1_avgDECIMALYESPM1.0 average (µg/m³)
pm25_avgDECIMALYESPM2.5 average (µg/m³)
pm4_avgDECIMALYESPM4.0 average (µg/m³)
pm10_avgDECIMALYESPM10 average (µg/m³)
temperatureDECIMALYESTemperature (°C)
humidityDECIMALYESRelative humidity (%)
is_provisionalBOOLEANNOProvisional data flag
created_atTIMESTAMPTZNOCreation timestamp

data_flow_meters

ColumnTypeNullableDescription
idUUIDNOPrimary key
site_idUUIDNOReference to cfg_mine_sites
asset_idUUIDYESReference to asset
reading_dateDATENODate of reading
litres_dispensedDECIMALYESWater dispensed (litres)
tank_levelDECIMALYESCurrent tank level (litres)
is_ignoredBOOLEANNOExclude from statistics
created_atTIMESTAMPTZNOCreation timestamp

data_dust_ranger

ColumnTypeNullableDescription
idUUIDNOPrimary key
site_idUUIDNOReference to cfg_mine_sites
vehicle_idTEXTNOVehicle identifier
timestampTIMESTAMPTZNOMeasurement timestamp
pm1DECIMALYESPM1.0 mass concentration
pm25DECIMALYESPM2.5 mass concentration
pm4DECIMALYESPM4.0 mass concentration
pm10DECIMALYESPM10 mass concentration
nc05DECIMALYESNC0.5 number concentration
nc1DECIMALYESNC1.0 number concentration
nc25DECIMALYESNC2.5 number concentration
nc4DECIMALYESNC4.0 number concentration
nc10DECIMALYESNC10 number concentration
temperatureDECIMALYESTemperature (°C)
humidityDECIMALYESRelative humidity (%)

7.4 Data Types and Enumerations

User Roles

ValueDescription
adminFull system access
userLimited access based on permissions

Asset Types

ValueDescription
dust_rangerMobile dust monitoring device
flow_meterWater flow measurement device
weather_stationWeather monitoring station
vehicleWater truck or service vehicle
pumpWater pump equipment
otherOther equipment types

Asset Providers

ValueDescription
mqttMQTT protocol
httpHTTP/REST API
modbusModbus protocol
opcuaOPC-UA protocol
lorawanLoRaWAN network
cellularCellular modem
satelliteSatellite communication
manualManual data entry
otherOther providers

Email Schedule Status

ValueDescription
draftNot yet scheduled
scheduledScheduled for future send
processingCurrently being sent
sentSuccessfully sent
cancelledCancelled by user
failedSend failed
completedRecurring schedule completed

Email Schedule Mode

ValueDescription
manualSend manually
scheduledSend at specific time
recurringSend on recurring schedule

Recurrence Type

ValueDescription
noneNo recurrence
dailyEvery day
weeklyEvery week
monthlyEvery month

Report Status

ValueDescription
pendingAwaiting generation
generatingCurrently generating
completedSuccessfully generated
failedGeneration failed

Upload Status

ValueDescription
pendingAwaiting upload
uploadingCurrently uploading
validatingValidating content
importingImporting to database
completedSuccessfully imported
failedImport failed

7.5 Data Retention Policies

Data TypeRetention PeriodArchive Policy
Dust level readings5 yearsArchive to cold storage
Flow meter readings5 yearsArchive to cold storage
Dust ranger measurements3 yearsArchive to cold storage
Weather data5 yearsArchive to cold storage
Generated reports2 yearsDelete after retention
Email logs1 yearDelete after retention
Activity logs2 yearsArchive to cold storage
Upload sessions1 yearDelete after retention

Appendices

Appendix A: Glossary

TermDefinition
AssetPhysical equipment tracked by the system (dust ranger, flow meter, etc.)
AWSTAustralian Western Standard Time (UTC+8)
BOMBureau of Meteorology (Australia)
CalibrationProcess of verifying and adjusting measurement accuracy
CSVComma-Separated Values file format
Dust RangerMobile dust monitoring device mounted on vehicles
Edge FunctionServerless function running on Supabase infrastructure
Flow MeterDevice measuring water flow/usage
GeofenceVirtual geographic boundary for data grouping
HeatmapVisual representation of data density on a map
JWTJSON Web Token for authentication
Mass Concentration (MC)Particle mass per unit volume (µg/m³)
Mine SitePhysical mining operation location
Number Concentration (NC)Particle count per unit volume (particles/cm³)
Particulate Matter (PM)Airborne particles of various sizes
PDFPortable Document Format
PM1.0Particles ≤1.0 micrometers
PM2.5Particles ≤2.5 micrometers
PM4.0Particles ≤4.0 micrometers
PM10Particles ≤10 micrometers
RBACRole-Based Access Control
RefillWater tank replenishment event
RLSRow-Level Security (PostgreSQL feature)
ScraperAutomated data collection service
SPASingle Page Application
SupabaseBackend-as-a-Service platform
Tank CorrectionManual adjustment to tank level reading

Appendix B: Requirements Traceability Matrix

Requirement IDSDD SectionTest CaseStatus
FR-AUTH-0014.4TC-AUTH-001Implemented
FR-AUTH-0024.4TC-AUTH-002Implemented
FR-AUTH-0034.4TC-AUTH-003Implemented
FR-AUTH-0044.4TC-AUTH-004Implemented
FR-AUTH-0054.4TC-AUTH-005Implemented
FR-RBAC-00111TC-RBAC-001Implemented
FR-RBAC-00211TC-RBAC-002Implemented
FR-RBAC-00311TC-RBAC-003Implemented
FR-RBAC-00411TC-RBAC-004Implemented
FR-RBAC-00511TC-RBAC-005Implemented
FR-DATA-0015.1TC-DATA-001Implemented
FR-DATA-0025.1TC-DATA-002Implemented
FR-DATA-0035.1TC-DATA-003Implemented
FR-DATA-0045.1TC-DATA-004Implemented
FR-DATA-0055.1TC-DATA-005Implemented
FR-DASH-00110.1TC-DASH-001Implemented
FR-DL-00110.2TC-DL-001Implemented
FR-FM-00110.3TC-FM-001Implemented
FR-DR-00110.4TC-DR-001Implemented
FR-RPT-00110.5TC-RPT-001Implemented
FR-WR-00110.6TC-WR-001Implemented
FR-HM-00110.7TC-HM-001Implemented
FR-ES-00110.8TC-ES-001Implemented
FR-UM-00110.9TC-UM-001Implemented
FR-AM-00110.10TC-AM-001Implemented
FR-MS-00110.11TC-MS-001Implemented
FR-SET-00110.12TC-SET-001Implemented
FR-UP-00110.13TC-UP-001Implemented
FR-CL-00110.14TC-CL-001Implemented

Appendix C: Document Revision History

VersionDateAuthorChanges
1.0February 2026Development TeamInitial SRS based on implemented system

Appendix D: Cross-Reference to System Design Document

SRS SectionSDD v2 SectionDescription
2.1 Product Perspective2.1 General OverviewSystem context and boundaries
2.3 User Classes1.3 Intended AudienceUser types and characteristics
3.2 Authentication4.4 Security ArchitectureAuthentication requirements
3.3 RBAC11 RBAC and PermissionsAuthorization requirements
4.3 Software Interfaces9 External InterfacesExternal system integrations
5.1 Performance3.4 Performance EngineeringPerformance targets
5.3 Security4.4 Security ArchitectureSecurity requirements
6.1-6.14 Feature Modules10 Feature ModulesModule specifications
7.1 Database Schema5.1 Database DesignData structure

End of Document