diff --git a/CLAUDE.md b/CLAUDE.md index 4d33594..822e57f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,6 +21,22 @@ Target: PMI, Enterprise, Consulenti/CISO. - VCS: Gitea (git.certisource.it) - URL Produzione: https://certisource.it/nis2/ + +## Microservizi Condivisi (agile-services) + +**IMPORTANTE**: Questo progetto utilizza i microservizi condivisi di **agile-services**, montati in `/projects/agile-services` (sola lettura). + +### Regole di integrazione +1. **Leggere SEMPRE** `agile-services-istructio.md` nella root del progetto per capire come interagire con i servizi +2. **NON modificare** i file in `/projects/agile-services` (montato read-only) +3. I servizi disponibili includono: autenticazione, database, messaging, monitoring, API gateway +4. Le credenziali di accesso ai servizi sono documentate in `agile-services-istructio.md` +5. Ogni nuovo servizio creato per NIS2 deve essere registrato anche in agile-services per essere riutilizzabile + +### Accesso +- Path nel container: `/projects/agile-services` (read-only) +- File istruzioni: `./agile-services-istructio.md` (nella root del progetto) + ## Regola Fondamentale Il progetto NIS2 Agile e' COMPLETAMENTE ISOLATO dagli altri applicativi (CertiSource, AGILE_DFM). Database dedicato, utente dedicato, path dedicati. Non condividere MAI credenziali tra applicativi. diff --git a/agile-services-istructio.md b/agile-services-istructio.md new file mode 100644 index 0000000..fe19898 --- /dev/null +++ b/agile-services-istructio.md @@ -0,0 +1,464 @@ +# AgileServices — Istruzioni Operative per Progetti Integrati + +> **Questo file deve essere copiato nella root di ogni progetto che usa AgileServices.** +> Serve a Claude (e al team) per capire immediatamente come integrare e ampliare la piattaforma. +> +> Agile Technology SRL — Versione 1.1 — 2026-02-17 + +--- + +## 1. Cos'è AgileServices + +AgileServices è la piattaforma di **microservizi condivisi e riutilizzabili** di Agile Technology SRL. +Tutti i progetti interni (CertiSource Pro, MadeByCloud Pro, TRPG Pro, ecc.) usano questi servizi come building blocks. + +**Non duplicare mai** funzionalità già esistenti — cerca prima in AgileServices. + +``` +Percorso sorgente: /projects/agile-services/ +Registry servizi: /projects/agile-services/SERVICES.md +Stato progetto: /projects/agile-services/progetto.md +Questo file: /projects/agile-services/agile-services-istructio.md +``` + +--- + +## 2. Regola Fondamentale + +``` +PRIMA di costruire qualcosa → leggi SERVICES.md +SE esiste già → usalo con l'API key del tuo tenant +SE non esiste → crealo in /projects/agile-services/ e documentalo in SERVICES.md +MAI creare codice duplicato in un progetto specifico +``` + +--- + +## 3. Prerequisito: Avviare l'Infrastruttura + +**OBBLIGATORIO** — senza questo nessun microservizio funziona. + +```bash +cd /projects/agile-services/infrastructure/docker-compose +docker-compose up -d +``` + +Questo avvia (una volta sola, poi rimane attivo): + +| Container | Host:Porta | Credenziali | +|-----------|-----------|------------| +| `agile-mysql` | `localhost:3306` | root / AgileRoot2026! | +| `agile-postgres` | `localhost:5433` | agile / AgilePostgres2026! | +| `agile-redis` | `localhost:6379` | pass: AgileRedis2026! | +| `agile-rabbitmq` | `localhost:5672` | agile / AgileQueue2026! | +| `agile-rabbitmq` UI | `localhost:15672` | agile / AgileQueue2026! | +| `agile-kong` proxy | `localhost:8000` | — | +| `agile-kong` admin | `localhost:8001` | — | +| `agile-grafana` | `localhost:3000` | admin / AgileGrafana2026! | +| `agile-mailpit` | `localhost:8025` | — | + +### Network Docker + +Tutti i microservizi condividono la rete `agile-services-network`. +Nel `docker-compose.yml` di ogni MS dichiarare sempre: + +```yaml +networks: + agile-services-network: + external: true + name: agile-services-network +``` + +--- + +## 4. Tenant del Progetto Corrente + +Ogni progetto ha un **tenant dedicato** con la propria API key. + +### Tenant pre-registrati (dev) + +| Progetto | Tenant Code | API Key dev | +|---------|------------|-------------| +| CertiSource Pro | `certisource` | `certisource_ak_dev_1234567890abcdef` | +| MadeByCloud Pro | `madebycloud` | `madebycloud_ak_dev_abcdef1234567890` | +| TRPG Pro | `trpg` | `trpg_ak_dev_trpg1234567890abcd` | + +### Creare un nuovo tenant + +```bash +# Richiede infrastruttura attiva (agile-mysql deve girare) +cd /projects/agile-services +./scripts/create-tenant.sh +# → inserire: tenant code, nome, piano, modalità database +# → output: API key da salvare nel .env del progetto +``` + +### Variabili d'ambiente nel progetto + +```env +# AgileServices — aggiungere nel .env del progetto +AGILE_TENANT_CODE=trpg +AGILE_API_KEY=trpg_ak_dev_trpg1234567890abcd + +# URL microservizi usati da questo progetto (solo quelli necessari) +VAULT_MS_URL=http://localhost:8001 +PAYMENT_MS_URL=http://localhost:8003 +CONTENT_GENERATION_MS_URL=http://localhost:4001 +EMAIL_AUTOMATION_MS_URL=http://localhost:4004 +ANALYTICS_MS_URL=http://localhost:4005 +``` + +--- + +## 5. Microservizi Disponibili + +### 5.1 Core Services (PHP — MySQL — porte 8001-8011) + +#### `vault-ms` — ✅ Pronto — porta 8001 + +Gestione credenziali criptate AES-256-GCM. Usa questo per salvare API key di provider esterni, password, token. **Non mettere mai segreti nel `.env` applicativo.** + +```bash +# Avvia +cd /projects/agile-services/vault-ms && docker-compose up -d + +# Crea credenziale +curl -X POST http://localhost:8001/v1/credentials \ + -H "X-API-Key: trpg_ak_dev_trpg1234567890abcd" \ + -H "Content-Type: application/json" \ + -d '{"provider": "stripe", "key": "secret_key", "value": "sk_test_..."}' + +# Leggi credenziale +curl http://localhost:8001/v1/credentials?provider=stripe \ + -H "X-API-Key: trpg_ak_dev_trpg1234567890abcd" +``` + +#### `payment-ms` — 🔄 In Dev — porta 8003 + +Gateway pagamenti (Revolut). Usa vault-ms per le credenziali del provider. + +```bash +cd /projects/agile-services/payment-ms && docker-compose up -d +``` + +#### Altri core services — 📋 Planned + +`document-ms` (8002), `certificate-ms` (8004), `subscription-ms` (8005), `billing-ms` (8006), `practice-ms` (8007), `company-ms` (8008), `supplier-ms` (8009), `investigation-ms` (8010), `whatsapp-ms` (8011) + +--- + +### 5.2 Marketing Services (Node.js — PostgreSQL — porte 4001-4006) + +#### `content-generation-ms` — 🔄 In Dev — porta 4001 + +Generazione contenuti AI con GPT-4. Supporta brand voice multipli e template. + +```bash +cd /projects/agile-services/content-generation-ms && docker-compose up -d + +# Genera contenuto +curl -X POST http://localhost:4001/generate \ + -H "Content-Type: application/json" \ + -d '{ + "brandVoice": "trpg", + "template": "email", + "input": {"topic": "Nuova campagna TRPG", "painPoint": "sessioni difficili da organizzare"}, + "count": 3, + "language": "it" + }' + +# Crea brand voice +curl -X POST http://localhost:4001/brand-voices \ + -H "Content-Type: application/json" \ + -d '{"name": "TRPG Pro", "industry": "gaming", "tone": ["professionale", "appassionato"]}' +``` + +#### `ads-orchestrator-ms` — 🔄 In Dev — porta 4002 + +Gestione campagne ads multi-canale (Meta, Google, LinkedIn). + +```bash +cd /projects/agile-services/ads-orchestrator-ms && docker-compose up -d + +# Crea campagna +curl -X POST http://localhost:4002/campaigns \ + -H "Content-Type: application/json" \ + -d '{ + "productId": "trpg-pro", + "name": "Lancio Winter Campaign", + "platform": "meta", + "objective": "conversion", + "budget": {"total": 500, "daily": 50}, + "targeting": {"locations": ["IT"], "ageRange": [25, 45]} + }' + +# Performance campagna +curl http://localhost:4002/campaigns/1/performance +``` + +#### `crm-pipeline-ms` — 🔄 In Dev — porta 4003 + +CRM lead pipeline interno. Sostituisce SuperAGI. + +```bash +cd /projects/agile-services/crm-pipeline-ms && docker-compose up -d + +# Crea lead +curl -X POST http://localhost:4003/leads \ + -H "Content-Type: application/json" \ + -d '{"email": "user@example.com", "firstName": "Mario", "source": "meta_ads", "productId": "trpg-pro"}' + +# Pipeline overview +curl http://localhost:4003/pipelines/trpg-pro +``` + +#### `email-automation-ms` — 🔄 In Dev — porta 4004 + +Sequenze email automatiche con Handlebars templates e trigger-based enrollment. + +```bash +cd /projects/agile-services/email-automation-ms && docker-compose up -d + +# Crea sequenza onboarding +curl -X POST http://localhost:4004/sequences \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Onboarding TRPG Pro", + "productId": "trpg-pro", + "trigger": "registration", + "emails": [ + {"delay": 0, "subject": "Benvenuto in TRPG Pro!", "body": "