# Software Requirements Specification This document outlines the functional and non-functional requirements for the project, mapped to the V-Model testing strategy. | ID | Description | Type (Attribute) | Level | Linked Test Case | |----|-------------|------------------|-------|-------------------| | **MOD-GO-CORE** | Drone event backend must persist location events and support "Time Travel" queries (snapshot at specific timestamp). | Functional (Verification) | Component | `TestIngestAndSnapshot` | | **MOD-GO-VAL** | The API must enforce strict input validation, rejecting malformed JSON or missing query parameters with `400 Bad Request`. | Robustness (Verification) | Unit | `TestIngestBadJSON` `TestSnapshotMissingTime` | | **MOD-GO-OPS** | The service must provide health probes and support graceful shutdown to prevent data corruption during updates. | Operational | System | `TestHealth` `TestGracefulShutdown` | | **REST-API-GEO** | The API must expose geospatial utilities (distance, proximity) strictly conforming to the JSON contract. | Functional (Contract) | Integration | `ApiControllerTest.java` | | **REST-API-VAL** | REST endpoints must validate input semantic correctness (e.g., valid coordinates) and reject malformed JSON with 400. | Robustness (Verification) | Unit | `ApiControllerTest.java` (Error paths) | | **REST-API-DRONE** | The API must expose drone query endpoints conforming to the specified JSON contract. | Functional | Integration | `DroneControllerTest.java` | | **REST-ALG-PATH** | Pathfinding algorithm must generate valid flight paths within battery budget, ensuring return-to-base actions. | Functional (Verification) | Unit | `PathFinderServiceTest.java` | | **REST-DATA-INT** | System must output flight paths in a simplified format for frontend compatibility. | Interoperability | Unit | `PathFinderServiceTest.java` | | **REST-ALG-GEO** | GPS calculation module must accurately compute Euclidean distances with **1e-9 measurable precision**. | Measurable Quality | Unit | `GpsCalculationServiceTest.java` | | **REST-EXT-INT** | System must integrate with external Drone Info API, gracefully handling network failures (Reliability). | Reliability (Robustness) | Unit (Mocked) | `DroneInfoServiceTest.java` | | **REST-LOGIC-FIL** | Business logic must filter available drones based on dynamic requirements and service availability. | Functional | Unit | `DroneInfoServiceTest.java` | | **REST-SYS-OPS** | The service must have an observable endpoint to verify system availability (Liveness/Readiness). | Operational | System | `ActuatorHealthTest.java` | | **REST-SYS-E2E** | **Validation:** The system must successfully process a complete request lifecycle from ingestion to retrieval (User Journey). | User Need (Validation) | System | `ilp-cw-api/**/*.bru` | | **FRONTEND-UI-UX** | **Validation:** The Svelte UI must provide visual feedback (spinners/toasts) during asynchronous processing. | Usability (Qualitative) | System | *Manual* | **Notes:** * All requirements with ID `MOD-GO-*` are located in `drone-black-box/main_test.go`. * All requirements with ID `REST-*` target the core Spring Boot application.