Skip to content

Instantly share code, notes, and snippets.

@fabioaraujo121
Created August 15, 2024 02:36
Show Gist options
  • Select an option

  • Save fabioaraujo121/72877098e6f3f4c4d3047740ce1207cf to your computer and use it in GitHub Desktop.

Select an option

Save fabioaraujo121/72877098e6f3f4c4d3047740ce1207cf to your computer and use it in GitHub Desktop.

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.

Diagrama de Entidade-Relacionamento (DER)

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"
Loading

Diagrama de Fluxo (Mermaid)

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"]

Loading

Descrição dos Componentes

  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment