Interface web do SIGPS - SPA Angular com RBAC, JWT e integração com fila inteligente
README principal · DOCS.md · Backend · Machine Learning
TCC - Faculdade Metropolitana de Manaus · Orientadora: Profª Luana Magalhães Leal
Aplicação SPA em Angular 21 com rotas protegidas por perfil (RBAC), comunicação com o backend via REST/JSON e token JWT.
- Visão geral
- Stack tecnológica
- Arquitetura do frontend
- Apresentação das telas
- Fluxogramas
- Perfis e menu
- Como executar
- Estrutura do projeto
O frontend concentra toda a experiência do usuário: landing institucional, autenticação, painel administrativo/clínico e portal do paciente. Cada perfil enxerga apenas as rotas liberadas por authGuard e roleGuard.
flowchart LR
U[Usuário] --> FE[SIGPS-Frontend :4200]
FE -->|HTTPS JSON + JWT| BE[SIGPS-Backend :5000]
BE --> ML[SIGPS-ML :8000]
| Tecnologia | Uso |
|---|---|
| Angular 21 | Framework SPA, componentes standalone |
| TypeScript | Tipagem e modelos de domínio |
| SCSS | Estilos por componente |
| RxJS | Fluxos assíncronos e serviços HTTP |
| Angular SSR | Renderização no servidor (build de produção) |
| jwt-decode | Leitura de claims do token |
| Vitest | Testes unitários |
flowchart TB
subgraph Apresentacao["Camada de apresentação"]
PAGES[Páginas / Componentes]
PIPES[Pipes e diretivas]
end
subgraph Aplicacao["Camada de aplicação"]
SVC[Serviços HTTP]
GUARD[Guards: auth + role]
INT[Auth Interceptor JWT]
end
subgraph Dados["Contratos de dados"]
MODELS[Models TypeScript]
ENV[environment.ts]
end
PAGES --> SVC
SVC --> INT
INT -->|API REST| API[(Backend Flask)]
SVC --> MODELS
GUARD --> PAGES
classDiagram
class Painel {
+menuItems()
+sidebar
+topNavbar
}
class AuthService {
+login()
+logout()
+currentUser
+hasRole()
}
class AuthGuard
class RoleGuard
class RouterOutlet
Painel --> AuthService
Painel --> RouterOutlet
AuthGuard ..> AuthService
RoleGuard ..> AuthService
RouterOutlet --> Dashboard
RouterOutlet --> Fila
RouterOutlet --> PortalPaciente
Capturas reais da interface em docs/screenshots/, geradas com dados de demonstração (mocks) para o TCC — sem telas vazias nem dependência do backend.
Regenerar capturas:
npm run screenshots:serve
# outro terminal:
npm run screenshotsflowchart TD
L[Landing /] --> LOGIN[Login]
L --> CAD[Cadastro]
LOGIN --> PAINEL[Painel /painel]
CAD --> LOGIN
LOGIN --> ESQ[Esqueci senha]
PAINEL --> DASH[Dashboard]
PAINEL --> PORTAL[Portal do paciente]
PAINEL --> PAC[Pacientes]
PAINEL --> FILA[Fila inteligente]
PAINEL --> AG[Agendas]
PAINEL --> CHAT[Chat]
Trecho inicial da página institucional: navegação, chamada principal e preview do painel.
Layout com sidebar (perfis administrativos/clínicos) ou layout full-width (paciente). Barra superior com busca global, notificações e avatar.
| Tela | Rota | Perfis | Principais funções |
|---|---|---|---|
| Dashboard | /painel/dashboard |
Admin, Gestor, Especialista, Visualizador | KPIs, gráficos e resumo operacional da unidade. |
| Portal do paciente | /painel/portal-paciente |
Paciente | Hub com atalhos: explorar clínicas, agendar, exames, chat. |
| Pacientes | /painel/pacientes |
Admin, Gestor, Especialista, Visualizador | Listagem, busca por nome/CPF e detalhes clínicos. |
| Agendamentos | /painel/agendas |
Admin, Gestor, Especialista, Paciente | Criação de slots, marcação e gestão de consultas. |
| Especialistas | /painel/especialistas |
Admin, Gestor | Cadastro e gestão de profissionais vinculados. |
| Fila de espera | /painel/fila |
Gestor, Especialista, Visualizador | Fila ordenada por prioridade (IA); status e análise da fila. |
| Gestão IA | /painel/gestao-ia |
Gestor, Especialista | Painel auxiliar de monitoramento da priorização. |
| Explorar clínicas | /painel/explorar-clinicas |
Paciente | Descoberta de organizações de saúde. |
| Busca profissionais | /painel/busca-profissionais |
Paciente, Admin, Gestor, Visualizador, Especialista | Busca e agendamento com especialistas. |
| Perfil profissional | /painel/perfil-profissional/:id |
Vários | Visualização pública do profissional. |
| Meu perfil | /painel/meu-perfil |
Todos autenticados | Conta, dados clínicos, clínica (gestor/especialista), verificação. |
| Exames | /painel/exames |
Paciente + equipe | Upload e histórico de exames. |
| Chat | /painel/chat |
Todos autenticados | Mensagens entre usuários. |
| Relatórios | /painel/relatorios |
Admin, Gestor | Indicadores e exportação de dados. |
| Configurações | /painel/config |
Admin | Parâmetros globais do sistema. |
| Documentação | /painel/documentacao |
Todos autenticados | Arquitetura e stack (ajuda interna). |
sequenceDiagram
participant U as Usuário
participant F as Frontend
participant B as Backend
U->>F: Informa e-mail e senha
F->>B: POST /api/v1/auth/login
alt Credenciais válidas
B-->>F: access_token + refresh_token
F->>F: Armazena JWT (localStorage)
F->>F: authGuard libera /painel
F-->>U: Redireciona por perfil
else Inválidas
B-->>F: 401
F-->>U: Mensagem de erro
end
flowchart TD
A[Login OK] --> B{Perfil?}
B -->|Paciente| C[Portal do paciente]
B -->|Gestor/Especialista| D[Dashboard]
B -->|Admin| E[Dashboard + Config]
B -->|Visualizador| F[Dashboard somente leitura]
C --> G[Explorar / Agendar / Exames]
D --> H[Pacientes / Fila / Agendas]
flowchart LR
A[Portal ou Busca profissionais] --> B[Escolhe especialista]
B --> C[Visualiza agenda disponível]
C --> D[Seleciona horário]
D --> E[POST /schedules/agendar]
E --> F[Consulta confirmada]
F --> G[Notificação no painel]
flowchart TD
REQ[Requisição HTTP] --> INT{Token existe?}
INT -->|Sim| HDR[Header Authorization Bearer]
INT -->|Não| API
HDR --> API[Backend API]
API -->|401| LOGOUT[Logout e /login]
API -->|2xx| OK[Atualiza UI]
| Perfil | Itens principais no menu |
|---|---|
| Paciente | Meu Portal, Meus Agendamentos, Explorar, Meu Perfil, Chat |
| Gestor | Dashboard, Agendamentos, Pacientes, Fila, Minha Clínica, Chat, Relatórios |
| Especialista | Dashboard, Meus Agendamentos, Pacientes, Fila, Minha Clínica, Chat |
| Visualizador | Dashboard, Pacientes, Fila, Chat |
| Admin | Todos + Especialistas, Relatórios, Configurações |
- Node.js 20+
- npm 11+
| Arquivo | Quando usa | API |
|---|---|---|
environment.ts |
Build produção / Vercel | https://api.sigps.online |
environment.development.ts |
ng serve local |
http://127.0.0.1:5000 |
environment.screenshots.ts |
Captura de telas | mock local |
npm install
npm startAcesse: http://localhost:4200 (backend local na porta 5000).
Para testar localmente contra a API de produção:
npm run start:prod-apinpm run buildSaída: dist/SIGPS-Frontend/browser — API embutida: https://api.sigps.online, useMock: false.
- Importe o repositório na Vercel.
- Root Directory:
SIGPS-Frontend - Framework: Other (o
vercel.jsonjá define build e output). - Domínio:
www.sigps.online(já previsto no CORS do backend).
Comandos (automáticos via vercel.json):
- Install:
npm ci - Build:
npm run build - Output:
dist/SIGPS-Frontend/browser
Após o deploy, faça login com uma conta real do backend em produção.
CORS: o backend deve incluir
https://www.sigps.onlineehttps://sigps.onlineemCORS_ORIGINS(já configurado no.envde produção).
ng testConsulte o compose na pasta do projeto ou a stack na raiz do monorepo SIGPS.
src/app/
├── config/ # app.config.ts (providers, interceptors)
├── core/ # guards, interceptors compartilhados
├── routes/ # app.routes.ts
├── pages/ # telas (landing, login, painel/*)
├── services/ # comunicação com API (auth, fila, pacientes...)
├── models/ # interfaces TypeScript
├── pipes/ # transformações de template
└── env/ # environment por ambiente
| Repositório | Função |
|---|---|
| SIGPS-Backend | API REST, persistência, integração ML |
| SIGPS-Machine-Learning | Classificação de prioridade na fila |
Projeto desenvolvido como Trabalho de Conclusão de Curso (TCC) pela Faculdade Metropolitana de Manaus.
| Integrante | Papel |
|---|---|
| Josias Azevedo da Silva | Product Owner & Desenvolvedor Full-Stack |
| Kaio Oliveira Pantoja | Scrum Master & Tech Lead |
| Wagner Eduardo | Documentação |
| Matheus Akabane Brazão | Desenvolvedor Back-end |
| Ólliver de Aquino Freitas | Front-end UX/UI |
| Alan Nicolas Santos Maragua | QA — Quality Assurance |
Professora orientadora:
Profª Luana Magalhães Leal - Tech Manager & Profª de Tecnologia
SIGPS — Trabalho de Conclusão de Curso · Gestão e priorização na saúde












