Diagrama de Sequencia
sequenceDiagram
participant C as Cliente
participant API as Cloud Function
participant BQ as BigQuery
participant GCS as Cloud Storage
participant TEL as Telemetria
Note over C,TEL: POST /processos-filiacao (multipart)
C->>API: POST dados + arquivos
API->>API: Validar API Key
API->>API: Validar JSON dados (Pydantic)
loop Cada arquivo
API->>GCS: Upload para /{hash}/{nome}.{ext}
GCS-->>API: Path do arquivo
end
API->>BQ: INSERT processos_filiacao_dados
BQ-->>API: Sucesso
API-->>C: 201 {hash, arquivos_enviados}
API-)TEL: Log async (não-bloqueante)
Note over C,TEL: PUT /processos-filiacao/{hash} (JSON)
C->>API: PUT campos mutáveis
API->>API: Validar API Key
API->>API: Validar campos (Pydantic)
loop Cada campo não nulo
API->>BQ: INSERT processos_filiacao_eventos
end
API-->>C: 200 {hash, eventos_registrados}
API-)TEL: Log async (não-bloqueante)
Note over C,BQ: GET /processos-filiacao (listagem, filtro opcional)
C->>API: GET ?status_processo_filiacao=...
API->>API: Validar API Key
API->>API: Validar status (se informado)
API->>BQ: SELECT view mdb_processos_filiacao [WHERE status]
BQ-->>API: Linhas
API-->>C: 200 {processos, total}