## **PASSO 1: Verificar Status do Git**
```
root@GestorStream:~# cd /var/www/gestorstream
root@GestorStream:/var/www/gestorstream# git status
HEAD detached at v1.0.2
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   backend/artisan
        modified:   update.sh

no changes added to commit (use "git add" and/or "git commit -a")
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 2: Ver Diferenças no update.sh**
```
root@GestorStream:/var/www/gestorstream# git diff update.sh
diff --git a/update.sh b/update.sh
old mode 100644
new mode 100755
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 3: Fazer Stash das Mudanças Locais**
```
root@GestorStream:/var/www/gestorstream# git stash push -m "Backup mudanças locais antes do pull"
Saved working directory and index state On (no branch): Backup mudanças locais antes do pull
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 4: Fazer Pull Novamente**
```
root@GestorStream:/var/www/gestorstream# git pull origin main
Username for 'https://git.jf.eng.br': jfeng
Password for 'https://jfeng@git.jf.eng.br':
From https://git.jf.eng.br/jfeng/GestorStream
 * branch            main       -> FETCH_HEAD
Updating 68ec88b..e16636f
Fast-forward
 CORRIGIR_PERMISSOES_MD.md                                       |   78 ++
 DIAGNOSTICO_ERRO_503.md                                         |  122 +++
 backend/DEPLOY-GITEA.md                                         |  485 ++++++++++
 backend/DEPLOY.md                                               |   52 ++
 backend/FIX-NGINX.md                                            |  217 +++++
 backend/QUICK-DEPLOY.md                                         |  134 +++
 backend/app/Console/Commands/CheckExpiringClients.php           |   70 +-
 backend/app/Console/Commands/CheckSubscriptionExpiration.php    |    2 -
 backend/app/Http/Controllers/Api/AuditLogController.php         |    3 +-
 backend/app/Http/Controllers/Api/ClientController.php           |  643 ++++++++++---
 backend/app/Http/Controllers/Api/MarketingController.php        |   45 +-
 backend/app/Http/Controllers/Api/PlanController.php             |    8 +-
 backend/app/Http/Controllers/Api/ReportController.php           |  244 +++--
 backend/app/Http/Controllers/Api/WhatsAppController.php         |  110 ++-
 backend/app/Http/Controllers/Api/WhatsAppQueueController.php    |  121 ++-
 backend/app/Http/Middleware/CheckPlanLimit.php                  |    9 +-
 backend/app/Http/Middleware/CheckSubscriptionLimits.php         |   20 +-
 backend/app/Jobs/ProcessWhatsAppQueue.php                       |   97 +-
 backend/app/Models/Client.php                                   |   70 +-
 backend/app/Models/MessageTemplate.php                          |   12 +-
 backend/app/Models/Plan.php                                     |    8 +-
 backend/app/Models/User.php                                     |   48 +-
 backend/app/Services/PlanLimitService.php                       |   28 +-
 backend/app/Services/WhatsAppQueueService.php                   |   37 +-
 ..._client_limit_and_whatsapp_limit_nullable_in_plans_table.php |   37 +
 backend/deploy.bat                                              |   40 +
 backend/deploy.sh                                               |   42 +
 backend/fix-500-error.sh                                        |   65 ++
 backend/fix-nginx-loop.sh                                       |   68 ++
 backend/optimize-production.sh                                  |   57 ++
 backend/update-system.sh                                        |  137 +++
 fix-md-permissions.sh                                           |   43 +
 frontend/src/components/LimitGauge.tsx                          |    5 +-
 frontend/src/components/PlanCard.tsx                            |   17 +-
 frontend/src/components/RenewalModal.tsx                        |  120 ++-
 frontend/src/components/SubscriptionManagementModal.tsx         |   12 +-
 frontend/src/components/SubscriptionWidget.tsx                  |    5 +-
 frontend/src/components/WhatsAppConnectModal.tsx                |   64 +-
 frontend/src/pages/AdminPlansPage.tsx                           |   68 +-
 frontend/src/pages/AuditLogsPage.tsx                            |  437 ++++++++-
 frontend/src/pages/ClientFormPage.tsx                           |    3 +
 frontend/src/pages/ClientsPage.tsx                              | 1089 ++++++++++++++++++----
 frontend/src/pages/DashboardPage.tsx                            | 1292 +++++++++++++++------------
 frontend/src/pages/MarketingPage.tsx                            |   20 +-
 frontend/src/pages/NotificationsPage.tsx                        |   23 +-
 frontend/src/pages/QueuePage.tsx                                |  217 +++--
 frontend/src/pages/RechargesPage.tsx                            |   18 +-
 frontend/src/types/index.ts                                     |    4 +-
 update.sh                                                       |   33 +-
 49 files changed, 5345 insertions(+), 1234 deletions(-)
 create mode 100644 CORRIGIR_PERMISSOES_MD.md
 create mode 100644 DIAGNOSTICO_ERRO_503.md
 create mode 100644 backend/DEPLOY-GITEA.md
 create mode 100644 backend/DEPLOY.md
 create mode 100644 backend/FIX-NGINX.md
 create mode 100644 backend/QUICK-DEPLOY.md
 create mode 100644 backend/database/migrations/2025_12_13_144728_make_client_limit_and_whatsapp_limit_nullable_in_plans_table.php
 create mode 100644 backend/deploy.bat
 create mode 100644 backend/deploy.sh
 create mode 100644 backend/fix-500-error.sh
 create mode 100644 backend/fix-nginx-loop.sh
 create mode 100644 backend/optimize-production.sh
 create mode 100644 backend/update-system.sh
 create mode 100644 fix-md-permissions.sh
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 5: Verificar o Arquivo AuditLogsPage.tsx (Linha 653 e arredores)**
```
root@GestorStream:/var/www/gestorstream# sed -n '645,660p' frontend/src/pages/AuditLogsPage.tsx
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Tentativas
                          </th>
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Erro
                          </th>
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Detalhes
                          </th>
                        </tr>
                      </thead>
                      <tbody className="bg-white divide-y divide-gray-200">
                        {queueLogs.map((log) => (
                          <tr key={log.id} className="hover:bg-gray-50 transition-colors">
                            <td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
                              {formatDate(log.created_at)}
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 6: Verificar se há Caracteres Especiais ou Problemas de Encoding**
```
root@GestorStream:/var/www/gestorstream# file frontend/src/pages/AuditLogsPage.tsx
Command 'file' not found, but can be installed with:
apt install file
root@GestorStream:/var/www/gestorstream# head -n 660 frontend/src/pages/AuditLogsPage.tsx | tail -n 15 | cat -A
                            Tentativas$
                          </th>$
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">$
                            Erro$
                          </th>$
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">$
                            Detalhes$
                          </th>$
                        </tr>$
                      </thead>$
                      <tbody className="bg-white divide-y divide-gray-200">$
                        {queueLogs.map((log) => ($
                          <tr key={log.id} className="hover:bg-gray-50 transition-colors">$
                            <td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">$
                              {formatDate(log.created_at)}$
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 7: Verificar Tamanho e Últimas Linhas do Arquivo**
```
root@GestorStream:/var/www/gestorstream# wc -l frontend/src/pages/AuditLogsPage.tsx
1036 frontend/src/pages/AuditLogsPage.tsx
root@GestorStream:/var/www/gestorstream# tail -n 10 frontend/src/pages/AuditLogsPage.tsx
              </div>
            </div>
          </div>
        )}
      </div>
    </Layout>
  );
}

export default AuditLogsPage;
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 8: Tentar Build do Frontend e Capturar Erro Completo**
```
root@GestorStream:/var/www/gestorstream# cd /var/www/gestorstream/frontend
root@GestorStream:/var/www/gestorstream/frontend# npm run build 2>&1 | tee /tmp/build-error.log

> frontend@0.0.0 build
> vite build

vite v7.2.2 building client environment for production...
transforming...
✓ 2444 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html                                      0.62 kB │ gzip:  0.34 kB
dist/assets/index-CfCuApbS.css                      57.27 kB │ gzip:  9.32 kB
dist/assets/check-TSCkxzAB.js                        0.12 kB │ gzip:  0.14 kB
dist/assets/plus-C0ix3fXT.js                         0.15 kB │ gzip:  0.15 kB
dist/assets/clock-D9bNCRon.js                        0.17 kB │ gzip:  0.16 kB
dist/assets/smartphone-DNUXHgWt.js                   0.20 kB │ gzip:  0.18 kB
dist/assets/chevron-up-CPM7I4sH.js                   0.21 kB │ gzip:  0.18 kB
dist/assets/chevron-right-CpRPZByj.js                0.21 kB │ gzip:  0.18 kB
dist/assets/dollar-sign-Cr46Iy8z.js                  0.22 kB │ gzip:  0.19 kB
dist/assets/copy-4iW_fxlv.js                         0.23 kB │ gzip:  0.20 kB
dist/assets/message-circle-Cn7k3aVK.js               0.24 kB │ gzip:  0.21 kB
dist/assets/eye-Dy5i4XLo.js                          0.25 kB │ gzip:  0.20 kB
dist/assets/funnel-D-zgbp6T.js                       0.25 kB │ gzip:  0.21 kB
dist/assets/calendar-yQ2Dqhwt.js                     0.26 kB │ gzip:  0.20 kB
dist/assets/send-BWrwk6vB.js                         0.29 kB │ gzip:  0.23 kB
dist/assets/subscriptionService-DZPIsSe1.js          0.30 kB │ gzip:  0.19 kB
dist/assets/users-CB0iSdD9.js                        0.31 kB │ gzip:  0.23 kB
dist/assets/refresh-cw-DwWC6L21.js                   0.32 kB │ gzip:  0.23 kB
dist/assets/trash-2-DQEtu6VR.js                      0.33 kB │ gzip:  0.22 kB
dist/assets/planService-Bxqysz0W.js                  0.64 kB │ gzip:  0.26 kB
dist/assets/ConfirmDialog-CGOeRLRU.js                1.49 kB │ gzip:  0.67 kB
dist/assets/Dialog-Dl513Mju.js                       1.55 kB │ gzip:  0.78 kB
dist/assets/StatCard-CmuLjqZc.js                     1.55 kB │ gzip:  0.74 kB
dist/assets/Button-BDG10D0t.js                       1.60 kB │ gzip:  0.83 kB
dist/assets/LoginPage-DUETzgM2.js                    2.47 kB │ gzip:  1.09 kB
dist/assets/icons-e7CynUuk.js                        2.50 kB │ gzip:  1.08 kB
dist/assets/VariableSelector-BfBPIiog.js             2.90 kB │ gzip:  1.35 kB
dist/assets/RegisterPage-Dr01rKhr.js                 3.02 kB │ gzip:  1.12 kB
dist/assets/MessageTemplatesPage-DxA8_Lg4.js         3.15 kB │ gzip:  1.35 kB
dist/assets/DatePicker-Dh7nvtDR.js                   3.83 kB │ gzip:  1.58 kB
dist/assets/WhatsAppIntegrationModal-DGcIvYgA.js     3.90 kB │ gzip:  1.39 kB
dist/assets/ServerFormPage-QDCp2Rlq.js               4.84 kB │ gzip:  1.39 kB
dist/assets/RenewalModal-C_P42ZcI.js                 5.32 kB │ gzip:  2.20 kB
dist/assets/NotificationsPage-c8KfXRci.js            5.41 kB │ gzip:  1.85 kB
dist/assets/BuyExtraWhatsAppModal-DSTTgs8o.js        5.45 kB │ gzip:  2.03 kB
dist/assets/ServerEditPage-BGSLPZ2v.js               5.53 kB │ gzip:  1.64 kB
dist/assets/AdminNotificationsPage-DWd4FXV0.js       5.60 kB │ gzip:  1.78 kB
dist/assets/MessageTemplateEditorPage-OFVD4d5n.js    6.15 kB │ gzip:  2.22 kB
dist/assets/WhatsAppIntegrationsPage-CM2yVdQl.js     7.35 kB │ gzip:  2.05 kB
dist/assets/AdminTicketsPage-BL_-lwdE.js             9.53 kB │ gzip:  2.58 kB
dist/assets/ClientFormPage-DRsiRyyU.js               9.55 kB │ gzip:  2.55 kB
dist/assets/ClientEditPage-7J0MwvJP.js               9.59 kB │ gzip:  2.58 kB
dist/assets/RechargesPage-BOuMpAr2.js                9.68 kB │ gzip:  2.75 kB
dist/assets/AdminPanel-Kl-aBKyq.js                   9.84 kB │ gzip:  2.06 kB
dist/assets/SupportPage-DTPm9FA8.js                 10.46 kB │ gzip:  3.04 kB
dist/assets/SubscriptionPage-D-f65xvW.js            12.07 kB │ gzip:  3.56 kB
dist/assets/index-zfaxoKcK.js                       12.11 kB │ gzip:  2.00 kB
dist/assets/ServerCreditsPage-9cpXsTSC.js           12.81 kB │ gzip:  3.22 kB
dist/assets/SetupPage-Cb4E45Af.js                   13.80 kB │ gzip:  4.92 kB
dist/assets/ClientImportPage-DSEz84-f.js            16.42 kB │ gzip:  4.69 kB
dist/assets/QueuePage-BvuSg1hP.js                   17.40 kB │ gzip:  3.98 kB
dist/assets/ReportsPage-CYrq2KSl.js                 19.84 kB │ gzip:  3.62 kB
dist/assets/MarketingPage-Cw_0532W.js               22.05 kB │ gzip:  5.52 kB
dist/assets/ProfilePage-Cmt2x8dF.js                 22.83 kB │ gzip:  5.94 kB
dist/assets/AdminPlansPage-BPA3_F9E.js              22.86 kB │ gzip:  5.78 kB
dist/assets/UserManagementPage-Dq_4aV2Z.js          23.23 kB │ gzip:  5.37 kB
dist/assets/Layout-BJPEf3E1.js                      26.22 kB │ gzip:  6.17 kB
dist/assets/AuditLogsPage-BEYQiChR.js               28.39 kB │ gzip:  5.30 kB
dist/assets/DashboardPage-DO5MG7Y_.js               29.80 kB │ gzip:  8.64 kB
dist/assets/ServersPage-B2lvfEOA.js                 30.06 kB │ gzip:  7.24 kB
dist/assets/react-vendor-DuF4RLsB.js                32.08 kB │ gzip: 11.64 kB
dist/assets/http-client-B9ygI19o.js                 36.28 kB │ gzip: 14.69 kB
dist/assets/AdminSettingsPage-BRIX8XjU.js           49.30 kB │ gzip: 10.48 kB
dist/assets/SettingsPage-BrSxpZQs.js                56.89 kB │ gzip: 13.61 kB
dist/assets/ClientsPage-DmlGUpAq.js                 57.05 kB │ gzip: 11.34 kB
dist/assets/index-CmjUeqZf.js                      199.89 kB │ gzip: 63.17 kB
dist/assets/charts-Bc0Wywer.js                     338.38 kB │ gzip: 99.59 kB
✓ built in 8.48s
root@GestorStream:/var/www/gestorstream/frontend#
```

## **PASSO 9: Verificar Versões e Dependências**
```
root@GestorStream:/var/www/gestorstream/frontend# node --version
v20.19.6
root@GestorStream:/var/www/gestorstream/frontend# npm --version
10.8.2
root@GestorStream:/var/www/gestorstream/frontend# cat package.json | grep -A 5 '"vite"'
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint .",
    "preview": "vite preview"
  },
  "dependencies": {
--
    "vite": "^7.2.2"
  }
}
root@GestorStream:/var/www/gestorstream/frontend# cat package.json | grep -A 5 '"esbuild"'
root@GestorStream:/var/www/gestorstream/frontend#
```

## **PASSO 10: Verificar se há Problemas de Sintaxe com ESLint/TypeScript**
```
root@GestorStream:/var/www/gestorstream/frontend# npx tsc --noEmit frontend/src/pages/AuditLogsPage.tsx 2>&1 | head -20
error TS6053: File 'frontend/src/pages/AuditLogsPage.tsx' not found.
  The file is in the program because:
    Root file specified for compilation
root@GestorStream:/var/www/gestorstream/frontend#
```

## **PASSO 11: Verificar Conteúdo Exato da Linha 653**
```
root@GestorStream:/var/www/gestorstream/frontend# cd /var/www/gestorstream
root@GestorStream:/var/www/gestorstream# sed -n '653p' frontend/src/pages/AuditLogsPage.tsx | od -c
0000000
0000020                                           <   /   t   h   >  \n
0000040
root@GestorStream:/var/www/gestorstream#
```

## **PASSO 12: Comparar com Versão do Repositório**
```
root@GestorStream:/var/www/gestorstream# git show HEAD:frontend/src/pages/AuditLogsPage.tsx | sed -n '645,660p'
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Tentativas
                          </th>
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Erro
                          </th>
                          <th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
                            Detalhes
                          </th>
                        </tr>
                      </thead>
                      <tbody className="bg-white divide-y divide-gray-200">
                        {queueLogs.map((log) => (
                          <tr key={log.id} className="hover:bg-gray-50 transition-colors">
                            <td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
                              {formatDate(log.created_at)}
root@GestorStream:/var/www/gestorstream#
```

