š Fluxos - ecosif-angular
š VisĆ£o Geral
Este documento descreve os principais fluxos de dados e interação na aplicação ecosif-angular.
š Fluxo 1: Autenticação e Login
Descrição
Fluxo completo de autenticação do usuÔrio, incluindo login local e Azure AD.
Diagrama de SequĆŖncia
sequenceDiagram
participant User as UsuƔrio
participant Login as LoginComponent
participant Auth as AuthService
participant Token as TokenService
participant Interceptor as AuthInterceptor
participant Backend as ecosif-auth
participant Router as Router
User->>Login: Preenche credenciais
User->>Login: Clica em "Login"
Login->>Auth: login(username, password)
Auth->>Backend: POST /api/auth/signin
Backend-->>Auth: { accessToken, user }
Auth->>Token: saveToken(accessToken)
Token->>Token: localStorage.setItem('token')
Auth-->>Login: UserData
Login->>Router: navigate(['/dashboard'])
Router->>Router: Verifica AuthGuard
Router->>Auth: checkAuth()
Auth->>Token: getToken()
Token-->>Auth: token vƔlido
Auth-->>Router: Autenticado
Router->>User: Redireciona para /dashboard
š Fluxo 2: Carregar Lista de Empresas
Descrição
Fluxo de carregamento de dados do backend, exibição e tratamento de erros.
Diagrama de SequĆŖncia
sequenceDiagram
participant Component as CompanydetailsComponent
participant Service as CompanyService
participant Interceptor as AuthInterceptor
participant Backend as ecosif-masterdata
participant UI as Template HTML
Component->>Component: ngOnInit()
Component->>Service: getCompanies()
Service->>Interceptor: HTTP GET /api/v1/companies
Interceptor->>Interceptor: Adiciona token JWT
Interceptor->>Backend: Requisição autenticada
Backend-->>Interceptor: 200 OK + dados
Interceptor-->>Service: Observable<Company[]>
Service-->>Component: Observable<Company[]>
Component->>Component: subscribe()
Component->>Component: this.companies = data
Component->>UI: [companies] binding
UI->>User: Exibe lista
š Fluxo 3: Criar Novo LanƧamento ContĆ”bil
Descrição
Fluxo de criação de lançamento com validação e persistência.
Diagrama de SequĆŖncia
sequenceDiagram
participant User as UsuƔrio
participant Form as CreateEntriesComponent
participant Service as EntriesService
participant Validator as Form Validator
participant Interceptor as AuthInterceptor
participant Backend as ecosif-moviments
User->>Form: Preenche formulƔrio
User->>Form: Clica em "Salvar"
Form->>Validator: Validação de formulÔrio
alt FormulƔrio vƔlido
Validator-->>Form: VƔlido
Form->>Service: createEntry(entryData)
Service->>Interceptor: POST /api/v1/entries
Interceptor->>Backend: Requisição autenticada
Backend-->>Interceptor: 201 Created + entry
Interceptor-->>Service: Observable<Entry>
Service-->>Form: Entry criado
Form->>Form: Mostra mensagem de sucesso
Form->>User: Feedback visual
else FormulƔrio invƔlido
Validator-->>Form: Erros de validação
Form->>User: Exibe erros no formulƔrio
end
š Fluxo 4: Configuração DinĆ¢mica (Runtime Config)
Descrição
Carregamento de configuração em runtime antes da inicialização da aplicação.
Diagrama de SequĆŖncia
sequenceDiagram
participant App as App Initializer
participant Config as AppConfigService
participant HTTP as HttpClient
participant Server as Nginx/assets
participant Services as Services
App->>Config: loadConfig()
Config->>HTTP: GET /assets/config/config.json
HTTP->>Server: Requisição de config
Server-->>HTTP: config.json
HTTP-->>Config: AppConfig
Config->>Config: this.config = data
Config-->>App: Config carregada
App->>Services: Services podem usar config
Services->>Config: getConfig().apiEndpoints.auth
Config-->>Services: URL da API
š Fluxo 5: Lazy Loading de Módulo
Descrição
Carregamento sob demanda de módulos grandes (lazy loading).
Diagrama de SequĆŖncia
sequenceDiagram
participant User as UsuƔrio
participant Router as Angular Router
participant Module as DashboardModule
participant Component as DashboardComponent
participant Service as DashboardService
User->>Router: Navega para /dashboard
Router->>Router: Detecta lazy route
Router->>Router: loadChildren: () => import(...)
Router->>Module: Carrega módulo
Module->>Module: Inicializa providers
Module->>Component: Cria DashboardComponent
Component->>Component: ngOnInit()
Component->>Service: getDashboardData()
Service->>Backend: Requisição HTTP
Backend-->>Service: Dados
Service-->>Component: Dados
Component->>User: Exibe dashboard
ā ļø Fluxo 6: Tratamento de Erros
Descrição
Fluxo completo de tratamento de erros HTTP e exibição ao usuÔrio.
Diagrama de SequĆŖncia
sequenceDiagram
participant Component as Component
participant Service as Service
participant Interceptor as AuthInterceptor
participant Backend as Backend
participant ErrorHandler as ErrorHandlerService
participant UI as Toast/Modal
Component->>Service: getData()
Service->>Interceptor: HTTP GET
Interceptor->>Backend: Requisição
Backend-->>Interceptor: 500 Internal Server Error
Interceptor->>ErrorHandler: handleError(error)
ErrorHandler->>ErrorHandler: Loga erro
ErrorHandler->>UI: Mostra notificação de erro
ErrorHandler-->>Service: Observable error
Service-->>Component: Error observable
Component->>Component: Error handler (catchError)
Component->>UI: Feedback ao usuƔrio
š± Fluxo 7: Navegação entre Rotas
Descrição
Fluxo de navegação protegida com verificação de autenticação.
Diagrama de SequĆŖncia
sequenceDiagram
participant User as UsuƔrio
participant Router as Router
participant Guard as AuthGuard
participant Auth as AuthService
participant Component as Component
User->>Router: Navega para /company_detail
Router->>Guard: canActivate()
Guard->>Auth: isAuthenticated()
Auth->>Auth: Verifica token
alt Token vƔlido
Auth-->>Guard: true
Guard-->>Router: Permite acesso
Router->>Component: Cria componente
Component->>User: Exibe pƔgina
else Token invƔlido
Auth-->>Guard: false
Guard->>Router: Bloqueia acesso
Router->>Router: navigate(['/login'])
Router->>User: Redireciona para login
end
Ćltima Atualização: 2025-12-01