307 Cards
4 Boards
24 Stacks
10 Analistas
0 Portais

๐ŸŒ Contexto do Sistema

MABUS Analytics รฉ um sistema de inteligรชncia para licitaรงรตes pรบblicas que integra dados do Nextcloud Deck para anรกlise estratรฉgica de oportunidades B2G (Business-to-Government).

๐Ÿ“Š Fluxo de Dados

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Nextcloud Deck  โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚  JSON Export     โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚   MABUS Import   โ”‚
    โ”‚  (Kanban Board)  โ”‚     โ”‚  (Manual/API)    โ”‚     โ”‚   (DeckImporter) โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                               โ”‚
                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                        โ”‚                                      โ–ผ                                      โ”‚
                        โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
                        โ”‚  โ”‚ Boards  โ”‚โ”€โ”€โ–ถโ”‚ Stacks  โ”‚โ”€โ”€โ–ถโ”‚ Cards   โ”‚โ”€โ”€โ–ถโ”‚ Card Labels โ”‚   โ”‚Custom Tagsโ”‚ โ”‚
                        โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
                        โ”‚                                      โ”‚                                      โ”‚
                        โ”‚               POSTGRESQL DATABASE    โ”‚         ASSIGNED USERS               โ”‚
                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                               โ”‚
                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                  โ”‚                                            โ–ผ                                            โ”‚
                  โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
                  โ”‚   โ”‚   Dashboard    โ”‚    โ”‚   Cards CRUD   โ”‚    โ”‚   Analytics    โ”‚    โ”‚    GOD-MOD     โ”‚  โ”‚
                  โ”‚   โ”‚   (Stats/KPI)  โ”‚    โ”‚  (List/Edit)   โ”‚    โ”‚   (Graphs)     โ”‚    โ”‚  (You Are Here)โ”‚  โ”‚
                  โ”‚   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
                  โ”‚                              LARAVEL APPLICATION LAYER                                  โ”‚
                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐ŸŽฏ Objetivos do Sistema

  • Sincronizar: Importar cards do Nextcloud Deck preservando hierarquia e metadados
  • Analisar: Calcular mรฉtricas IPM (Viabilidade, Complexidade, Lucratividade, Chance, Risco)
  • Rastrear: Acompanhar status de licitaรงรตes (Pendente โ†’ Acompanhando โ†’ Ganho/Perdido)
  • Reportar: Gerar anรกlises de win rate, volume por portal, tendรชncias

๐Ÿ“Š Diagrama de Relacionamento (ER)

        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚     BOARDS      โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚     STACKS      โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚                 CARDS                   โ”‚
        โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค     โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค     โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
        โ”‚ id              โ”‚     โ”‚ id              โ”‚     โ”‚ id (PK)                                 โ”‚
        โ”‚ deck_board_id   โ”‚     โ”‚ board_id (FK)   โ”‚     โ”‚ deck_card_id (UK)                       โ”‚
        โ”‚ title           โ”‚     โ”‚ deck_stack_id   โ”‚     โ”‚ title, description                      โ”‚
        โ”‚ owner           โ”‚     โ”‚ title           โ”‚     โ”‚ analyst, user_status, defeat_reason     โ”‚
        โ”‚ color           โ”‚     โ”‚ stack_order     โ”‚     โ”‚ viabilidade_tatica, complexidade...     โ”‚
        โ”‚ archived        โ”‚     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ”‚ portal, orgao, valor_estimado           โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                    โ”‚           โ”‚
                                                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                                       โ”‚ ASSIGNED_USERSโ”‚  โ”‚   CARD_LABELS     โ”‚
                                                       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
                                                       โ”‚ card_id (FK)  โ”‚  โ”‚ card_id (FK)      โ”‚
                                                       โ”‚ uid           โ”‚  โ”‚ category, value   โ”‚
                                                       โ”‚ displayname   โ”‚  โ”‚ raw_label, color  โ”‚
                                                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                    โ”‚
                                                       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”
                                                       โ”‚  CUSTOM_TAGS  โ”‚
                                                       โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
                                                       โ”‚ card_id (FK)  โ”‚
                                                       โ”‚ tag_name      โ”‚
                                                       โ”‚ tag_value     โ”‚
                                                       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Cardinalidades

  • boards โ†’ stacks: 1:N (Um board tem vรกrias colunas)
  • stacks โ†’ cards: 1:N (Uma coluna tem vรกrios cards)
  • cards โ†’ assigned_users: 1:N (Card pode ter mรบltiplos responsรกveis)
  • cards โ†’ card_labels: 1:N (Card pode ter mรบltiplas labels)
  • cards โ†’ custom_tags: 1:N (Tags personalizadas)

๐Ÿ”„ Ciclo de Vida do Card

                                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                        โ”‚   IMPORT    โ”‚
                                        โ”‚  (via JSON) โ”‚
                                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                               โ”‚
                                               โ–ผ
                                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                               โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚   PENDING   โ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Status inicial
                               โ”‚        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                               โ”‚               โ”‚
                               โ”‚   Anรกlise     โ”‚  Analista avalia
                               โ”‚   necessรกria  โ”‚  viabilidade
                               โ”‚               โ–ผ
                               โ”‚        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                               โ”‚        โ”‚  TRACKING   โ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Acompanhando licitaรงรฃo
                               โ”‚        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                               โ”‚               โ”‚
                               โ”‚               โ”‚ Resultado do pregรฃo
                               โ”‚               โ”‚
                        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”Œโ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”
                        โ”‚             โ”‚   โ”‚         โ”‚
                        โ–ผ             โ–ผ   โ–ผ         โ–ผ
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ”‚     WON     โ”‚  โ”‚    LOST     โ”‚
                 โ”‚   โœ… Ganho   โ”‚  โ”‚   โŒ Perdido โ”‚
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                         โ”‚
                                         โ–ผ
                                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                  โ”‚defeat_reasonโ”‚ โ—€โ”€โ”€โ”€โ”€ Motivo registrado
                                  โ”‚  (obrigatรณrio)โ”‚
                                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“Š Mรฉtricas IPM (รndice de Priorizaรงรฃo MABUS)

Viabilidade Tรกtica Capacidade de atender os requisitos tรฉcnicos
Complexidade Operacional Dificuldade de execuรงรฃo/entrega
Lucratividade Potencial Margem esperada do contrato
Chance de Vitรณria Probabilidade de ganhar a licitaรงรฃo
Risco Operacional Riscos associados ร  execuรงรฃo

๐Ÿ“ฅ Fluxo de Importaรงรฃo

    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                        DECK IMPORTER SERVICE                            โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                         โ”‚
             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
             โ–ผ                           โ–ผ                           โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Parse JSON     โ”‚         โ”‚  Upsert Board   โ”‚         โ”‚  Process Stacks โ”‚
    โ”‚  - Validate     โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  - deck_board_idโ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  - Per board    โ”‚
    โ”‚  - Extract data โ”‚         โ”‚  - Title/Owner  โ”‚         โ”‚  - Order        โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                      โ”‚
             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
             โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚  Process Cards  โ”‚         โ”‚  Parse Labels   โ”‚         โ”‚  Extract IPM    โ”‚
    โ”‚  - deck_card_id โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  - Normalize    โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  - 5 mรฉtricas   โ”‚
    โ”‚  - All fields   โ”‚         โ”‚  - Category     โ”‚         โ”‚  - Score final  โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                                      โ”‚
                                         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                         โ–ผ
                                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                โ”‚  Assign Users   โ”‚
                                โ”‚  - Multi-assign โ”‚
                                โ”‚  - Displayname  โ”‚
                                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”‘ Estratรฉgia de Deduplicaรงรฃo

O sistema usa deck_card_id como chave รบnica para evitar duplicatas:

Card::updateOrCreate(
        ['deck_card_id' => $cardData['deck_card_id']],
        [...$allCardFields]
    );

๐Ÿ“– Dicionรกrio de Dados

๐Ÿ“‹ cards Principal
Campo Tipo Descriรงรฃo Uso em IA/Grรกficos
id bigint Chave primรกria Identificador รบnico
deck_card_id bigint ID original do Nextcloud Deck Deduplicaรงรฃo na sincronizaรงรฃo
title varchar(500) Tรญtulo da licitaรงรฃo Busca textual, NLP
description longText Descriรงรฃo completa (markdown) Extraรงรฃo de contexto por IA
analyst varchar(100) Analista responsรกvel ๐Ÿ“Š GROUP BY analyst
user_status enum pending / tracking / won / lost ๐Ÿ“Š GROUP BY user_status
defeat_reason text Motivo da derrota Anรกlise de padrรตes de perda
valor_estimado decimal(15,2) Valor do pregรฃo ๐Ÿ“Š SUM(), AVG() por perรญodo
viabilidade_tatica varchar(20) Alta / Mรฉdia / Baixa Score IPM estratรฉgico
complexidade_operacional varchar(20) Alta / Mรฉdia / Baixa Score IPM operacional
lucratividade_potencial varchar(20) Alta / Mรฉdia / Baixa Score IPM financeiro
chance_vitoria varchar(20) Alta / Mรฉdia / Baixa Score IPM probabilidade
risco_operacional varchar(20) Alta / Mรฉdia / Baixa Score IPM risco
ipm_score varchar(20) Score final IPM Decisรฃo estratรฉgica final
portal varchar(100) Portal de origem ๐Ÿ“Š GROUP BY portal
orgao varchar(255) ร“rgรฃo pรบblico Filtro geogrรกfico/institucional
extracted_date date Data de extraรงรฃo ๐Ÿ“Š Timeline, tendรชncias
due_date date Prazo limite Alertas de vencimento
board_name varchar(255) Nome do board original Segmentaรงรฃo por board
๐Ÿข boards
Campo Tipo Descriรงรฃo
id bigint PK
deck_board_id bigint ID รบnico do Deck
title varchar Nome do board
owner varchar Proprietรกrio
archived boolean Status de arquivamento
๐Ÿ“š stacks
Campo Tipo Descriรงรฃo
id bigint PK
board_id bigint FK โ†’ boards
deck_stack_id bigint ID รบnico do Deck
title varchar Nome da coluna
stack_order int Ordem de exibiรงรฃo
๐Ÿ‘ฅ assigned_users
Campo Tipo Descriรงรฃo
id bigint PK
card_id bigint FK โ†’ cards
uid varchar ID do usuรกrio
displayname varchar Nome de exibiรงรฃo
๐Ÿท๏ธ card_labels
Campo Tipo Descriรงรฃo
id bigint PK
card_id bigint FK โ†’ cards
category varchar Categoria normalizada
value varchar Valor normalizado
raw_label varchar Label original
๐Ÿ”– custom_tags
Campo Tipo Descriรงรฃo
id bigint PK
card_id bigint FK โ†’ cards
tag_name varchar Nome da tag
tag_value varchar Valor da tag

๐ŸŽฏ Receitas de Cruzamento

Copie e use para gerar grรกficos! Clique no cรณdigo para copiar.

๐Ÿ“Š Cards por Status

Distribuiรงรฃo do funil de vendas

SELECT user_status, COUNT(*) as total
    FROM cards
    GROUP BY user_status
    ORDER BY total DESC;
Eloquent: Card::groupBy('user_status')->selectRaw('user_status, COUNT(*) as total')->get()

๐Ÿ“Š Win Rate por Analista

Performance individual

SELECT
        analyst,
        SUM(CASE WHEN user_status='won' THEN 1 ELSE 0 END) as won,
        SUM(CASE WHEN user_status='lost' THEN 1 ELSE 0 END) as lost,
        ROUND(SUM(CASE WHEN user_status='won' THEN 1 ELSE 0 END) * 100.0 /
              NULLIF(SUM(CASE WHEN user_status IN ('won','lost') THEN 1 ELSE 0 END), 0), 2) as win_rate
    FROM cards
    WHERE analyst IS NOT NULL
    GROUP BY analyst;

๐Ÿ“Š Valor por Portal

Volume financeiro por origem

SELECT
        portal,
        COUNT(*) as total_cards,
        SUM(valor_estimado) as valor_total,
        AVG(valor_estimado) as valor_medio
    FROM cards
    WHERE portal IS NOT NULL
    GROUP BY portal
    ORDER BY valor_total DESC;

๐Ÿ“Š Tendรชncia Mensal

Volume ao longo do tempo

SELECT
        DATE_FORMAT(extracted_date, '%Y-%m') as mes,
        COUNT(*) as total,
        SUM(CASE WHEN user_status='won' THEN 1 ELSE 0 END) as ganhos,
        SUM(CASE WHEN user_status='lost' THEN 1 ELSE 0 END) as perdidos
    FROM cards
    WHERE extracted_date IS NOT NULL
    GROUP BY mes
    ORDER BY mes DESC
    LIMIT 12;

๐Ÿ“Š Distribuiรงรฃo IPM

Score estratรฉgico

SELECT
        viabilidade_tatica,
        COUNT(*) as total,
        ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM cards WHERE viabilidade_tatica IS NOT NULL), 2) as percentual
    FROM cards
    WHERE viabilidade_tatica IS NOT NULL
    GROUP BY viabilidade_tatica;

๐Ÿ“Š Motivos de Derrota

Anรกlise de padrรตes de perda

SELECT
        defeat_reason,
        COUNT(*) as ocorrencias
    FROM cards
    WHERE user_status = 'lost'
      AND defeat_reason IS NOT NULL
      AND defeat_reason != ''
    GROUP BY defeat_reason
    ORDER BY ocorrencias DESC
    LIMIT 10;

โšก Eloquent Quick Reference

Card::with(['labels', 'customTags'])->get() Carregar com relacionamentos
Card::where('user_status', 'won')->count() Contar ganhos
Card::whereNotNull('analyst')->distinct('analyst')->pluck('analyst') Lista de analistas รบnicos
Card::whereBetween('extracted_date', [$start, $end])->get() Filtrar por perรญodo
Card::where('valor_estimado', '>', 100000)->sum('valor_estimado') Soma de valores altos
$card->labels()->where('category', 'status')->first() Label especรญfica de um card
Card::selectRaw('analyst, COUNT(*) as total')->groupBy('analyst')->orderByDesc('total')->get() Top analistas por volume
Board::with(['stacks.cards'])->get() Hierarquia completa

๐Ÿ”— Endpoints da API

Mรฉtodo Endpoint Descriรงรฃo
GET /cards Listar cards com filtros
GET /cards/create Form de criaรงรฃo
POST /cards Criar novo card
GET /cards/{id}/edit Form de ediรงรฃo
PUT /cards/{id} Atualizar card
DELETE /cards/{id} Excluir card
GET /api/cards/{id} Detalhes JSON
PATCH /api/cards/{id} Update parcial (inline edit)
GET /api/cards/{id}/tags Listar tags
POST /api/cards/{id}/tags Adicionar tag
DELETE /api/tags/{id} Remover tag