Chamada Escolar — Console (cpe-console)
Backend e console de gestão da Chamada Escolar: configura as chamadas, recebe as inscrições do portal público, pontua e classifica os candidatos e gerencia a fila de espera. Sincroniza dados com o sistema acadêmico (Syens).
Manual de uso: Chamada Escolar.
Stack
| Item | Tecnologia |
|---|---|
| Linguagem | Ruby 3.x |
| Framework | Rails 7.2 |
| Banco | PostgreSQL |
| Autorização | Pundit (app/policies) |
| Jobs | Sidekiq |
| Auditoria | audited |
| API | JWT |
| Front-end | React 18 + esbuild |
Organização do código
Destaque para app/interactor/ (interactors que orquestram pontuação e
classificação), além de policies/, serializers/, services/, jobs/ e
sidekiq/. Os controllers de API ficam em app/controllers/api/v1.
Modelos centrais: public_call (chamada), subscription (inscrição),
classification, score, offer, question/answer, customer (rede/tenant),
school, school_year, curriculum, além de distance_log/geocoding_log
(integração com o Google Maps) e sync (sincronização com o acadêmico).
Pontuação e classificação
O processamento tem duas etapas: pontuar os candidatos e depois classificar.
- As regras de pontuação vivem nos interactors, em classes
Score. - Quais regras pontuam é definido pela variável de ambiente
SCORE_METHODS, por exemplo:disability, maria_penha_law, ciase, distance, school_neighborhood, same_school_sibling, school_zone, sibling_in_school. - Todo ano os critérios devem ser revisados (pesos por distância, novos
critérios) e, se necessário, um novo
Scoreé implementado.
A lógica funcional dessas regras está descrita no manual, em Processamento e Classificação.
Configuração
Configs e segredos via variáveis de ambiente, acessadas por um objeto Settings
(não use ENV espalhado pelo código).
Deploy
Imagem Docker publicada no Amazon ECR (chamada-publica):
# (passos de shell, ilustrativos)
# docker build -> docker tag <conta>.dkr.ecr.us-east-1.amazonaws.com/chamada-publica:TAG -> docker push
Infraestrutura AWS provisionada pelo InfraSpawn (cpe.tf).