diff --git a/README.md b/README.md index 2ecf17f..808c0ca 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,18 @@ Plataforma de operações Ligbox — Spec-Driven Development com [GitHub Spec Ki **VM:** 122 (`ligbox-ops`) · `10.10.10.122` · SSH WAN `95.216.14.146:2522` + +## Estrutura do monorepo + +| Projecto | VM | Pasta | +|----------|-----|-------| +| Wizard | VM112 | `projects/wizard/` | +| Ops Desk | VM122 | `projects/ops-desk/` | +| Finance | VM123 | `projects/finance/` | +| Integrations | VM104 | `projects/integrations/` | + +**Specs** ficam em `specs/` (raiz) — muitas cruzam VMs. Ver `projects/README.md` e `deploy/manifest.yaml`. + --- ## Início rápido Spec Kit @@ -46,7 +58,7 @@ Canais: `workspace/` · `obsidian-infra/ligbox-ops-platform/` (VM112) · `LAPTOP ## Estado MVP (VM122) -Deploy em `/opt/ligbox-ops-platform/`: +Deploy em `/opt/ligbox-ops-platform/` (conteúdo = `projects/ops-desk/` no Git): - API `:8080` · Frontend `:8091` · Redis + Worker internos - fail2ban activo · webhook secret dev (rotacionar em produção) diff --git a/_sidebar.md b/_sidebar.md new file mode 100644 index 0000000..ec0a360 --- /dev/null +++ b/_sidebar.md @@ -0,0 +1,138 @@ +# Ligbox Spec Kit +- [🏠 Hub](/) +- [📋 Inventário VMs](docs/vms/README.md) +- [📜 Constitution](.specify/memory/constitution.md) +- [📌 Backlog](BACKLOG.md) +--- +## VM112 — Onboard / Mail +- **001-webhook-vm112-integration** + - [📄 spec.md](specs/001-webhook-vm112-integration/spec.md) + - [plan.md](specs/001-webhook-vm112-integration/plan.md) + - [tasks.md](specs/001-webhook-vm112-integration/tasks.md) + - [quickstart.md](specs/001-webhook-vm112-integration/quickstart.md) + - [research.md](specs/001-webhook-vm112-integration/research.md) + - [data-model.md](specs/001-webhook-vm112-integration/data-model.md) + - **contracts/** + - [webhook-onboard](specs/001-webhook-vm112-integration/contracts/webhook-onboard.md) + - **checklists/** + - [requirements](specs/001-webhook-vm112-integration/checklists/requirements.md) +- **017-vm112-domain-orchestration** + - [📄 spec.md](specs/017-vm112-domain-orchestration/spec.md) +- **022-carbonio-account-exists-release** + - [📄 spec.md](specs/022-carbonio-account-exists-release/spec.md) + - [tasks.md](specs/022-carbonio-account-exists-release/tasks.md) +- **025-wizard-onboarding-continuity** + - [📄 spec.md](specs/025-wizard-onboarding-continuity/spec.md) + - [tasks.md](specs/025-wizard-onboarding-continuity/tasks.md) +- **026-purge-traefik-validation** + - [📄 spec.md](specs/026-purge-traefik-validation/spec.md) +- **010-desk-assist-takeover** + - [📄 spec.md](specs/010-desk-assist-takeover/spec.md) + - [tasks.md](specs/010-desk-assist-takeover/tasks.md) + - [quickstart.md](specs/010-desk-assist-takeover/quickstart.md) +## VM122 — Ops Desk +- **003-desk-auth-rbac** + - [📄 spec.md](specs/003-desk-auth-rbac/spec.md) + - [plan.md](specs/003-desk-auth-rbac/plan.md) + - [tasks.md](specs/003-desk-auth-rbac/tasks.md) + - [quickstart.md](specs/003-desk-auth-rbac/quickstart.md) + - [research.md](specs/003-desk-auth-rbac/research.md) + - [data-model.md](specs/003-desk-auth-rbac/data-model.md) + - **contracts/** + - [auth-api](specs/003-desk-auth-rbac/contracts/auth-api.md) + - **checklists/** + - [requirements](specs/003-desk-auth-rbac/checklists/requirements.md) +- **004-desk-account-management** + - [📄 spec.md](specs/004-desk-account-management/spec.md) + - [tasks.md](specs/004-desk-account-management/tasks.md) + - [quickstart.md](specs/004-desk-account-management/quickstart.md) +- **004-onboard-funnel-events** + - [📄 spec.md](specs/004-onboard-funnel-events/spec.md) + - [plan.md](specs/004-onboard-funnel-events/plan.md) + - [tasks.md](specs/004-onboard-funnel-events/tasks.md) + - [research.md](specs/004-onboard-funnel-events/research.md) + - **contracts/** + - [webhook-funnel-events](specs/004-onboard-funnel-events/contracts/webhook-funnel-events.md) + - **checklists/** + - [requirements](specs/004-onboard-funnel-events/checklists/requirements.md) +- **009-ops-audit-overview** + - [📄 spec.md](specs/009-ops-audit-overview/spec.md) + - [plan.md](specs/009-ops-audit-overview/plan.md) + - [tasks.md](specs/009-ops-audit-overview/tasks.md) + - [research.md](specs/009-ops-audit-overview/research.md) + - **contracts/** + - [audit-api](specs/009-ops-audit-overview/contracts/audit-api.md) + - **checklists/** + - [requirements](specs/009-ops-audit-overview/checklists/requirements.md) +- **010-admin-domain-validation** + - [📄 spec.md](specs/010-admin-domain-validation/spec.md) + - [correcao-vm112.md](specs/010-admin-domain-validation/correcao-vm112.md) +- **012-abandoned-onboarding-lead** + - [📄 spec.md](specs/012-abandoned-onboarding-lead/spec.md) + - [tasks.md](specs/012-abandoned-onboarding-lead/tasks.md) + - [quickstart.md](specs/012-abandoned-onboarding-lead/quickstart.md) +- **015-desk-module-registry** + - [📄 spec.md](specs/015-desk-module-registry/spec.md) +- **027-desk-rbac-function-matrix** + - [📄 spec.md](specs/027-desk-rbac-function-matrix/spec.md) + - [quickstart.md](specs/027-desk-rbac-function-matrix/quickstart.md) + - [data-model.md](specs/027-desk-rbac-function-matrix/data-model.md) + - **contracts/** + - [vm123-product-roles](specs/027-desk-rbac-function-matrix/contracts/vm123-product-roles.md) +## VM123 — Finance / Console +- **019-ops-console-active-operations** + - [📄 spec.md](specs/019-ops-console-active-operations/spec.md) + - [plan.md](specs/019-ops-console-active-operations/plan.md) + - [tasks.md](specs/019-ops-console-active-operations/tasks.md) + - [README.md](specs/019-ops-console-active-operations/README.md) + - **contracts/** + - [chamados-api](specs/019-ops-console-active-operations/contracts/chamados-api.md) + - **design/** + - [navigation-ia](specs/019-ops-console-active-operations/design/navigation-ia.md) +- **023-billing-recurrence-desk-visibility** + - [📄 spec.md](specs/023-billing-recurrence-desk-visibility/spec.md) + - [tasks.md](specs/023-billing-recurrence-desk-visibility/tasks.md) +- **024-openpanel-fossbilling** + - [📄 spec.md](specs/024-openpanel-fossbilling/spec.md) + - [tasks.md](specs/024-openpanel-fossbilling/tasks.md) + - [PROVISIONING_CLIENT_CARD.md](specs/024-openpanel-fossbilling/PROVISIONING_CLIENT_CARD.md) +- **019-email-migration-vm122-execution** + - [📄 spec.md](specs/019-email-migration-vm122-execution/spec.md) + - [tasks.md](specs/019-email-migration-vm122-execution/tasks.md) +## VM104 — Wazuh +- **002-wazuh-integration** + - [📄 spec.md](specs/002-wazuh-integration/spec.md) + - [plan.md](specs/002-wazuh-integration/plan.md) + - [tasks.md](specs/002-wazuh-integration/tasks.md) +## CT130 — Spec Hub +- **031-spec-hub-portal** + - [📄 spec.md](specs/031-spec-hub-portal/spec.md) +## Outras specs +- **007-mobile-push-notifications** + - [📄 spec.md](specs/007-mobile-push-notifications/spec.md) + - [tasks.md](specs/007-mobile-push-notifications/tasks.md) + - [quickstart.md](specs/007-mobile-push-notifications/quickstart.md) +- **011-integration-otrs** + - [📄 spec.md](specs/011-integration-otrs/spec.md) +- **011-mail-tls-wizard-validation** + - [📄 spec.md](specs/011-mail-tls-wizard-validation/spec.md) + - [README.md](specs/011-mail-tls-wizard-validation/README.md) +- **013-email-server-migration** + - [📄 spec.md](specs/013-email-server-migration/spec.md) + - [plan.md](specs/013-email-server-migration/plan.md) + - [tasks.md](specs/013-email-server-migration/tasks.md) + - [quickstart.md](specs/013-email-server-migration/quickstart.md) + - [research.md](specs/013-email-server-migration/research.md) + - [data-model.md](specs/013-email-server-migration/data-model.md) + - [infrastructure.md](specs/013-email-server-migration/infrastructure.md) +- **014-funnel-phase-timing** + - [📄 spec.md](specs/014-funnel-phase-timing/spec.md) +- **016-onboard-self-service-prefill** + - [📄 spec.md](specs/016-onboard-self-service-prefill/spec.md) +- **018-service-orchestration** + - [📄 spec.md](specs/018-service-orchestration/spec.md) +- **020-purge-history-desk** + - [📄 spec.md](specs/020-purge-history-desk/spec.md) +- **021-wizard-cybersecurity-telemetry** + - [📄 spec.md](specs/021-wizard-cybersecurity-telemetry/spec.md) + - [tasks.md](specs/021-wizard-cybersecurity-telemetry/tasks.md) diff --git a/api b/api new file mode 120000 index 0000000..9abb120 --- /dev/null +++ b/api @@ -0,0 +1 @@ +projects/ops-desk/api \ No newline at end of file diff --git a/deploy/manifest.yaml b/deploy/manifest.yaml index 31790b0..16e5da9 100644 --- a/deploy/manifest.yaml +++ b/deploy/manifest.yaml @@ -1,17 +1,49 @@ -vm122: - tag: main - path: /opt/ligbox-ops-platform - hub_mirror: /opt/ligbox-spec-hub/repos/ligbox-ops-platform -vm123: - tag: main - paths: - - /opt/vm123-finance-stack - - /opt/ligbox-ops-console +# Deploy manifest — Ligbox Ops Platform +# Fonte: CT130 Forgejo · git pull por VM + vm112: tag: main + description: Wizard onboard + Carbonio mail + project: projects/wizard paths: - - deploy/vm112-spec022 - - deploy/vm112-wizard-security + - projects/wizard/deploy/vm112-spec022 + - projects/wizard/deploy/vm112-wizard-security + deploy_to: + - /opt/ligbox-wizard-scripts + +vm122: + tag: main + description: Ops Desk API + worker + frontend + project: projects/ops-desk + paths: + - projects/ops-desk + deploy_to: /opt/ligbox-ops-platform + hub_mirror: /opt/ligbox-spec-hub/repos/ligbox-ops-platform/projects/ops-desk + note: Symlinks api/worker/frontend na raiz do repo apontam para projects/ops-desk/ + +vm123: + tag: main + description: Finance stack + console + project: projects/finance + paths: + - projects/finance/deploy/vm123-finance-stack + - projects/finance/app/vm123 + - specs/019-ops-console-active-operations/deploy + deploy_to: + - /opt/vm123-finance-stack + - /opt/ligbox-ops-console + +vm104: + tag: main + description: Wazuh SIEM integration + project: projects/integrations + paths: + - projects/integrations/wazuh + deploy_to: /opt/wazuh-integration + ct130: tag: main - path: /opt/ligbox-spec-hub + description: Spec Hub Git + Portal + paths: + - . + deploy_to: /opt/ligbox-spec-hub diff --git a/deploy/vm112-spec022 b/deploy/vm112-spec022 new file mode 120000 index 0000000..3636135 --- /dev/null +++ b/deploy/vm112-spec022 @@ -0,0 +1 @@ +../projects/wizard/deploy/vm112-spec022 \ No newline at end of file diff --git a/deploy/vm112-wizard-security b/deploy/vm112-wizard-security new file mode 120000 index 0000000..6a40cae --- /dev/null +++ b/deploy/vm112-wizard-security @@ -0,0 +1 @@ +../projects/wizard/deploy/vm112-wizard-security \ No newline at end of file diff --git a/deploy/vm122-fossbilling b/deploy/vm122-fossbilling new file mode 120000 index 0000000..eb2057e --- /dev/null +++ b/deploy/vm122-fossbilling @@ -0,0 +1 @@ +../projects/finance/deploy/vm122-fossbilling \ No newline at end of file diff --git a/deploy/vm123-finance-stack b/deploy/vm123-finance-stack new file mode 120000 index 0000000..6dd1b9f --- /dev/null +++ b/deploy/vm123-finance-stack @@ -0,0 +1 @@ +../projects/finance/deploy/vm123-finance-stack \ No newline at end of file diff --git a/docker-compose.mvp.yml b/docker-compose.mvp.yml deleted file mode 100644 index 9fe2c4e..0000000 --- a/docker-compose.mvp.yml +++ /dev/null @@ -1,39 +0,0 @@ -version: "3.8" -services: - redis: - image: redis:7-alpine - restart: unless-stopped - command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru - networks: [ops] - api: - build: ./api - restart: unless-stopped - env_file: .env - volumes: - - /var/lib/ligbox-ops-platform:/data - ports: - - "10.10.10.122:8080:8080" - depends_on: [redis] - networks: [ops] - worker: - build: ./worker - restart: unless-stopped - env_file: .env - environment: - OPS_API_URL: http://api:8080 - AUDIT_INTERVAL_SEC: "600" - LEAD_SYNC_INTERVAL_SEC: "900" - ONBOARD_STALE_HOURS: "24" - OPS_INTERNAL_TOKEN: ${OPS_INTERNAL_TOKEN} - depends_on: [redis, api] - networks: [ops] - frontend: - build: ./frontend - restart: unless-stopped - ports: - - "10.10.10.122:8091:80" - depends_on: [api] - networks: [ops] -networks: - ops: - driver: bridge diff --git a/docker-compose.mvp.yml b/docker-compose.mvp.yml new file mode 120000 index 0000000..d9ada07 --- /dev/null +++ b/docker-compose.mvp.yml @@ -0,0 +1 @@ +projects/ops-desk/docker-compose.mvp.yml \ No newline at end of file diff --git a/docs/vms/README.md b/docs/vms/README.md index 4508616..d7ae2f6 100644 --- a/docs/vms/README.md +++ b/docs/vms/README.md @@ -5,15 +5,29 @@ > As specs **não vivem só na VM122** — descrevem o **ecossistema completo**. O código de cada VM está em `deploy/vm*` e é sincronizado via Git Forgejo. ---- + +## Estrutura do monorepo + +``` +ligbox-ops-platform/ +├── specs/ # Spec Kit — cruzam VMs +├── contracts/ # API/eventos partilhados +├── projects/ +│ ├── wizard/ # VM112 +│ ├── ops-desk/ # VM122 +│ ├── finance/ # VM123 +│ └── integrations/ # VM104 Wazuh +├── deploy/manifest.yaml +└── docs/vms/ +``` ## Mapa rápido | VM/CT | IP | SSH WAN | Papel | Deploy no repo | |-------|-----|---------|-------|----------------| -| **112** | 10.10.10.112 | :2512 | Wizard onboard + Carbonio mail | `deploy/vm112-*` | -| **122** | 10.10.10.122 | :2522 | Ops Desk API + worker + UI MVP | `api/` `frontend/` `worker/` | -| **123** | 10.10.10.123 | :2523 | FOSSBilling + Odoo + OpenPanel + Console UI | `deploy/vm123-*` | +| **112** | 10.10.10.112 | :2512 | Wizard onboard + Carbonio mail | `projects/wizard/` | +| **122** | 10.10.10.122 | :2522 | Ops Desk API + worker + UI MVP | `projects/ops-desk/` | +| **123** | 10.10.10.123 | :2523 | FOSSBilling + Odoo + OpenPanel + Console UI | `projects/finance/` | | **104** | 10.10.10.104 | :2504 | Wazuh SIEM | integração Spec 002, 019 | | **114** | 10.10.10.114 | — | Traefik (CT) | `docs/network/TRAEFIK_*` | | **130** | 10.10.10.130 | :2530 | **Spec Hub** Git + Obsidian + Portal | CT130 local | diff --git a/frontend b/frontend new file mode 120000 index 0000000..c6f2501 --- /dev/null +++ b/frontend @@ -0,0 +1 @@ +projects/ops-desk/frontend \ No newline at end of file diff --git a/projects/README.md b/projects/README.md new file mode 100644 index 0000000..56fb610 --- /dev/null +++ b/projects/README.md @@ -0,0 +1,29 @@ +# Projects — Ligbox Ops Platform + +Monorepo organizado por **domínio de negócio**. As **specs** ficam na raiz (`specs/`) porque muitas cruzam VMs. + +## Estrutura + +| Projecto | VM | Pasta | Papel | +|----------|-----|-------|-------| +| **Wizard** | VM112 | `projects/wizard/` | Onboard, Carbonio, purge, domínios | +| **Ops Desk** | VM122 | `projects/ops-desk/` | API, worker, frontend MVP, RBAC | +| **Finance** | VM123 | `projects/finance/` | FOSSBilling, Odoo, OpenPanel, console | +| **Integrations** | VM104 | `projects/integrations/` | Wazuh SIEM | + +## Specs (raiz — partilhadas) + +``` +specs/001-031/ # Spec Kit — podem referir VM112 + VM122 + VM123 +contracts/ # OpenAPI, eventos partilhados +docs/vms/ # Ficha por VM +deploy/manifest.yaml # O que cada VM faz pull/deploy +``` + +## Deploy por VM + +Ver `deploy/manifest.yaml` — cada VM recebe apenas os paths do seu projecto. + +## Retrocompatibilidade + +Symlinks na raiz (`api`, `worker`, `frontend`, `deploy/vm*`) apontam para `projects/` — VMs antigas continuam a funcionar até actualizarem scripts. diff --git a/projects/finance/README.md b/projects/finance/README.md new file mode 100644 index 0000000..a32449b --- /dev/null +++ b/projects/finance/README.md @@ -0,0 +1,34 @@ +# Finance — VM123 (FOSSBilling / Odoo / OpenPanel) + +**IP:** `10.10.10.123` · SSH WAN `:2523` + +## Conteúdo + +``` +deploy/ + vm123-finance-stack/ # Docker stack, bootstrap, OpenPanel bridge + vm122-fossbilling/ # Integração FOSS (legado path) +app/ + vm123/ # Clientes Odoo, FOSS, OpenPanel, provision +``` + +## Console UI + +Deploy separado em `specs/019-ops-console-active-operations/deploy/` → `/opt/ligbox-ops-console` + +## Specs relacionadas (raiz `specs/`) + +| Spec | Nome | +|------|------| +| 019 | ops-console-active-operations | +| 023 | billing-recurrence-desk-visibility | +| 024 | openpanel-fossbilling | + +## Bootstrap (VM123) + +```bash +cd projects/finance/deploy/vm123-finance-stack +./bootstrap-vm123.sh +``` + +→ [Ficha VM123](../../docs/vms/VM123.md) diff --git a/api/app/vm123/__init__.py b/projects/finance/app/vm123/__init__.py similarity index 100% rename from api/app/vm123/__init__.py rename to projects/finance/app/vm123/__init__.py diff --git a/api/app/vm123/foss_client.py b/projects/finance/app/vm123/foss_client.py similarity index 100% rename from api/app/vm123/foss_client.py rename to projects/finance/app/vm123/foss_client.py diff --git a/api/app/vm123/odoo_client.py b/projects/finance/app/vm123/odoo_client.py similarity index 100% rename from api/app/vm123/odoo_client.py rename to projects/finance/app/vm123/odoo_client.py diff --git a/api/app/vm123/openpanel_client.py b/projects/finance/app/vm123/openpanel_client.py similarity index 100% rename from api/app/vm123/openpanel_client.py rename to projects/finance/app/vm123/openpanel_client.py diff --git a/api/app/vm123/provision.py b/projects/finance/app/vm123/provision.py similarity index 100% rename from api/app/vm123/provision.py rename to projects/finance/app/vm123/provision.py diff --git a/api/app/vm123/provision_store.py b/projects/finance/app/vm123/provision_store.py similarity index 100% rename from api/app/vm123/provision_store.py rename to projects/finance/app/vm123/provision_store.py diff --git a/api/app/vm123/role_map.py b/projects/finance/app/vm123/role_map.py similarity index 100% rename from api/app/vm123/role_map.py rename to projects/finance/app/vm123/role_map.py diff --git a/api/app/vm123/routes.py b/projects/finance/app/vm123/routes.py similarity index 100% rename from api/app/vm123/routes.py rename to projects/finance/app/vm123/routes.py diff --git a/deploy/vm122-fossbilling/.env.example b/projects/finance/deploy/vm122-fossbilling/.env.example similarity index 100% rename from deploy/vm122-fossbilling/.env.example rename to projects/finance/deploy/vm122-fossbilling/.env.example diff --git a/deploy/vm122-fossbilling/README.md b/projects/finance/deploy/vm122-fossbilling/README.md similarity index 100% rename from deploy/vm122-fossbilling/README.md rename to projects/finance/deploy/vm122-fossbilling/README.md diff --git a/deploy/vm122-fossbilling/docker-compose.fossbilling.yml b/projects/finance/deploy/vm122-fossbilling/docker-compose.fossbilling.yml similarity index 100% rename from deploy/vm122-fossbilling/docker-compose.fossbilling.yml rename to projects/finance/deploy/vm122-fossbilling/docker-compose.fossbilling.yml diff --git a/deploy/vm123-finance-stack/.env.example b/projects/finance/deploy/vm123-finance-stack/.env.example similarity index 100% rename from deploy/vm123-finance-stack/.env.example rename to projects/finance/deploy/vm123-finance-stack/.env.example diff --git a/deploy/vm123-finance-stack/README.md b/projects/finance/deploy/vm123-finance-stack/README.md similarity index 100% rename from deploy/vm123-finance-stack/README.md rename to projects/finance/deploy/vm123-finance-stack/README.md diff --git a/deploy/vm123-finance-stack/bootstrap-vm123.sh b/projects/finance/deploy/vm123-finance-stack/bootstrap-vm123.sh similarity index 100% rename from deploy/vm123-finance-stack/bootstrap-vm123.sh rename to projects/finance/deploy/vm123-finance-stack/bootstrap-vm123.sh diff --git a/deploy/vm123-finance-stack/docker-compose.yml b/projects/finance/deploy/vm123-finance-stack/docker-compose.yml similarity index 100% rename from deploy/vm123-finance-stack/docker-compose.yml rename to projects/finance/deploy/vm123-finance-stack/docker-compose.yml diff --git a/deploy/vm123-finance-stack/install-odoo-apps.sh b/projects/finance/deploy/vm123-finance-stack/install-odoo-apps.sh similarity index 100% rename from deploy/vm123-finance-stack/install-odoo-apps.sh rename to projects/finance/deploy/vm123-finance-stack/install-odoo-apps.sh diff --git a/deploy/vm123-finance-stack/install-openpanel-community-bridge.sh b/projects/finance/deploy/vm123-finance-stack/install-openpanel-community-bridge.sh similarity index 100% rename from deploy/vm123-finance-stack/install-openpanel-community-bridge.sh rename to projects/finance/deploy/vm123-finance-stack/install-openpanel-community-bridge.sh diff --git a/deploy/vm123-finance-stack/install-openpanel.sh b/projects/finance/deploy/vm123-finance-stack/install-openpanel.sh similarity index 100% rename from deploy/vm123-finance-stack/install-openpanel.sh rename to projects/finance/deploy/vm123-finance-stack/install-openpanel.sh diff --git a/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.env b/projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.env similarity index 100% rename from deploy/vm123-finance-stack/openpanel-community-bridge/bridge.env rename to projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.env diff --git a/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.py b/projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.py similarity index 100% rename from deploy/vm123-finance-stack/openpanel-community-bridge/bridge.py rename to projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/bridge.py diff --git a/deploy/vm123-finance-stack/openpanel-community-bridge/openpanel-foss-bridge.service b/projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/openpanel-foss-bridge.service similarity index 100% rename from deploy/vm123-finance-stack/openpanel-community-bridge/openpanel-foss-bridge.service rename to projects/finance/deploy/vm123-finance-stack/openpanel-community-bridge/openpanel-foss-bridge.service diff --git a/deploy/vm123-finance-stack/patches/mod_page_signup.html.twig b/projects/finance/deploy/vm123-finance-stack/patches/mod_page_signup.html.twig similarity index 100% rename from deploy/vm123-finance-stack/patches/mod_page_signup.html.twig rename to projects/finance/deploy/vm123-finance-stack/patches/mod_page_signup.html.twig diff --git a/deploy/vm123-finance-stack/proxmox-create-vm123.sh b/projects/finance/deploy/vm123-finance-stack/proxmox-create-vm123.sh similarity index 100% rename from deploy/vm123-finance-stack/proxmox-create-vm123.sh rename to projects/finance/deploy/vm123-finance-stack/proxmox-create-vm123.sh diff --git a/deploy/vm123-finance-stack/setup-foss-antispam.sh b/projects/finance/deploy/vm123-finance-stack/setup-foss-antispam.sh similarity index 100% rename from deploy/vm123-finance-stack/setup-foss-antispam.sh rename to projects/finance/deploy/vm123-finance-stack/setup-foss-antispam.sh diff --git a/deploy/vm123-finance-stack/setup-foss-openpanel-module.sh b/projects/finance/deploy/vm123-finance-stack/setup-foss-openpanel-module.sh similarity index 100% rename from deploy/vm123-finance-stack/setup-foss-openpanel-module.sh rename to projects/finance/deploy/vm123-finance-stack/setup-foss-openpanel-module.sh diff --git a/deploy/vm123-finance-stack/setup-foss-openpanel-server.sh b/projects/finance/deploy/vm123-finance-stack/setup-foss-openpanel-server.sh similarity index 100% rename from deploy/vm123-finance-stack/setup-foss-openpanel-server.sh rename to projects/finance/deploy/vm123-finance-stack/setup-foss-openpanel-server.sh diff --git a/deploy/vm123-finance-stack/test-foss-openpanel-order.sh b/projects/finance/deploy/vm123-finance-stack/test-foss-openpanel-order.sh similarity index 100% rename from deploy/vm123-finance-stack/test-foss-openpanel-order.sh rename to projects/finance/deploy/vm123-finance-stack/test-foss-openpanel-order.sh diff --git a/deploy/vm123-finance-stack/traefik-routes-snippet.yml b/projects/finance/deploy/vm123-finance-stack/traefik-routes-snippet.yml similarity index 100% rename from deploy/vm123-finance-stack/traefik-routes-snippet.yml rename to projects/finance/deploy/vm123-finance-stack/traefik-routes-snippet.yml diff --git a/integrations/wazuh/ligbox-ops.py b/projects/integrations/wazuh/ligbox-ops.py similarity index 100% rename from integrations/wazuh/ligbox-ops.py rename to projects/integrations/wazuh/ligbox-ops.py diff --git a/integrations/wazuh/ossec-integration-snippet.xml b/projects/integrations/wazuh/ossec-integration-snippet.xml similarity index 100% rename from integrations/wazuh/ossec-integration-snippet.xml rename to projects/integrations/wazuh/ossec-integration-snippet.xml diff --git a/projects/ops-desk/README.md b/projects/ops-desk/README.md new file mode 100644 index 0000000..fd40884 --- /dev/null +++ b/projects/ops-desk/README.md @@ -0,0 +1,36 @@ +# Ops Desk — VM122 (Motor de Operações) + +**IP:** `10.10.10.122` · SSH WAN `:2522` · Deploy: `/opt/ligbox-ops-platform` + +## Conteúdo + +``` +api/ # FastAPI — serviço principal +worker/ # Jobs async (audit, leads, onboard) +frontend/ # UI MVP desk +assets/ # Ícones, estáticos +tests/ # Testes API +docker-compose.mvp.yml +legacy-app/ # Cópia histórica app/ (canónico: api/app/) +``` + +## Specs relacionadas (raiz `specs/`) + +| Spec | Nome | +|------|------| +| 003 | desk-auth-rbac | +| 004 | desk-account-management | +| 009 | ops-audit-overview | +| 010 | desk-assist-takeover | +| 012 | abandoned-onboarding-lead | +| 015 | desk-module-registry | +| 027 | desk-rbac-function-matrix | + +## Arrancar (VM122) + +```bash +cd /opt/ligbox-ops-platform # ou projects/ops-desk no hub +docker compose -f docker-compose.mvp.yml up -d +``` + +→ [Ficha VM122](../../docs/vms/VM122.md) diff --git a/api/Dockerfile b/projects/ops-desk/api/Dockerfile similarity index 100% rename from api/Dockerfile rename to projects/ops-desk/api/Dockerfile diff --git a/api/app/__init__.py b/projects/ops-desk/api/app/__init__.py similarity index 100% rename from api/app/__init__.py rename to projects/ops-desk/api/app/__init__.py diff --git a/api/app/agents/__init__.py b/projects/ops-desk/api/app/agents/__init__.py similarity index 100% rename from api/app/agents/__init__.py rename to projects/ops-desk/api/app/agents/__init__.py diff --git a/api/app/agents/checks.py b/projects/ops-desk/api/app/agents/checks.py similarity index 100% rename from api/app/agents/checks.py rename to projects/ops-desk/api/app/agents/checks.py diff --git a/api/app/agents/llm_client.py b/projects/ops-desk/api/app/agents/llm_client.py similarity index 100% rename from api/app/agents/llm_client.py rename to projects/ops-desk/api/app/agents/llm_client.py diff --git a/api/app/agents/notify.py b/projects/ops-desk/api/app/agents/notify.py similarity index 100% rename from api/app/agents/notify.py rename to projects/ops-desk/api/app/agents/notify.py diff --git a/api/app/agents/registry.py b/projects/ops-desk/api/app/agents/registry.py similarity index 100% rename from api/app/agents/registry.py rename to projects/ops-desk/api/app/agents/registry.py diff --git a/api/app/agents/routes.py b/projects/ops-desk/api/app/agents/routes.py similarity index 100% rename from api/app/agents/routes.py rename to projects/ops-desk/api/app/agents/routes.py diff --git a/api/app/agents/runner.py b/projects/ops-desk/api/app/agents/runner.py similarity index 100% rename from api/app/agents/runner.py rename to projects/ops-desk/api/app/agents/runner.py diff --git a/api/app/agents/scenarios/registry.yaml b/projects/ops-desk/api/app/agents/scenarios/registry.yaml similarity index 100% rename from api/app/agents/scenarios/registry.yaml rename to projects/ops-desk/api/app/agents/scenarios/registry.yaml diff --git a/api/app/agents/store.py b/projects/ops-desk/api/app/agents/store.py similarity index 100% rename from api/app/agents/store.py rename to projects/ops-desk/api/app/agents/store.py diff --git a/api/app/assist_catalog.py b/projects/ops-desk/api/app/assist_catalog.py similarity index 100% rename from api/app/assist_catalog.py rename to projects/ops-desk/api/app/assist_catalog.py diff --git a/api/app/assist_routes.py b/projects/ops-desk/api/app/assist_routes.py similarity index 100% rename from api/app/assist_routes.py rename to projects/ops-desk/api/app/assist_routes.py diff --git a/api/app/assist_store.py b/projects/ops-desk/api/app/assist_store.py similarity index 100% rename from api/app/assist_store.py rename to projects/ops-desk/api/app/assist_store.py diff --git a/api/app/audit_store.py b/projects/ops-desk/api/app/audit_store.py similarity index 100% rename from api/app/audit_store.py rename to projects/ops-desk/api/app/audit_store.py diff --git a/api/app/auth.py b/projects/ops-desk/api/app/auth.py similarity index 100% rename from api/app/auth.py rename to projects/ops-desk/api/app/auth.py diff --git a/api/app/auth_routes.py b/projects/ops-desk/api/app/auth_routes.py similarity index 100% rename from api/app/auth_routes.py rename to projects/ops-desk/api/app/auth_routes.py diff --git a/api/app/backup_codes.py b/projects/ops-desk/api/app/backup_codes.py similarity index 100% rename from api/app/backup_codes.py rename to projects/ops-desk/api/app/backup_codes.py diff --git a/api/app/billing_routes.py b/projects/ops-desk/api/app/billing_routes.py similarity index 100% rename from api/app/billing_routes.py rename to projects/ops-desk/api/app/billing_routes.py diff --git a/api/app/billing_store.py b/projects/ops-desk/api/app/billing_store.py similarity index 100% rename from api/app/billing_store.py rename to projects/ops-desk/api/app/billing_store.py diff --git a/api/app/carbonio_release_routes.py b/projects/ops-desk/api/app/carbonio_release_routes.py similarity index 100% rename from api/app/carbonio_release_routes.py rename to projects/ops-desk/api/app/carbonio_release_routes.py diff --git a/api/app/carbonio_release_store.py b/projects/ops-desk/api/app/carbonio_release_store.py similarity index 100% rename from api/app/carbonio_release_store.py rename to projects/ops-desk/api/app/carbonio_release_store.py diff --git a/api/app/cloudflare_dns.py b/projects/ops-desk/api/app/cloudflare_dns.py similarity index 100% rename from api/app/cloudflare_dns.py rename to projects/ops-desk/api/app/cloudflare_dns.py diff --git a/api/app/collectors/__init__.py b/projects/ops-desk/api/app/collectors/__init__.py similarity index 100% rename from api/app/collectors/__init__.py rename to projects/ops-desk/api/app/collectors/__init__.py diff --git a/api/app/collectors/base.py b/projects/ops-desk/api/app/collectors/base.py similarity index 100% rename from api/app/collectors/base.py rename to projects/ops-desk/api/app/collectors/base.py diff --git a/api/app/collectors/dns.py b/projects/ops-desk/api/app/collectors/dns.py similarity index 100% rename from api/app/collectors/dns.py rename to projects/ops-desk/api/app/collectors/dns.py diff --git a/api/app/collectors/vm112.py b/projects/ops-desk/api/app/collectors/vm112.py similarity index 100% rename from api/app/collectors/vm112.py rename to projects/ops-desk/api/app/collectors/vm112.py diff --git a/api/app/collectors/webmail.py b/projects/ops-desk/api/app/collectors/webmail.py similarity index 100% rename from api/app/collectors/webmail.py rename to projects/ops-desk/api/app/collectors/webmail.py diff --git a/api/app/crm_leads.py b/projects/ops-desk/api/app/crm_leads.py similarity index 100% rename from api/app/crm_leads.py rename to projects/ops-desk/api/app/crm_leads.py diff --git a/api/app/crm_routes.py b/projects/ops-desk/api/app/crm_routes.py similarity index 100% rename from api/app/crm_routes.py rename to projects/ops-desk/api/app/crm_routes.py diff --git a/api/app/desk_tickets.py b/projects/ops-desk/api/app/desk_tickets.py similarity index 100% rename from api/app/desk_tickets.py rename to projects/ops-desk/api/app/desk_tickets.py diff --git a/api/app/funnel_timing.py b/projects/ops-desk/api/app/funnel_timing.py similarity index 100% rename from api/app/funnel_timing.py rename to projects/ops-desk/api/app/funnel_timing.py diff --git a/api/app/integration_health.py b/projects/ops-desk/api/app/integration_health.py similarity index 100% rename from api/app/integration_health.py rename to projects/ops-desk/api/app/integration_health.py diff --git a/api/app/mail_notify.py b/projects/ops-desk/api/app/mail_notify.py similarity index 100% rename from api/app/mail_notify.py rename to projects/ops-desk/api/app/mail_notify.py diff --git a/api/app/main.py b/projects/ops-desk/api/app/main.py similarity index 100% rename from api/app/main.py rename to projects/ops-desk/api/app/main.py diff --git a/api/app/mfa_recovery_routes.py b/projects/ops-desk/api/app/mfa_recovery_routes.py similarity index 100% rename from api/app/mfa_recovery_routes.py rename to projects/ops-desk/api/app/mfa_recovery_routes.py diff --git a/api/app/mfa_recovery_store.py b/projects/ops-desk/api/app/mfa_recovery_store.py similarity index 100% rename from api/app/mfa_recovery_store.py rename to projects/ops-desk/api/app/mfa_recovery_store.py diff --git a/api/app/migration/__init__.py b/projects/ops-desk/api/app/migration/__init__.py similarity index 100% rename from api/app/migration/__init__.py rename to projects/ops-desk/api/app/migration/__init__.py diff --git a/api/app/migration/credentials.py b/projects/ops-desk/api/app/migration/credentials.py similarity index 100% rename from api/app/migration/credentials.py rename to projects/ops-desk/api/app/migration/credentials.py diff --git a/api/app/migration/gate.py b/projects/ops-desk/api/app/migration/gate.py similarity index 100% rename from api/app/migration/gate.py rename to projects/ops-desk/api/app/migration/gate.py diff --git a/api/app/migration/router.py b/projects/ops-desk/api/app/migration/router.py similarity index 100% rename from api/app/migration/router.py rename to projects/ops-desk/api/app/migration/router.py diff --git a/api/app/migration/runner.py b/projects/ops-desk/api/app/migration/runner.py similarity index 100% rename from api/app/migration/runner.py rename to projects/ops-desk/api/app/migration/runner.py diff --git a/api/app/migration/store.py b/projects/ops-desk/api/app/migration/store.py similarity index 100% rename from api/app/migration/store.py rename to projects/ops-desk/api/app/migration/store.py diff --git a/api/app/modules/__init__.py b/projects/ops-desk/api/app/modules/__init__.py similarity index 100% rename from api/app/modules/__init__.py rename to projects/ops-desk/api/app/modules/__init__.py diff --git a/api/app/modules/registry.py b/projects/ops-desk/api/app/modules/registry.py similarity index 100% rename from api/app/modules/registry.py rename to projects/ops-desk/api/app/modules/registry.py diff --git a/api/app/modules/routes.py b/projects/ops-desk/api/app/modules/routes.py similarity index 100% rename from api/app/modules/routes.py rename to projects/ops-desk/api/app/modules/routes.py diff --git a/api/app/modules/store.py b/projects/ops-desk/api/app/modules/store.py similarity index 100% rename from api/app/modules/store.py rename to projects/ops-desk/api/app/modules/store.py diff --git a/api/app/ntfy_notify.py b/projects/ops-desk/api/app/ntfy_notify.py similarity index 100% rename from api/app/ntfy_notify.py rename to projects/ops-desk/api/app/ntfy_notify.py diff --git a/api/app/permissions.py b/projects/ops-desk/api/app/permissions.py similarity index 100% rename from api/app/permissions.py rename to projects/ops-desk/api/app/permissions.py diff --git a/api/app/platform_role_catalog.py b/projects/ops-desk/api/app/platform_role_catalog.py similarity index 100% rename from api/app/platform_role_catalog.py rename to projects/ops-desk/api/app/platform_role_catalog.py diff --git a/api/app/push_service.py b/projects/ops-desk/api/app/push_service.py similarity index 100% rename from api/app/push_service.py rename to projects/ops-desk/api/app/push_service.py diff --git a/api/app/registration_routes.py b/projects/ops-desk/api/app/registration_routes.py similarity index 100% rename from api/app/registration_routes.py rename to projects/ops-desk/api/app/registration_routes.py diff --git a/api/app/registration_store.py b/projects/ops-desk/api/app/registration_store.py similarity index 100% rename from api/app/registration_store.py rename to projects/ops-desk/api/app/registration_store.py diff --git a/api/app/security_routes.py b/projects/ops-desk/api/app/security_routes.py similarity index 100% rename from api/app/security_routes.py rename to projects/ops-desk/api/app/security_routes.py diff --git a/api/app/security_store.py b/projects/ops-desk/api/app/security_store.py similarity index 100% rename from api/app/security_store.py rename to projects/ops-desk/api/app/security_store.py diff --git a/api/app/totp_util.py b/projects/ops-desk/api/app/totp_util.py similarity index 100% rename from api/app/totp_util.py rename to projects/ops-desk/api/app/totp_util.py diff --git a/api/app/vm112_domains.py b/projects/ops-desk/api/app/vm112_domains.py similarity index 100% rename from api/app/vm112_domains.py rename to projects/ops-desk/api/app/vm112_domains.py diff --git a/api/app/vm112_domains_routes.py b/projects/ops-desk/api/app/vm112_domains_routes.py similarity index 100% rename from api/app/vm112_domains_routes.py rename to projects/ops-desk/api/app/vm112_domains_routes.py diff --git a/api/app/vm112_purge_jobs.py b/projects/ops-desk/api/app/vm112_purge_jobs.py similarity index 100% rename from api/app/vm112_purge_jobs.py rename to projects/ops-desk/api/app/vm112_purge_jobs.py diff --git a/api/app/vm112_purge_stream.py b/projects/ops-desk/api/app/vm112_purge_stream.py similarity index 100% rename from api/app/vm112_purge_stream.py rename to projects/ops-desk/api/app/vm112_purge_stream.py diff --git a/api/app/wazuh_soc_store.py b/projects/ops-desk/api/app/wazuh_soc_store.py similarity index 100% rename from api/app/wazuh_soc_store.py rename to projects/ops-desk/api/app/wazuh_soc_store.py diff --git a/api/requirements.txt b/projects/ops-desk/api/requirements.txt similarity index 100% rename from api/requirements.txt rename to projects/ops-desk/api/requirements.txt diff --git a/api/tests/test_permissions_027.py b/projects/ops-desk/api/tests/test_permissions_027.py similarity index 100% rename from api/tests/test_permissions_027.py rename to projects/ops-desk/api/tests/test_permissions_027.py diff --git a/assets/accounts.js b/projects/ops-desk/assets/accounts.js similarity index 100% rename from assets/accounts.js rename to projects/ops-desk/assets/accounts.js diff --git a/assets/app.js b/projects/ops-desk/assets/app.js similarity index 100% rename from assets/app.js rename to projects/ops-desk/assets/app.js diff --git a/assets/auth.js b/projects/ops-desk/assets/auth.js similarity index 100% rename from assets/auth.js rename to projects/ops-desk/assets/auth.js diff --git a/assets/banner-icons-beneficios_1.png b/projects/ops-desk/assets/banner-icons-beneficios_1.png similarity index 100% rename from assets/banner-icons-beneficios_1.png rename to projects/ops-desk/assets/banner-icons-beneficios_1.png diff --git a/assets/billing-ui.js b/projects/ops-desk/assets/billing-ui.js similarity index 100% rename from assets/billing-ui.js rename to projects/ops-desk/assets/billing-ui.js diff --git a/assets/domain-orchestration.js b/projects/ops-desk/assets/domain-orchestration.js similarity index 100% rename from assets/domain-orchestration.js rename to projects/ops-desk/assets/domain-orchestration.js diff --git a/assets/email-migration.js b/projects/ops-desk/assets/email-migration.js similarity index 100% rename from assets/email-migration.js rename to projects/ops-desk/assets/email-migration.js diff --git a/assets/icons/menu/account.png b/projects/ops-desk/assets/icons/menu/account.png similarity index 100% rename from assets/icons/menu/account.png rename to projects/ops-desk/assets/icons/menu/account.png diff --git a/assets/icons/menu/admin.png b/projects/ops-desk/assets/icons/menu/admin.png similarity index 100% rename from assets/icons/menu/admin.png rename to projects/ops-desk/assets/icons/menu/admin.png diff --git a/assets/icons/menu/dashboard.png b/projects/ops-desk/assets/icons/menu/dashboard.png similarity index 100% rename from assets/icons/menu/dashboard.png rename to projects/ops-desk/assets/icons/menu/dashboard.png diff --git a/assets/icons/menu/events.png b/projects/ops-desk/assets/icons/menu/events.png similarity index 100% rename from assets/icons/menu/events.png rename to projects/ops-desk/assets/icons/menu/events.png diff --git a/assets/icons/menu/infra.png b/projects/ops-desk/assets/icons/menu/infra.png similarity index 100% rename from assets/icons/menu/infra.png rename to projects/ops-desk/assets/icons/menu/infra.png diff --git a/assets/icons/menu/leads.png b/projects/ops-desk/assets/icons/menu/leads.png similarity index 100% rename from assets/icons/menu/leads.png rename to projects/ops-desk/assets/icons/menu/leads.png diff --git a/assets/icons/menu/messages.png b/projects/ops-desk/assets/icons/menu/messages.png similarity index 100% rename from assets/icons/menu/messages.png rename to projects/ops-desk/assets/icons/menu/messages.png diff --git a/assets/icons/menu/overview.png b/projects/ops-desk/assets/icons/menu/overview.png similarity index 100% rename from assets/icons/menu/overview.png rename to projects/ops-desk/assets/icons/menu/overview.png diff --git a/assets/icons/menu/tenants.png b/projects/ops-desk/assets/icons/menu/tenants.png similarity index 100% rename from assets/icons/menu/tenants.png rename to projects/ops-desk/assets/icons/menu/tenants.png diff --git a/assets/icons/menu/tickets.png b/projects/ops-desk/assets/icons/menu/tickets.png similarity index 100% rename from assets/icons/menu/tickets.png rename to projects/ops-desk/assets/icons/menu/tickets.png diff --git a/assets/modules.js b/projects/ops-desk/assets/modules.js similarity index 100% rename from assets/modules.js rename to projects/ops-desk/assets/modules.js diff --git a/assets/qrcode.min.js b/projects/ops-desk/assets/qrcode.min.js similarity index 100% rename from assets/qrcode.min.js rename to projects/ops-desk/assets/qrcode.min.js diff --git a/assets/servicos.js b/projects/ops-desk/assets/servicos.js similarity index 100% rename from assets/servicos.js rename to projects/ops-desk/assets/servicos.js diff --git a/assets/styles.css b/projects/ops-desk/assets/styles.css similarity index 100% rename from assets/styles.css rename to projects/ops-desk/assets/styles.css diff --git a/projects/ops-desk/docker-compose.mvp.yml b/projects/ops-desk/docker-compose.mvp.yml new file mode 100644 index 0000000..9fe2c4e --- /dev/null +++ b/projects/ops-desk/docker-compose.mvp.yml @@ -0,0 +1,39 @@ +version: "3.8" +services: + redis: + image: redis:7-alpine + restart: unless-stopped + command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru + networks: [ops] + api: + build: ./api + restart: unless-stopped + env_file: .env + volumes: + - /var/lib/ligbox-ops-platform:/data + ports: + - "10.10.10.122:8080:8080" + depends_on: [redis] + networks: [ops] + worker: + build: ./worker + restart: unless-stopped + env_file: .env + environment: + OPS_API_URL: http://api:8080 + AUDIT_INTERVAL_SEC: "600" + LEAD_SYNC_INTERVAL_SEC: "900" + ONBOARD_STALE_HOURS: "24" + OPS_INTERNAL_TOKEN: ${OPS_INTERNAL_TOKEN} + depends_on: [redis, api] + networks: [ops] + frontend: + build: ./frontend + restart: unless-stopped + ports: + - "10.10.10.122:8091:80" + depends_on: [api] + networks: [ops] +networks: + ops: + driver: bridge diff --git a/frontend/Dockerfile b/projects/ops-desk/frontend/Dockerfile similarity index 100% rename from frontend/Dockerfile rename to projects/ops-desk/frontend/Dockerfile diff --git a/frontend/activate.html b/projects/ops-desk/frontend/activate.html similarity index 100% rename from frontend/activate.html rename to projects/ops-desk/frontend/activate.html diff --git a/frontend/assets/accounts.js b/projects/ops-desk/frontend/assets/accounts.js similarity index 100% rename from frontend/assets/accounts.js rename to projects/ops-desk/frontend/assets/accounts.js diff --git a/frontend/assets/agentic-ops.js b/projects/ops-desk/frontend/assets/agentic-ops.js similarity index 100% rename from frontend/assets/agentic-ops.js rename to projects/ops-desk/frontend/assets/agentic-ops.js diff --git a/frontend/assets/app.js b/projects/ops-desk/frontend/assets/app.js similarity index 100% rename from frontend/assets/app.js rename to projects/ops-desk/frontend/assets/app.js diff --git a/frontend/assets/auth.js b/projects/ops-desk/frontend/assets/auth.js similarity index 100% rename from frontend/assets/auth.js rename to projects/ops-desk/frontend/assets/auth.js diff --git a/frontend/assets/banner-icons-beneficios_1.png b/projects/ops-desk/frontend/assets/banner-icons-beneficios_1.png similarity index 100% rename from frontend/assets/banner-icons-beneficios_1.png rename to projects/ops-desk/frontend/assets/banner-icons-beneficios_1.png diff --git a/frontend/assets/billing-ui.js b/projects/ops-desk/frontend/assets/billing-ui.js similarity index 100% rename from frontend/assets/billing-ui.js rename to projects/ops-desk/frontend/assets/billing-ui.js diff --git a/frontend/assets/domain-orchestration.js b/projects/ops-desk/frontend/assets/domain-orchestration.js similarity index 100% rename from frontend/assets/domain-orchestration.js rename to projects/ops-desk/frontend/assets/domain-orchestration.js diff --git a/frontend/assets/email-migration.js b/projects/ops-desk/frontend/assets/email-migration.js similarity index 100% rename from frontend/assets/email-migration.js rename to projects/ops-desk/frontend/assets/email-migration.js diff --git a/frontend/assets/icons/menu/account.png b/projects/ops-desk/frontend/assets/icons/menu/account.png similarity index 100% rename from frontend/assets/icons/menu/account.png rename to projects/ops-desk/frontend/assets/icons/menu/account.png diff --git a/frontend/assets/icons/menu/admin.png b/projects/ops-desk/frontend/assets/icons/menu/admin.png similarity index 100% rename from frontend/assets/icons/menu/admin.png rename to projects/ops-desk/frontend/assets/icons/menu/admin.png diff --git a/frontend/assets/icons/menu/dashboard.png b/projects/ops-desk/frontend/assets/icons/menu/dashboard.png similarity index 100% rename from frontend/assets/icons/menu/dashboard.png rename to projects/ops-desk/frontend/assets/icons/menu/dashboard.png diff --git a/frontend/assets/icons/menu/events.png b/projects/ops-desk/frontend/assets/icons/menu/events.png similarity index 100% rename from frontend/assets/icons/menu/events.png rename to projects/ops-desk/frontend/assets/icons/menu/events.png diff --git a/frontend/assets/icons/menu/infra.png b/projects/ops-desk/frontend/assets/icons/menu/infra.png similarity index 100% rename from frontend/assets/icons/menu/infra.png rename to projects/ops-desk/frontend/assets/icons/menu/infra.png diff --git a/frontend/assets/icons/menu/leads.png b/projects/ops-desk/frontend/assets/icons/menu/leads.png similarity index 100% rename from frontend/assets/icons/menu/leads.png rename to projects/ops-desk/frontend/assets/icons/menu/leads.png diff --git a/frontend/assets/icons/menu/messages.png b/projects/ops-desk/frontend/assets/icons/menu/messages.png similarity index 100% rename from frontend/assets/icons/menu/messages.png rename to projects/ops-desk/frontend/assets/icons/menu/messages.png diff --git a/frontend/assets/icons/menu/overview.png b/projects/ops-desk/frontend/assets/icons/menu/overview.png similarity index 100% rename from frontend/assets/icons/menu/overview.png rename to projects/ops-desk/frontend/assets/icons/menu/overview.png diff --git a/frontend/assets/icons/menu/tenants.png b/projects/ops-desk/frontend/assets/icons/menu/tenants.png similarity index 100% rename from frontend/assets/icons/menu/tenants.png rename to projects/ops-desk/frontend/assets/icons/menu/tenants.png diff --git a/frontend/assets/icons/menu/tickets.png b/projects/ops-desk/frontend/assets/icons/menu/tickets.png similarity index 100% rename from frontend/assets/icons/menu/tickets.png rename to projects/ops-desk/frontend/assets/icons/menu/tickets.png diff --git a/frontend/assets/modules.js b/projects/ops-desk/frontend/assets/modules.js similarity index 100% rename from frontend/assets/modules.js rename to projects/ops-desk/frontend/assets/modules.js diff --git a/frontend/assets/qrcode.min.js b/projects/ops-desk/frontend/assets/qrcode.min.js similarity index 100% rename from frontend/assets/qrcode.min.js rename to projects/ops-desk/frontend/assets/qrcode.min.js diff --git a/frontend/assets/servicos.js b/projects/ops-desk/frontend/assets/servicos.js similarity index 100% rename from frontend/assets/servicos.js rename to projects/ops-desk/frontend/assets/servicos.js diff --git a/frontend/assets/styles.css b/projects/ops-desk/frontend/assets/styles.css similarity index 100% rename from frontend/assets/styles.css rename to projects/ops-desk/frontend/assets/styles.css diff --git a/frontend/banner-icons-beneficios_1.png b/projects/ops-desk/frontend/banner-icons-beneficios_1.png similarity index 100% rename from frontend/banner-icons-beneficios_1.png rename to projects/ops-desk/frontend/banner-icons-beneficios_1.png diff --git a/frontend/index.html b/projects/ops-desk/frontend/index.html similarity index 100% rename from frontend/index.html rename to projects/ops-desk/frontend/index.html diff --git a/frontend/login.html b/projects/ops-desk/frontend/login.html similarity index 100% rename from frontend/login.html rename to projects/ops-desk/frontend/login.html diff --git a/frontend/menu lateral__dashboard.png b/projects/ops-desk/frontend/menu lateral__dashboard.png similarity index 100% rename from frontend/menu lateral__dashboard.png rename to projects/ops-desk/frontend/menu lateral__dashboard.png diff --git a/frontend/nginx.conf b/projects/ops-desk/frontend/nginx.conf similarity index 100% rename from frontend/nginx.conf rename to projects/ops-desk/frontend/nginx.conf diff --git a/frontend/register.html b/projects/ops-desk/frontend/register.html similarity index 100% rename from frontend/register.html rename to projects/ops-desk/frontend/register.html diff --git a/app/__init__.py b/projects/ops-desk/legacy-app/__init__.py similarity index 100% rename from app/__init__.py rename to projects/ops-desk/legacy-app/__init__.py diff --git a/app/assist_catalog.py b/projects/ops-desk/legacy-app/assist_catalog.py similarity index 100% rename from app/assist_catalog.py rename to projects/ops-desk/legacy-app/assist_catalog.py diff --git a/app/assist_routes.py b/projects/ops-desk/legacy-app/assist_routes.py similarity index 100% rename from app/assist_routes.py rename to projects/ops-desk/legacy-app/assist_routes.py diff --git a/app/assist_store.py b/projects/ops-desk/legacy-app/assist_store.py similarity index 100% rename from app/assist_store.py rename to projects/ops-desk/legacy-app/assist_store.py diff --git a/app/audit_store.py b/projects/ops-desk/legacy-app/audit_store.py similarity index 100% rename from app/audit_store.py rename to projects/ops-desk/legacy-app/audit_store.py diff --git a/app/auth.py b/projects/ops-desk/legacy-app/auth.py similarity index 100% rename from app/auth.py rename to projects/ops-desk/legacy-app/auth.py diff --git a/app/auth_routes.py b/projects/ops-desk/legacy-app/auth_routes.py similarity index 100% rename from app/auth_routes.py rename to projects/ops-desk/legacy-app/auth_routes.py diff --git a/app/backup_codes.py b/projects/ops-desk/legacy-app/backup_codes.py similarity index 100% rename from app/backup_codes.py rename to projects/ops-desk/legacy-app/backup_codes.py diff --git a/app/billing_routes.py b/projects/ops-desk/legacy-app/billing_routes.py similarity index 100% rename from app/billing_routes.py rename to projects/ops-desk/legacy-app/billing_routes.py diff --git a/app/billing_store.py b/projects/ops-desk/legacy-app/billing_store.py similarity index 100% rename from app/billing_store.py rename to projects/ops-desk/legacy-app/billing_store.py diff --git a/app/carbonio_release_routes.py b/projects/ops-desk/legacy-app/carbonio_release_routes.py similarity index 100% rename from app/carbonio_release_routes.py rename to projects/ops-desk/legacy-app/carbonio_release_routes.py diff --git a/app/carbonio_release_store.py b/projects/ops-desk/legacy-app/carbonio_release_store.py similarity index 100% rename from app/carbonio_release_store.py rename to projects/ops-desk/legacy-app/carbonio_release_store.py diff --git a/app/cloudflare_dns.py b/projects/ops-desk/legacy-app/cloudflare_dns.py similarity index 100% rename from app/cloudflare_dns.py rename to projects/ops-desk/legacy-app/cloudflare_dns.py diff --git a/app/collectors/__init__.py b/projects/ops-desk/legacy-app/collectors/__init__.py similarity index 100% rename from app/collectors/__init__.py rename to projects/ops-desk/legacy-app/collectors/__init__.py diff --git a/app/collectors/base.py b/projects/ops-desk/legacy-app/collectors/base.py similarity index 100% rename from app/collectors/base.py rename to projects/ops-desk/legacy-app/collectors/base.py diff --git a/app/collectors/dns.py b/projects/ops-desk/legacy-app/collectors/dns.py similarity index 100% rename from app/collectors/dns.py rename to projects/ops-desk/legacy-app/collectors/dns.py diff --git a/app/collectors/vm112.py b/projects/ops-desk/legacy-app/collectors/vm112.py similarity index 100% rename from app/collectors/vm112.py rename to projects/ops-desk/legacy-app/collectors/vm112.py diff --git a/app/collectors/webmail.py b/projects/ops-desk/legacy-app/collectors/webmail.py similarity index 100% rename from app/collectors/webmail.py rename to projects/ops-desk/legacy-app/collectors/webmail.py diff --git a/app/crm_leads.py b/projects/ops-desk/legacy-app/crm_leads.py similarity index 100% rename from app/crm_leads.py rename to projects/ops-desk/legacy-app/crm_leads.py diff --git a/app/crm_routes.py b/projects/ops-desk/legacy-app/crm_routes.py similarity index 100% rename from app/crm_routes.py rename to projects/ops-desk/legacy-app/crm_routes.py diff --git a/app/desk_tickets.py b/projects/ops-desk/legacy-app/desk_tickets.py similarity index 100% rename from app/desk_tickets.py rename to projects/ops-desk/legacy-app/desk_tickets.py diff --git a/app/funnel_timing.py b/projects/ops-desk/legacy-app/funnel_timing.py similarity index 100% rename from app/funnel_timing.py rename to projects/ops-desk/legacy-app/funnel_timing.py diff --git a/app/integration_health.py b/projects/ops-desk/legacy-app/integration_health.py similarity index 100% rename from app/integration_health.py rename to projects/ops-desk/legacy-app/integration_health.py diff --git a/app/mail_notify.py b/projects/ops-desk/legacy-app/mail_notify.py similarity index 100% rename from app/mail_notify.py rename to projects/ops-desk/legacy-app/mail_notify.py diff --git a/app/main.py b/projects/ops-desk/legacy-app/main.py similarity index 100% rename from app/main.py rename to projects/ops-desk/legacy-app/main.py diff --git a/app/mfa_recovery_routes.py b/projects/ops-desk/legacy-app/mfa_recovery_routes.py similarity index 100% rename from app/mfa_recovery_routes.py rename to projects/ops-desk/legacy-app/mfa_recovery_routes.py diff --git a/app/mfa_recovery_store.py b/projects/ops-desk/legacy-app/mfa_recovery_store.py similarity index 100% rename from app/mfa_recovery_store.py rename to projects/ops-desk/legacy-app/mfa_recovery_store.py diff --git a/app/migration/__init__.py b/projects/ops-desk/legacy-app/migration/__init__.py similarity index 100% rename from app/migration/__init__.py rename to projects/ops-desk/legacy-app/migration/__init__.py diff --git a/app/migration/credentials.py b/projects/ops-desk/legacy-app/migration/credentials.py similarity index 100% rename from app/migration/credentials.py rename to projects/ops-desk/legacy-app/migration/credentials.py diff --git a/app/migration/gate.py b/projects/ops-desk/legacy-app/migration/gate.py similarity index 100% rename from app/migration/gate.py rename to projects/ops-desk/legacy-app/migration/gate.py diff --git a/app/migration/router.py b/projects/ops-desk/legacy-app/migration/router.py similarity index 100% rename from app/migration/router.py rename to projects/ops-desk/legacy-app/migration/router.py diff --git a/app/migration/runner.py b/projects/ops-desk/legacy-app/migration/runner.py similarity index 100% rename from app/migration/runner.py rename to projects/ops-desk/legacy-app/migration/runner.py diff --git a/app/migration/store.py b/projects/ops-desk/legacy-app/migration/store.py similarity index 100% rename from app/migration/store.py rename to projects/ops-desk/legacy-app/migration/store.py diff --git a/app/modules/__init__.py b/projects/ops-desk/legacy-app/modules/__init__.py similarity index 100% rename from app/modules/__init__.py rename to projects/ops-desk/legacy-app/modules/__init__.py diff --git a/app/modules/registry.py b/projects/ops-desk/legacy-app/modules/registry.py similarity index 100% rename from app/modules/registry.py rename to projects/ops-desk/legacy-app/modules/registry.py diff --git a/app/modules/routes.py b/projects/ops-desk/legacy-app/modules/routes.py similarity index 100% rename from app/modules/routes.py rename to projects/ops-desk/legacy-app/modules/routes.py diff --git a/app/modules/store.py b/projects/ops-desk/legacy-app/modules/store.py similarity index 100% rename from app/modules/store.py rename to projects/ops-desk/legacy-app/modules/store.py diff --git a/app/ntfy_notify.py b/projects/ops-desk/legacy-app/ntfy_notify.py similarity index 100% rename from app/ntfy_notify.py rename to projects/ops-desk/legacy-app/ntfy_notify.py diff --git a/app/permissions.py b/projects/ops-desk/legacy-app/permissions.py similarity index 100% rename from app/permissions.py rename to projects/ops-desk/legacy-app/permissions.py diff --git a/app/platform_role_catalog.py b/projects/ops-desk/legacy-app/platform_role_catalog.py similarity index 100% rename from app/platform_role_catalog.py rename to projects/ops-desk/legacy-app/platform_role_catalog.py diff --git a/app/push_service.py b/projects/ops-desk/legacy-app/push_service.py similarity index 100% rename from app/push_service.py rename to projects/ops-desk/legacy-app/push_service.py diff --git a/app/registration_routes.py b/projects/ops-desk/legacy-app/registration_routes.py similarity index 100% rename from app/registration_routes.py rename to projects/ops-desk/legacy-app/registration_routes.py diff --git a/app/registration_store.py b/projects/ops-desk/legacy-app/registration_store.py similarity index 100% rename from app/registration_store.py rename to projects/ops-desk/legacy-app/registration_store.py diff --git a/app/security_routes.py b/projects/ops-desk/legacy-app/security_routes.py similarity index 100% rename from app/security_routes.py rename to projects/ops-desk/legacy-app/security_routes.py diff --git a/app/security_store.py b/projects/ops-desk/legacy-app/security_store.py similarity index 100% rename from app/security_store.py rename to projects/ops-desk/legacy-app/security_store.py diff --git a/app/totp_util.py b/projects/ops-desk/legacy-app/totp_util.py similarity index 100% rename from app/totp_util.py rename to projects/ops-desk/legacy-app/totp_util.py diff --git a/app/vm112_domains.py b/projects/ops-desk/legacy-app/vm112_domains.py similarity index 100% rename from app/vm112_domains.py rename to projects/ops-desk/legacy-app/vm112_domains.py diff --git a/app/vm112_domains_routes.py b/projects/ops-desk/legacy-app/vm112_domains_routes.py similarity index 100% rename from app/vm112_domains_routes.py rename to projects/ops-desk/legacy-app/vm112_domains_routes.py diff --git a/app/vm112_purge_jobs.py b/projects/ops-desk/legacy-app/vm112_purge_jobs.py similarity index 100% rename from app/vm112_purge_jobs.py rename to projects/ops-desk/legacy-app/vm112_purge_jobs.py diff --git a/app/vm112_purge_stream.py b/projects/ops-desk/legacy-app/vm112_purge_stream.py similarity index 100% rename from app/vm112_purge_stream.py rename to projects/ops-desk/legacy-app/vm112_purge_stream.py diff --git a/app/vm123/__init__.py b/projects/ops-desk/legacy-app/vm123/__init__.py similarity index 100% rename from app/vm123/__init__.py rename to projects/ops-desk/legacy-app/vm123/__init__.py diff --git a/app/vm123/foss_client.py b/projects/ops-desk/legacy-app/vm123/foss_client.py similarity index 100% rename from app/vm123/foss_client.py rename to projects/ops-desk/legacy-app/vm123/foss_client.py diff --git a/app/vm123/odoo_client.py b/projects/ops-desk/legacy-app/vm123/odoo_client.py similarity index 100% rename from app/vm123/odoo_client.py rename to projects/ops-desk/legacy-app/vm123/odoo_client.py diff --git a/app/vm123/openpanel_client.py b/projects/ops-desk/legacy-app/vm123/openpanel_client.py similarity index 100% rename from app/vm123/openpanel_client.py rename to projects/ops-desk/legacy-app/vm123/openpanel_client.py diff --git a/app/vm123/provision.py b/projects/ops-desk/legacy-app/vm123/provision.py similarity index 100% rename from app/vm123/provision.py rename to projects/ops-desk/legacy-app/vm123/provision.py diff --git a/app/vm123/provision_store.py b/projects/ops-desk/legacy-app/vm123/provision_store.py similarity index 100% rename from app/vm123/provision_store.py rename to projects/ops-desk/legacy-app/vm123/provision_store.py diff --git a/app/vm123/role_map.py b/projects/ops-desk/legacy-app/vm123/role_map.py similarity index 100% rename from app/vm123/role_map.py rename to projects/ops-desk/legacy-app/vm123/role_map.py diff --git a/app/vm123/routes.py b/projects/ops-desk/legacy-app/vm123/routes.py similarity index 100% rename from app/vm123/routes.py rename to projects/ops-desk/legacy-app/vm123/routes.py diff --git a/app/wazuh_soc_store.py b/projects/ops-desk/legacy-app/wazuh_soc_store.py similarity index 100% rename from app/wazuh_soc_store.py rename to projects/ops-desk/legacy-app/wazuh_soc_store.py diff --git a/tests/test_permissions_027.py b/projects/ops-desk/tests/test_permissions_027.py similarity index 100% rename from tests/test_permissions_027.py rename to projects/ops-desk/tests/test_permissions_027.py diff --git a/worker/Dockerfile b/projects/ops-desk/worker/Dockerfile similarity index 100% rename from worker/Dockerfile rename to projects/ops-desk/worker/Dockerfile diff --git a/worker/audit_runner.py b/projects/ops-desk/worker/audit_runner.py similarity index 100% rename from worker/audit_runner.py rename to projects/ops-desk/worker/audit_runner.py diff --git a/worker/requirements.txt b/projects/ops-desk/worker/requirements.txt similarity index 100% rename from worker/requirements.txt rename to projects/ops-desk/worker/requirements.txt diff --git a/worker/worker.py b/projects/ops-desk/worker/worker.py similarity index 100% rename from worker/worker.py rename to projects/ops-desk/worker/worker.py diff --git a/projects/wizard/README.md b/projects/wizard/README.md new file mode 100644 index 0000000..e583c1e --- /dev/null +++ b/projects/wizard/README.md @@ -0,0 +1,28 @@ +# Wizard — VM112 (Onboard / Mail) + +**IP:** `10.10.10.112` · SSH WAN `:2512` + +## Conteúdo + +``` +deploy/ + vm112-spec022/ # Scripts Carbonio (admin, delete account) + vm112-wizard-security/ # Segurança wizard +``` + +## Specs relacionadas (raiz `specs/`) + +| Spec | Nome | +|------|------| +| 001 | webhook-vm112-integration | +| 017 | vm112-domain-orchestration | +| 022 | carbonio-account-exists-release | +| 025 | wizard-onboarding-continuity | +| 026 | purge-traefik-validation | +| 010 | desk-assist-takeover (fases VM112) | + +## Integração + +A **Ops Desk API** (`projects/ops-desk/`) orquestra VM112 via módulos `vm112_*` — não duplicar lógica aqui. + +→ [Ficha VM112](../../docs/vms/VM112.md) diff --git a/deploy/vm112-spec022/admin_accounts.py b/projects/wizard/deploy/vm112-spec022/admin_accounts.py similarity index 100% rename from deploy/vm112-spec022/admin_accounts.py rename to projects/wizard/deploy/vm112-spec022/admin_accounts.py diff --git a/deploy/vm112-spec022/delete_carbonio_account.py b/projects/wizard/deploy/vm112-spec022/delete_carbonio_account.py similarity index 100% rename from deploy/vm112-spec022/delete_carbonio_account.py rename to projects/wizard/deploy/vm112-spec022/delete_carbonio_account.py diff --git a/deploy/vm112-wizard-security/README.md b/projects/wizard/deploy/vm112-wizard-security/README.md similarity index 100% rename from deploy/vm112-wizard-security/README.md rename to projects/wizard/deploy/vm112-wizard-security/README.md diff --git a/deploy/vm112-wizard-security/security_audit.py b/projects/wizard/deploy/vm112-wizard-security/security_audit.py similarity index 100% rename from deploy/vm112-wizard-security/security_audit.py rename to projects/wizard/deploy/vm112-wizard-security/security_audit.py diff --git a/deploy/vm112-wizard-security/security_webhook_client.py b/projects/wizard/deploy/vm112-wizard-security/security_webhook_client.py similarity index 100% rename from deploy/vm112-wizard-security/security_webhook_client.py rename to projects/wizard/deploy/vm112-wizard-security/security_webhook_client.py diff --git a/deploy/vm112-wizard-security/traefik-csp-headers.example.yml b/projects/wizard/deploy/vm112-wizard-security/traefik-csp-headers.example.yml similarity index 100% rename from deploy/vm112-wizard-security/traefik-csp-headers.example.yml rename to projects/wizard/deploy/vm112-wizard-security/traefik-csp-headers.example.yml diff --git a/worker b/worker new file mode 120000 index 0000000..8d7db84 --- /dev/null +++ b/worker @@ -0,0 +1 @@ +projects/ops-desk/worker \ No newline at end of file