# Integração DASA - DSS (parte 1)

### **DASA UTM**

#### **📌 Descrição**

Fornecer ao DASA capacidade de acessar entidades UTM através de um serviço intermediário entre o mapa e o ECO-UTM, o que torna o DASA capaz de mostrar as regiões de **intenção operacional (OIRs) e restrições (Constraints)** com **filtros avançados** e **detalhes via popup.**

O serviço deve fornecer **endpoints** que interagem com o **DSS** para obter e processar as informações do ECO-UTM.

---

#### **⏳ Estimativas**

- Desenvolvimento do backend: 9-11 dias
- Integração com DSS: 9-11 dias
- Testes unitários e de integração: 7-9 dias
- Revisão e ajustes após feedback do frontend: 7-9 dias
- **Total estimado:** **~5 a 6 semanas**

---

#### **🔗 Depende'les**

- **Time de frontend**: para validar a estrutura dos endpoints e a forma como os dados serão consumidos.
- **Time de backend**: para fornecer suporte ao acesso dos serviços ECO-UTM.

---

#### **📝 Definições técnicas**

- Protocolo de comunicação com DSS: **REST/HTTP**
- Formato de dados geoespacial: **GeoJSON**
- Estratégia de atualização de dados: **polling**
- Autenticação: **JWT**
- Desempenho: implementar **cache e paginação** (REDIS) nos endpoints para evitar sobrecarga ao DSS.

---

#### **📜 Tarefas**

**1. **Configurar ambiente****

- Criar projeto FastAPI
- Configurar ambiente de desenvolvimento e dependências
- Implementar estrutura básica do projeto 
    - `/api/regions/oirs` → Retorna OIRs com filtros aplicáveis
    - `/api/regions/constraints` → Retorna Constraints com filtros aplicáveis
    - `/api/regions/details/{id}` → Retorna detalhes de um OIR ou Constraint específico

**2. Modelar dados**

- Criar modelos **Pydantic** para OIRs e Constraints
- Adaptar a resposta do DSS para os modelos internos

**3. **Desenvolver interface com o DSS****

- Implementar cliente para comunicação com o DSS
- Desenvolver métodos para busca de OIRs e Constraints
- Tratar erros de comunicação com o DSS

**4. Implementar os filtros nos endpoints**

- **Horário/Duração**
- **Provedor responsável**
- **Altitude**
- **Tipo de operação (VLOS, EVLOS, BVLOS)**

**5. Implementar endpoint de detalhes**

- **OIR:** nome do provedor, horário, coordenadas, altitude, contato de emergência
- **Constraint:** nome do responsável, tipo (FRZ, temporária, altitude), duração, altitude

**6. Implementar testes unitários e de integração**

- Testar filtros e respostas
- Simular falhas no DSS e validar comportamento

**7. Documentar**

- Documentar endpoints usando **FastAPI + Swagger**
- Compartilhar exemplos de uso para o frontend

---

#### **✅ Critérios de Aceitação**

1. Todos os endpoints devem estar documentados via Swagger
2. O sistema deve retornar dados geoespaciais em formato compatível exigido pela equipe de frontend
3. O sistema deve lidar adequadamente com falhas de comunicação com o DSS
4. Os filtros devem funcionar em combinação (AND lógico)
5. Os popups devem conter todas as informações especificadas na descrição
6. Garantir que, caso o DSS esteja temporariamente indisponível, o sistema não quebre e forneça um fallback adequado.

---

#### **💀 Nível de prioridade**

- Sim