Para um sistema de gerenciamento financeiro robusto que inclui fluxos de aprovação e níveis de aprovação, vou criar um Diagrama de Entidade-Relacionamento (DER) e um diagrama de fluxo utilizando Mermaid. Vamos começar com o DER e depois faremos o diagrama de fluxo.
erDiagram
USER {
int id PK
string name
string email
string password_hash
}
ROLE {
int id PK
string name
text permissions
}
USER_ROLE {
int id PK
int user_id FK
int role_id FK
}
APPROVAL_LEVEL {
int id PK
string name
int order
}
APPROVER {
int id PK
int user_id FK
int approval_level_id FK
}
COST_CENTER {
int id PK
string name
text description
}
FINANCIAL_TRANSACTION {
int id PK
float amount
string currency
date transaction_date
int initiator_user_id FK
int status_id FK
int cost_center_id FK
}
APPROVAL {
int id PK
int transaction_id FK
int approver_id FK
int approval_level_id FK
date approval_date
string status
}
STATUS {
int id PK
string name
}
USER ||--o{ USER_ROLE : "has roles"
ROLE ||--o{ USER_ROLE : "assigned to users"
USER ||--o{ APPROVER : "can be"
APPROVAL_LEVEL ||--o{ APPROVER : "defines approvers"
FINANCIAL_TRANSACTION ||--o{ APPROVAL : "requires"
APPROVAL_LEVEL ||--o{ APPROVAL : "defines"
COST_CENTER ||--o{ FINANCIAL_TRANSACTION : "categorizes"
STATUS ||--o{ FINANCIAL_TRANSACTION : "tracks"
flowchart TD
Start -->|Initiate| CreateTransaction["Create Financial Transaction"]
CreateTransaction --> AssignCostCenter["Assign Cost Center"]
AssignCostCenter --> SubmitForApproval["Submit for Approval"]
SubmitForApproval --> Level1Approval["Level 1 Approval"]
Level1Approval -->|Approved| Level2Approval["Level 2 Approval"]
Level1Approval -->|Rejected| RejectTransaction["Reject Transaction"]
Level2Approval -->|Approved| Level3Approval["Level 3 Approval"]
Level2Approval -->|Rejected| RejectTransaction
Level3Approval -->|Approved| CompleteTransaction["Complete Transaction"]
Level3Approval -->|Rejected| RejectTransaction
CompleteTransaction --> NotifyUser["Notify User of Completion"]
RejectTransaction --> NotifyUser["Notify User of Rejection"]
NotifyUser --> End["End"]
- Usuário (USER): Representa os usuários do sistema.
- Papel (ROLE): Define os diferentes papéis dentro do sistema, como "Administrador", "Aprovador", etc.
- Nível de Aprovação (APPROVAL_LEVEL): Define os níveis de aprovação necessários para as transações financeiras.
- Aprovador (APPROVER): Representa os usuários que têm a capacidade de aprovar transações, vinculados a um nível de aprovação específico.
- Transação Financeira (FINANCIAL_TRANSACTION): Representa uma transação financeira que passa por um fluxo de aprovação.
- Aprovação (APPROVAL): Representa a ação de aprovação ou rejeição de uma transação por um aprovador em um determinado nível.
- Status (STATUS): Representa o status da transação financeira, como "Pendente", "Aprovado", "Rejeitado".
- Centro de Custos (COST_CENTER): Um centro de custos é utilizado para categorizar e organizar as transações financeiras dentro de diferentes áreas, departamentos ou projetos, permitindo um melhor controle e alocação dos recursos financeiros.
O diagrama de fluxo ilustra o processo de submissão e aprovação de uma transação financeira, com múltiplos níveis de aprovação.