dev local: remove container dev extinto (CT 102), paths locais e systemd user timers

Desenvolvimento passa a local no desktop (/media/ealmeida/Dados/Dev), sem
ssh_execute(server="dev"); crons /root/Dev migrados para systemd user
timers; refs a sync Syncthing para dev removidas (regra 48).
This commit is contained in:
2026-07-22 11:31:24 +01:00
parent 7194605255
commit 9ed9ba0e9f
9 changed files with 23 additions and 25 deletions
+4 -4
View File
@@ -36,9 +36,9 @@ mcp__outline-api__search_documents "acidaos" # ver docs existentes
mcp__gitea__get_dir_content acidaos-core/src/
```
**Gerar localmente (no container dev):**
**Gerar localmente (desktop):**
```bash
cd /root/Dev/acidaos-core
cd /media/ealmeida/Dados/Dev/acidaos-core
cargo doc --all-features --no-deps --open
```
@@ -81,9 +81,9 @@ pub struct ComponenteX { ... }
mcp__gitea__get_file_content acidaos-dashboard/typedoc.json
```
**Gerar (no container dev):**
**Gerar (localmente no desktop):**
```bash
cd /root/Dev/acidaos-dashboard
cd /media/ealmeida/Dados/Dev/acidaos-dashboard
pnpm typedoc --out docs/api src/
```
+2 -2
View File
@@ -46,8 +46,8 @@ mcp__gitea__get_file_content acidaos-dashboard/package.json
**Estrutura a criar:**
```bash
# No container dev (Regra #48)
cd /root/Dev
# Localmente no desktop (Regra #48 — CT 102 extinto)
cd /media/ealmeida/Dados/Dev
npx create-next-app@latest acidaos-<nome> \
--typescript \
--tailwind \
@@ -243,7 +243,7 @@ def criar_pricing(c: canvas.Canvas, planos: list[dict]):
| Controlo | Pixel-perfect | Aproximado |
| Fontes custom | Suporte completo | Limitado |
| Melhor para | Proposta final PDF | Template editável pelo cliente |
| Ambiente | Servidor dev (`/root/Dev`) | Servidor dev ou local |
| Ambiente | Desktop local (`/media/ealmeida/Dados/Dev`) | Desktop local |
**Recomendação:** usar reportlab para proposta final; pptxgenjs se o cliente precisar de editar.
@@ -254,8 +254,8 @@ pip install reportlab Pillow
# Registar fontes Nexa
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont("Nexa-Bold", "/root/Dev/assets/fonts/Nexa-Bold.ttf"))
pdfmetrics.registerFont(TTFont("Nexa-Light", "/root/Dev/assets/fonts/Nexa-Light.ttf"))
pdfmetrics.registerFont(TTFont("Nexa-Bold", "/media/ealmeida/Dados/Dev/assets/fonts/Nexa-Bold.ttf"))
pdfmetrics.registerFont(TTFont("Nexa-Light", "/media/ealmeida/Dados/Dev/assets/fonts/Nexa-Light.ttf"))
```
---
+4 -6
View File
@@ -22,20 +22,18 @@ mcp__notebooklm__notebook_query({
## Regra #48 - Dev Container (OBRIGATÓRIO)
**TODOS os projectos Next.js devem ser desenvolvidos no container dev.**
**TODOS os projectos Next.js são desenvolvidos LOCALMENTE no desktop (regra 48 — CT 102 extinto em 20-04-2026).**
```
SSH: server="dev" (mcp__ssh-unified__ssh_execute)
Path: /root/Dev/<projecto>
Sync: auto -> /media/ealmeida/Dados/Dev/<projecto> (Syncthing)
Ambiente: Bash local no desktop (sem SSH)
Path: /media/ealmeida/Dados/Dev/<projecto>
```
**Workflow:**
1. `mcp__ssh-unified__ssh_execute server:"dev" command:"mkdir -p /root/Dev/<projecto>"`
1. `mkdir -p /media/ealmeida/Dados/Dev/<projecto>` (Bash local)
2. Desenvolver e testar no container
3. `npm run build` no container antes de deploy
4. Deploy via EasyPanel
5. Syncthing propaga automaticamente
**NUNCA:** `npx create-next-app` directamente no PC local para projectos colaborativos.
+1 -1
View File
@@ -33,7 +33,7 @@ mcp__notebooklm__notebook_query({
Integrar insights do NotebookLM nas recomendações e decisões.
> **Regra #48:** Projectos PHP/Laravel/Symfony devem ser desenvolvidos no **container dev** (`server:"dev"`, path `/root/Dev/<projecto>`). Sincroniza automaticamente com o PC local via Syncthing.
> **Regra #48:** Projectos PHP/Laravel/Symfony são desenvolvidos **localmente no desktop** em `/media/ealmeida/Dados/Dev/<projecto>` (Bash local, sem SSH — CT 102 extinto em 20-04-2026).
## Quando Usar
+1 -1
View File
@@ -22,7 +22,7 @@ mcp__notebooklm__notebook_query({
})
```
> **Regra #48:** Projectos React devem ser desenvolvidos no **container dev** (`server:"dev"`, path `/root/Dev/<projecto>`). Sincroniza via Syncthing.
> **Regra #48:** Projectos React são desenvolvidos **localmente no desktop** em `/media/ealmeida/Dados/Dev/<projecto>` (Bash local, sem SSH — CT 102 extinto em 20-04-2026).
## Quando Usar
+2 -2
View File
@@ -130,7 +130,7 @@ with sync_playwright() as p:
Para testes que requerem Node.js/Python:
```bash
# Via SSH MCP para o servidor dev
mcp__ssh-unified__ssh_execute server="dev" command="cd /root/Dev/projecto && python test_automation.py"
cd /media/ealmeida/Dados/Dev/projecto && python test_automation.py # Bash local no desktop
```
### Instalacao Playwright (se necessario)
@@ -140,7 +140,7 @@ pip install playwright
playwright install chromium
```
No servidor dev, Playwright ja esta disponivel em `/root/Dev`.
No desktop, Playwright está disponível nos projectos em `/media/ealmeida/Dados/Dev`.
---
**Versao**: 1.0.0 | **Autor**: Descomplicar®
+3 -3
View File
@@ -97,7 +97,7 @@ SE invocado directamente:
| **Prioridade** | Conforme urgência |
**Exemplos de descrições válidas:**
- "Verificar logs `/root/Dev/imap-cleaner/cron.log` e `/root/Dev/auto-expense/auto-expense.log`. Reportar se houve erros ou se o pipeline correu bem."
- "Verificar logs `/media/ealmeida/Dados/Dev/imap-cleaner/cron.log` e `/media/ealmeida/Dados/Dev/auto-expense/auto-expense.log` (execução local via systemd user timers). Reportar se houve erros ou se o pipeline correu bem."
- "Correr /imap-triage e reportar faturas detectadas."
- "Verificar tarefas overdue no Desk CRM e sugerir as 3 mais urgentes."
@@ -106,7 +106,7 @@ SE invocado directamente:
## Wrapper Script (dev server)
```bash
# /root/Dev/aiktop-tasks/run-aiktop-tasks.sh
# /media/ealmeida/Dados/Dev/aiktop-tasks/run-aiktop-tasks.sh
#!/bin/bash
export IS_SANDBOX=1
LOG="$HOME/Dev/aiktop-tasks/aiktop-tasks.log"
@@ -117,7 +117,7 @@ echo "$(date) [END] exit=$EXIT_CODE" >> "$LOG"
exit $EXIT_CODE
```
**Cron:** `*/15 * * * * /root/Dev/aiktop-tasks/run-aiktop-tasks.sh`
**Agendamento:** systemd user timer local (15 em 15 min) a correr `/media/ealmeida/Dados/Dev/aiktop-tasks/run-aiktop-tasks.sh`
---
+3 -3
View File
@@ -23,7 +23,7 @@ mcp__notebooklm__notebook_query({
- [PROC-MCP-Troubleshooting-Erro-471.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/D7-Tecnologia/MCP/PROC-MCP-Troubleshooting-Erro-471.md)
- [PROC-MCP-Google-Auth.md](file:///media/ealmeida/Dados/Hub/06-Operacoes/Procedimentos/D7-Tecnologia/MCP/PROC-MCP-Google-Auth.md)
> **Regra #48:** Novos MCPs são desenvolvidos no **container dev** (`server:"dev"`, path `/root/Dev/<nome-mcp>`). Após validação, mover para `/home/ealmeida/mcp-servers/` em produção.
> **Regra #48:** Novos MCPs são desenvolvidos **localmente no desktop** em `/media/ealmeida/Dados/Dev/<nome-mcp>` (CT 102 extinto em 20-04-2026). Após validação, mover para `~/mcp-servers/` em produção.
---
@@ -63,7 +63,7 @@ getCustomerNotes (camelCase), get_customer_notes_with_all_billing_details (>40 c
### Fase 2: Implementation
1. Scaffold no container dev: `/root/Dev/<nome-mcp>/`
1. Scaffold local no desktop: `/media/ealmeida/Dados/Dev/<nome-mcp>/`
2. Implementar tools com **annotations obrigatórias** e validação Zod
3. Definir capabilities completas (tools + resources + prompts)
4. Responses em **dual format**: Markdown (text) + JSON (structuredContent)
@@ -158,7 +158,7 @@ npm run eval:ci # build + evaluations (para CI/CD)
## Estrutura de Projecto
```
/root/Dev/mcp-<nome>/ # Desenvolvimento (container dev)
/media/ealmeida/Dados/Dev/mcp-<nome>/ # Desenvolvimento (local, desktop)
├── package.json
├── tsconfig.json
├── src/