Evidence: Go-Live Readiness — 2026-03-31
Testes Backend
- Total: 548 passed, 1 skipped, 0 failed
- Tempo de execucao: 205s (3m25s)
- Runtime: Python 3.12.3, pytest-8.3.4
Modulos cobertos (28 ficheiros de teste)
| Modulo | Ficheiro |
|---|---|
| Admin Dashboard + Stripe overview | test_admin.py |
| Afiliados (auth, admin, portal) | test_affiliates.py |
| Audit log + entity history | test_audit.py |
| Auth (login admin/client, register, refresh, me) | test_auth.py |
| Billing (checkout, subscriptions, invoices, payments, refunds) | test_billing.py |
| Clientes (CRUD, search, auth) | test_clients.py |
| Documentacao publica (topics, pages, search, i18n) | test_docs.py |
| Dominios (Enom check/register, DNS) | test_domains.py |
| Email log | test_email_log.py |
| Fiscal (Moloni invoices, credit notes) | test_fiscal.py |
| Invoicing proprio | test_invoicing.py |
| Moloni OAuth2 + API | test_moloni.py |
| Notificacoes (Zeptomail, templates, sysadmin) | test_notifications.py |
| Onboarding (tours, progresso, idempotencia) | test_onboarding.py |
| Portal cliente (dashboard, servicos, faturas) | test_portal.py |
| Produtos + planos + addon slots | test_products.py |
| Provisioning (rotas HTTP) | test_provisioning.py |
| Provisioning SDK (EventBus, BookingSDK, VirtualStore, slugify) | test_provisioning_sdk.py |
| Orcamentos (quotes, accept, convert) | test_quotes.py |
| Relatorios | test_reports.py |
| Services (Cloudflare, Hetzner) | test_services.py |
| Configuracoes + moedas | test_settings.py |
| Stripe Connect (onboard, status, dashboard, payout, webhook) | test_stripe_connect.py |
| Sugestoes | test_suggestions.py |
| Tickets + replies + departments | test_tickets.py |
| Website publico (produtos, contacto) | test_website.py |
TypeScript
- Resultado: 0 erros
- Versao: TypeScript 5.9.3
Build Frontend
- Resultado: Sucesso
- Bundle: 756 kB (gzip 192 kB)
Pipeline CI
- Pipeline 1601: validate ✅ build ✅ test ✅ release ✅ deploy ✅ verify ✅ promote:dev-to-uat ✅
- E2E: 4 fixes aplicados (auth logout, ticket form, cancel modal, strict locator)
Commits desta Sessao (29 commits)
6bebef3 fix(provisioning): corrigir import SDK booking + 47 testes
52a9559 chore(stack): CVE python-multipart + i18next v26 + nginx 1.27 + role tester
26d79f1 fix(ci): corrigir pipeline — pytest 8.3.4 + remover focusRingColor TS
0abc359 fix(vendor): iaw-sdk como ficheiros normais (nao submodule)
edeaef4 fix(docker): actualizar Dockerfile para Python 3.12 + vendor iaw-sdk
a9732c8 feat(config): flag DEMO_DATA_ENABLED para controlar dados de teste
51ba855 feat(rgpd): export dados pessoais + anonymize_db.py + evidence
9d6e2e5 fix(rbac): enforcar permissoes granulares nos endpoints
a8212dd feat(auth): criar role tester no RBAC
86110ad fix(i18n): eliminar strings hardcoded em AdminEmailLog e GuidePage
0ad3a0d fix(e2e): corrigir 4 testes falhando (selectores bilingues)
1df93d4 test(backend): testes notifications (29) + onboarding (19)
9bcc589 fix(security): JWT secret guard + pytest collection fix
f98b987 feat(stripe): StripeAccountActivatedEvent + _sync_to_store real + fix path
a3f2d0d feat(provisioning): BookingSystem via SDK + VirtualStore via NATS
f8dde4d feat(sdk): instalar iaw-sdk + EventBus NATS + config em todos os ambientes
ed5f066 docs: actualizar CLAUDE.md com stack correcta e credenciais
740da8e feat(docs): automacao E2E→docs + 7 guias estaticos + fix cron
ed6fe88 fix(fiscal): corrigir strings hardcoded PT + layout AdminLayout
199a1a0 feat(onboarding): backend API de progresso dos tours
fb3f32f feat(onboarding): sistema de tour guide com intro.js
c3baa8a fix(migration): corrigir Moloni API v1 + campos obrigatorios insert
93bdf90 fix(migration): filtrar clientes E2E no sync Stripe/Moloni + DATA_DIR configuravel
a182f37 feat(migration): adicionar Steps 9-11 ao migrate_whmcs.py
fc0c331 docs(guides): registar 14 suites em falta + paginas estaticas tester
1b25ef2 feat(auth): conta tester Catia + create_admin com suporte a roles
c4910ca feat(admin): pagina de gestao de equipa com permissoes
57a5d0a feat(auth): endpoints CRUD para gestao de admin users
e2b9a42 chore(config): centralizar SYSADMIN_EMAIL em config.py e compose files
2cf9ee7 feat(auth): sistema de permissoes granulares por utilizador admin
Funcionalidades Implementadas
Gestao e RBAC
- 14 permissoes granulares por utilizador
- AdminTeam — gestao de equipa com toggles de permissoes
- Role tester no RBAC (nivel 3, financials off)
- RBAC enforcement em todos os endpoints (require_permission)
- Conta Catia (tester, financials off)
SDK + NATS
- iaw-sdk instalado + EventBus NATS com fallback JSONL
- BookingSystemProvisioner via SDK (circuit breaker + retry)
- VirtualStoreProvisioner via NATS (novo)
- _sync_to_store real (era stub)
- StripeAccountActivatedEvent publicado
Documentacao + Tour Guide
- Tour guide intro.js — 19 tours (13 admin + 6 portal)
- HelpButton flutuante com deteccao de pagina
- 14 suites registadas no populate_docs + 8 guias estaticos
- Automacao E2E→docs (workflow + fix cron)
Seguranca + RGPD
- JWT secret guard (bloqueia prod sem secret)
- RGPD export dados pessoais (Art. 20)
- anonymize_db.py para staging
- DEMO_DATA_ENABLED flag
- 0 strings hardcoded (AdminFiscal, EmailLog, GuidePage)
Migracao WHMCS
- Steps 9-11 (dominios, Stripe, Moloni)
- Testado em dev: 17 clientes, 133 facturas, 6 dominios
Infraestrutura
- Dockerfile Python 3.12
- CVE python-multipart corrigido
- i18next v26, nginx 1.27-alpine
- Pipeline CI verde (promote:dev-to-uat ✅)
Testes
- 548 backend tests (0 failed)
- TypeScript 0 erros
- 4 E2E fixes (selectores bilingues)