[CORE] Aggiunto integrazione agile-services: istruzioni + CLAUDE.md aggiornato
This commit is contained in:
parent
52fd45fac9
commit
4bd2326910
16
CLAUDE.md
16
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.
|
||||
|
||||
|
||||
464
agile-services-istructio.md
Normal file
464
agile-services-istructio.md
Normal file
@ -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": "<h1>Ciao {{firstName}}!</h1>"},
|
||||
{"delay": 3, "subject": "Come iniziare la tua prima campagna", "body": "..."}
|
||||
]
|
||||
}'
|
||||
|
||||
# Trigger sequenza per un lead
|
||||
curl -X POST http://localhost:4004/sequences/1/trigger \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"leadId": "lead_123", "customData": {"firstName": "Mario"}}'
|
||||
|
||||
# Stats sequenza
|
||||
curl http://localhost:4004/sequences/1/stats
|
||||
```
|
||||
|
||||
#### `analytics-ms` — 🔄 In Dev — porta 4005
|
||||
|
||||
Dashboard metriche multi-prodotto con alerting e report automatici.
|
||||
|
||||
```bash
|
||||
cd /projects/agile-services/analytics-ms && docker-compose up -d
|
||||
|
||||
# Traccia metrica
|
||||
curl -X POST http://localhost:4005/metrics/track \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"tenantCode": "trpg", "productId": "trpg-pro", "metric": "new_registration", "value": 1}'
|
||||
|
||||
# Dashboard overview
|
||||
curl http://localhost:4005/dashboard/overview
|
||||
|
||||
# Dashboard prodotto
|
||||
curl http://localhost:4005/dashboard/product/trpg-pro
|
||||
|
||||
# Configura alert
|
||||
curl -X POST http://localhost:4005/alerts/configure \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"tenantCode": "trpg", "metric": "churn_rate", "operator": "gt", "threshold": 5}'
|
||||
```
|
||||
|
||||
#### `ai-sdr-ms` — 🔄 In Dev — porta 4006
|
||||
|
||||
Outbound automation AI-powered per prospecting e outreach personalizzato.
|
||||
|
||||
```bash
|
||||
cd /projects/agile-services/ai-sdr-ms && docker-compose up -d
|
||||
|
||||
# Crea campagna outbound
|
||||
curl -X POST http://localhost:4006/campaigns/outbound \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Outreach Q1 2026",
|
||||
"productId": "trpg-pro",
|
||||
"icp": {"roles": ["Game Master", "Dungeon Master"], "locations": ["IT"]},
|
||||
"prospectCount": 200,
|
||||
"outreachMethod": "email",
|
||||
"messageTemplate": "Ciao {{firstName}}, gestisci sessioni TRPG?",
|
||||
"schedule": {"dailyLimit": 30, "timezone": "Europe/Rome"}
|
||||
}'
|
||||
|
||||
# Prospect qualificati
|
||||
curl http://localhost:4006/prospects/qualified?productId=trpg-pro
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Autenticazione
|
||||
|
||||
I **Core Services (PHP)** richiedono autenticazione su ogni chiamata:
|
||||
|
||||
```http
|
||||
X-API-Key: <tenant_api_key>
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
I **Marketing Services (Node.js)** sono in sviluppo — l'autenticazione `X-API-Key` verrà aggiunta. Attualmente accettano chiamate senza auth ma isolano i dati tramite `tenant_code` nel body/query.
|
||||
|
||||
---
|
||||
|
||||
## 7. Avviare Tutti i Microservizi
|
||||
|
||||
```bash
|
||||
# 1. Infrastruttura (OBBLIGATORIO per primo)
|
||||
cd /projects/agile-services/infrastructure/docker-compose && docker-compose up -d
|
||||
|
||||
# 2. Core Services PHP
|
||||
cd /projects/agile-services/vault-ms && docker-compose up -d
|
||||
cd /projects/agile-services/payment-ms && docker-compose up -d
|
||||
|
||||
# 3. Marketing Services Node.js
|
||||
cd /projects/agile-services/content-generation-ms && docker-compose up -d
|
||||
cd /projects/agile-services/ads-orchestrator-ms && docker-compose up -d
|
||||
cd /projects/agile-services/crm-pipeline-ms && docker-compose up -d
|
||||
cd /projects/agile-services/email-automation-ms && docker-compose up -d
|
||||
cd /projects/agile-services/analytics-ms && docker-compose up -d
|
||||
cd /projects/agile-services/ai-sdr-ms && docker-compose up -d
|
||||
|
||||
# Verifica health
|
||||
curl http://localhost:8001/health # vault-ms
|
||||
curl http://localhost:4001/health # content-generation-ms
|
||||
curl http://localhost:4004/health # email-automation-ms
|
||||
curl http://localhost:4005/health # analytics-ms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Creare un Nuovo Microservizio Specifico
|
||||
|
||||
Se la funzionalità necessaria **non esiste** in AgileServices (verifica su `SERVICES.md`):
|
||||
|
||||
```bash
|
||||
cd /projects/agile-services
|
||||
./scripts/create-microservice.sh --name="trpg-character-ms" --port=4200
|
||||
```
|
||||
|
||||
### Convenzioni obbligatorie
|
||||
|
||||
| Aspetto | Regola | Esempio |
|
||||
|---------|--------|---------|
|
||||
| Nome | `kebab-case` + suffisso `-ms` | `trpg-character-ms` |
|
||||
| Porta | 4200+ per servizi custom | 4200, 4201, ... |
|
||||
| Endpoint | `/kebab-case` | `/character-sheets` |
|
||||
| Env var | `UPPER_SNAKE_CASE` | `CHARACTER_MS_URL` |
|
||||
| Database | 1 DB per servizio | `trpg_character_db` |
|
||||
| Health | `GET /health` obbligatorio | vedi sotto |
|
||||
| Errori | formato standard | vedi sotto |
|
||||
| Test | coverage >= 70% | `npm test` |
|
||||
|
||||
```json
|
||||
// GET /health — risposta standard obbligatoria
|
||||
{
|
||||
"status": "ok",
|
||||
"service": "trpg-character-ms",
|
||||
"version": "1.0.0",
|
||||
"uptime": 12345,
|
||||
"dependencies": { "database": "ok" }
|
||||
}
|
||||
|
||||
// Errore standard obbligatorio
|
||||
{
|
||||
"success": false,
|
||||
"error": { "code": "NOT_FOUND", "message": "Personaggio non trovato" }
|
||||
}
|
||||
```
|
||||
|
||||
### docker-compose.yml del nuovo servizio
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
services:
|
||||
trpg-character-ms:
|
||||
build: .
|
||||
container_name: trpg-character-ms
|
||||
ports:
|
||||
- "4200:4200"
|
||||
environment:
|
||||
PORT: 4200
|
||||
DB_HOST: agile-postgres
|
||||
DB_PORT: 5432
|
||||
DB_NAME: trpg_character_db
|
||||
DB_USER: agile
|
||||
DB_PASSWORD: AgilePostgres2026!
|
||||
networks:
|
||||
- agile-services-network
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
agile-services-network:
|
||||
external: true
|
||||
name: agile-services-network
|
||||
```
|
||||
|
||||
### Dopo aver creato il servizio — obbligatorio
|
||||
|
||||
1. Aggiungere riga in `/projects/agile-services/SERVICES.md`
|
||||
2. Aggiungere `CREATE DATABASE trpg_character_db;` in `init-postgres.sql`
|
||||
3. Creare `README.md` con documentazione API
|
||||
4. Aggiornare `/projects/agile-services/progetto.md`
|
||||
|
||||
---
|
||||
|
||||
## 9. Strategia Database Multi-Tenant
|
||||
|
||||
| Modalità | Usare quando | Isolamento |
|
||||
|---------|-------------|-----------|
|
||||
| **Shared** | Startup, tenant piccoli | `tenant_code` column in ogni tabella |
|
||||
| **Dedicated** | Enterprise, compliance | DB separato per tenant |
|
||||
| **Hybrid** | Mix di piani | Shared per small, dedicated per enterprise |
|
||||
|
||||
La modalità viene scelta al setup del tenant tramite `create-tenant.sh`.
|
||||
|
||||
---
|
||||
|
||||
## 10. Comandi Claude Code
|
||||
|
||||
```
|
||||
//ms-list Lista tutti i microservizi con status
|
||||
//ms-status Health check di tutti i microservizi in esecuzione
|
||||
//ms-create Wizard per creare un nuovo microservizio
|
||||
//tenant-create Crea un nuovo tenant (con pre-flight checks)
|
||||
//wizard Wizard configurazione microservizio specifico
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Checklist Integrazione Nuovo Progetto
|
||||
|
||||
- [ ] Infrastruttura avviata (`docker-compose up -d` nella cartella infra)
|
||||
- [ ] Tenant creato con `create-tenant.sh` — registrato nel DB, non solo in JSON
|
||||
- [ ] API key salvata nel `.env` del progetto
|
||||
- [ ] Letti `SERVICES.md` e `progetto.md` per capire cosa esiste già
|
||||
- [ ] Microservizi necessari avviati (ognuno nella propria cartella)
|
||||
- [ ] Eventuali nuovi MS creati con porte 4200+
|
||||
- [ ] Nuovi MS documentati in `SERVICES.md` e `progetto.md`
|
||||
- [ ] Credenziali sensibili salvate in `vault-ms`, non in `.env`
|
||||
- [ ] `GET /health` implementato su ogni nuovo servizio
|
||||
- [ ] Test coverage >= 70%
|
||||
|
||||
---
|
||||
|
||||
## 12. Riferimenti Rapidi
|
||||
|
||||
| Documento | Percorso |
|
||||
|-----------|---------|
|
||||
| Registry completo servizi | `/projects/agile-services/SERVICES.md` |
|
||||
| Stato progetto e decisioni | `/projects/agile-services/progetto.md` |
|
||||
| Infrastructure docker-compose | `/projects/agile-services/infrastructure/docker-compose/` |
|
||||
| Init MySQL (tenant + core DB) | `infrastructure/docker-compose/init-databases.sql` |
|
||||
| Init PostgreSQL (marketing DB) | `infrastructure/docker-compose/init-postgres.sql` |
|
||||
| Script crea tenant | `/projects/agile-services/scripts/create-tenant.sh` |
|
||||
| Script crea microservizio | `/projects/agile-services/scripts/create-microservice.sh` |
|
||||
|
||||
**Supporto**: dev@agile.software | Slack: #agile-services
|
||||
|
||||
---
|
||||
|
||||
*Agile Technology SRL — © 2026 — Tutti i diritti riservati*
|
||||
*Versione 1.1 — Aggiornato: 2026-02-17*
|
||||
Loading…
Reference in New Issue
Block a user