# 01 — Visão Geral do Sistema

## O que é o Antigravity?

O **Antigravity** é um sistema de gestão de projetos e tarefas corporativo, multi-tenant, desenvolvido para organizações com hierarquias gerenciais. Permite que equipes de diferentes níveis hierárquicos gerenciem projetos, tarefas, demandas rápidas, custos e afazeres, com um fluxo de revisão em cascata baseado no cargo do usuário.

---

## Propósito e Problema Resolvido

A plataforma resolve a necessidade de:

1. **Gestão hierárquica de tarefas** — Fluxo de aprovação em múltiplos níveis (executor → chefia imediata → coordenação → diretoria → presidência)
2. **Multi-tenancy** — Um único servidor atende múltiplas organizações (clientes), cada uma com seu banco de dados isolado
3. **Mobilidade** — App nativo iOS/Android que espelha todas as funcionalidades do sistema
4. **Rastreabilidade** — Histórico completo de mudanças de status de tarefas
5. **Gestão de custos** — Aprovação de custos por alçada baseada em cargo

---

## Tecnologias Utilizadas

### Frontend Mobile
| Tecnologia | Versão | Uso |
|------------|--------|-----|
| React Native | 0.81.5 | Framework base |
| Expo SDK | ~54.0.32 | Toolchain, build, OTA |
| React Navigation | ^7.x | Navegação entre telas |
| Expo Notifications | - | Push notifications |
| Expo Document Picker | ~14.0.8 | Seleção de arquivos |
| Expo File System | ~19.0.21 | Acesso ao sistema de arquivos |
| Expo Print / Sharing | - | Exportação de relatórios |
| react-native-svg | 15.12.1 | Gráficos vetoriais (Gantt) |
| react-native-view-shot | 4.0.3 | Captura de tela (Gantt) |
| @expo/vector-icons | - | Ícones Ionicons |

### Backend
| Tecnologia | Versão | Uso |
|------------|--------|-----|
| PHP | 8.x | API REST (JSON) |
| Apache | - | Servidor web |
| MySQL | 8.x | Banco de dados relacional |
| Google Cloud Storage | - | Armazenamento de arquivos (anexos) |
| google/cloud-storage | Composer | PHP SDK para GCS |
| Expo Push API | - | Envio de push notifications |

### Infraestrutura
| Componente | Configuração |
|------------|-------------|
| Servidor Produção | DigitalOcean VPS Ubuntu — `157.245.10.199` |
| Desenvolvimento Local | XAMPP 8.x no Windows |
| App Debug | Expo Go (desenvolvimento), EAS Build (produção) |

---

## Principais Conceitos de Negócio

### Hierarquia Organizacional
O sistema é baseado em uma hierarquia de **4 níveis** configuráveis pelo cliente:

```
Nível 4 (cargo=4): Presidência / Direção Geral
  └── Nível 3 (cargo=3): Diretoria
        └── Nível 2 (cargo=2): Coordenação
              └── Nível 1 (cargo=1): Divisão / Gerência
                    └── Nível 0 (cargo=0): Executor / Colaborador
```

Os nomes dos níveis são completamente configuráveis na tela de Constantes (ex: "Divisão", "Coordenação", "Diretoria", "Presidência").

### Tipos de Itens de Trabalho
| Tipo | Tabela | Descrição |
|------|--------|-----------|
| **Projeto** | `demanda` | Container principal; agrupa tarefas; tem equipe, custos, notas |
| **Tarefa** | `tarefa` | Unidade de trabalho dentro de um projeto; tem fluxo completo de revisão |
| **Demanda Rápida** | `tarefarapida` | Tarefa simples entre dois usuários; sem projeto associado |
| **Afazer** | `tarefa_todo` | Sub-item de uma tarefa; checklist pessoal com responsável |

### Fluxo de Revisão de Tarefas
```
Não Iniciada → Iniciada → Em análise N1 → Analisada N1 → Em análise N2 → Analisada N2 
→ ... → Em análise N4 → Analisada N4 → Concluída
```
Cada transição de "Em análise" notifica o cargo responsável por aquele nível.

---

## Decisões de Arquitetura

| Decisão | Justificativa |
|---------|--------------|
| PHP restful sem framework | Compatibilidade com legado; sem overhead de framework |
| MySQL por cliente | Isolamento total de dados; sem vazamento entre tenants |
| `cargo` como integer 0-4 | Simplicidade; sem tabela de roles separada |
| GCS para anexos | Escalabilidade; não depende de disco do servidor |
| Expo Push (sem FCM direto) | Simplifica configuração iOS/Android com um único endpoint |
| `init_client.php` como middleware | Garante que toda requisição tem contexto de tenant |
| `antigravity_master` separado | Centraliza auth multi-tenant sem misturar com dados de cliente |
