SAAE – UML / Fluxos v0.1 • Mermaid

1) Visão Geral (Arquitetura Lógica)

flowchart LR CampoApp[App de Campo] --> API[API] Portal[Portal do Consumidor] --> API API --> DB[PostgreSQL] API --> Storage[Uploads] API --> QA[Qualidade] QA --> Rel[Relatorios]

2) Fluxo Operacional (end-to-end)

flowchart TD Start([Inicio]) --> Planejamento[Planejamento e Treinamento] Planejamento --> Coleta{Coleta em campo?} Coleta -->|Sim| Vistoria[Vistoria externa] Vistoria --> DadosCampo[Finalização] Coleta -->|Nao| PortalUso[Uso do Portal?] PortalUso -->|Sim| Auto[Envio de dados e docs] PortalUso -->|Nao| Pend[Manter pendencia] DadosCampo --> Integracao[Integracao Campo x Portal] Auto --> Integracao Pend --> Integracao Integracao --> QA[Consolidacao e Qualidade] QA --> Diverg{Ha divergencias?} Diverg -->|Sim| Tratar[Tratamento e ajustes] Tratar --> QA Diverg -->|Nao| Rel[Relatorios e Exportacoes] Rel --> End([Base final])

3) Sequência – Coleta em Campo (POST /ligacoes)

sequenceDiagram autonumber participant Ag as Agente Campo participant APP as App Campo participant API as API PHP participant DB as PostgreSQL participant FS as Storage Ag->>APP: Preenche ligação, coords, atributos APP->>API: POST /ligacoes {payload} API->>DB: UPSERT saae.ligacao API-->>APP: 201 Created / 200 OK Ag->>APP: Anexa foto (01) APP->>API: POST /ligacoes/{n}/imagens (multipart) API->>FS: Salva nnnnn_01.jpg API->>DB: INSERT saae.imagem(seq=1) API-->>APP: 201 Created Ag->>APP: Registrar tentativa APP->>API: POST /ligacoes/{n}/visitas API->>DB: INSERT saae.visita API-->>APP: 201 Created

4) Sequência – Portal (Autoatendimento)

sequenceDiagram autonumber participant U as Usuário participant POR as Portal Web participant API as API PHP participant DB as PostgreSQL participant FS as Storage U->>POR: Preenche dados pessoais/contato POR->>API: POST /portal/{ligacao} API->>DB: UPSERT saae.portal_dados POR->>API: Upload docs (PDF/JPG) API->>FS: Salva arquivos API->>DB: Atualiza paths API-->>POR: 200 OK

5) Consolidação & Regras

flowchart LR R1[PK única: numero_ligacao]:::rule R2[Coords válidas: 6 casas, bounds]:::rule R3[Imagem ≥1280x960 e naming nnnnn_xx.jpg]:::rule R4[Match Campo x Portal]:::rule R5[Divergências: lista e tratamento]:::rule classDef rule fill:#ecfeff,stroke:#06b6d4,color:#0e7490 R1-->R4 R2-->R5 R3-->R5

6) Modelo de Dados (ER – simplificado)

erDiagram LIGACAO ||--o{ VISITA : possui LIGACAO ||--o{ IMAGEM : possui LIGACAO ||--|| PORTAL_DADOS : complementa LIGACAO { string numero_ligacao PK string endereco string chave_iptu float lat float lng string categoria string atividade int economias string hidrometro_numero } VISITA { int id PK string numero_ligacao int tentativa date data_hora string status bool comunicacao_entregue date agendamento } IMAGEM { int id PK string numero_ligacao int seq string filename int width_px int height_px } PORTAL_DADOS { string numero_ligacao PK string resp_nome string resp_cpf date contrato_validade string telefone string celular string email string recebimento_conta float piscina_m3 float reservatorio_m3 string fontes_alternativas }

7) Pipeline de Relatórios

flowchart LR X1[DB Views / Materialized Views] --> X2[API /relatorios] X2 --> X3[Boletim PDF] X2 --> X4[CSV Export] X2 --> X5[Dashboard Inconsistências]

Observação: podemos derivar VIEWS para métricas de etapa, cobertura geográfica, status de tentativas e matching Campo×Portal.

SAAE Mogi Mirim – Cadastro & Consolidação (Mock)
Módulos

Padrão de imagem
nnnnn_xx.jpg
Ex.: 01234_01.jpg
Coord.: Graus Decimais (6 casas)
Informações sobre o objetivo
Dados e Informações
Coleta em Campo – Vistoria Externa
Fase 1
Chave primária. Não pode repetir.
Mínimo 1280×960 px. Nome será normalizado.
preview
preview
Cadastro Voluntário – Portal
Fase 2

Mock de autoatendimento para o morador anexar documentos e atualizar dados de contato, piscinas, reservatórios e opção de recebimento de conta.

Consolidação & Qualidade de Dados
Integração
  • Regra de unicidade: numero_ligacao único
  • Validação coordenadas: 6 casas decimais (lat/lng)
  • Imagens: resolução mínima 1280×960 px
  • Divergências: apresentar dashboard de inconsistências (mock)
Relatórios & Exportações
Gerencial
Boletim de Coleta

Resumo por tentativas, categoria, economias, geocobertura.

CSV Ligação

Exporta chaves, coords, categoria, hidrômetro.

Dashboard Inconsistências

Duplicidade, coordenada inválida, imagem faltante.