Commit impegno journey

non so se è meglio mettere ripo hjourney -> step e ogni step deve avere engagement qualcosa che comprenda il ruolo il costo e il guadagno in euro e in dash e che risultato porta magari per un altra tappa, il tempo necessario, l’ordine in cui essere eseguito, cosa essere eseguito, importante urgente l’attenzione necessaria, e l’energia che serve faccine felice dolore… ma io vorrei sottolineare sia l’azione registrata ma prima l’impegno progettato per raggiungere un journey che poi verrà seguita e registrata anche da altri!

Grande — ti propongo una struttura chiara che mette prima l’impegno progettato e poi l’azione registrata, includendo ruoli, costi/ricavi (EUR & DASH), priorità, energia/attenzione, tempo e collegamenti tra tappe. È pensata per essere seguita e registrata anche da altri.

Struttura concettuale

Journey → il percorso (template o istanza).

Step → la tappa del journey (ciò che va fatto).

Engagement (template di ingaggio) → come quella tappa coinvolge i ruoli e l’economia.

Pledge (impegno progettato) → la promessa/programma di esecuzione per una persona/gruppo.

Commit (azione registrata) → il fatto eseguito (log di esecuzione, risultati).

OutcomeLink → collegamento condizionale alla prossima tappa in base al risultato.

Modelli (Rails-style, sintetici) Journey

name, description, category, visibility:enum

template:boolean (true = blueprint; false = istanza)

Relazioni: has_many :steps, has_many :pledges, has_many :commits

Step

journey:references

Progettazione/esecuzione

position:integer (acts_as_list)

duration_minutes:integer

importance:enum (low/med/high)

urgency:enum (low/med/high)

attention:enum (bassa/media/alta)

energy:enum (scarica/ok/carica) — anche iconizzabile (🙂😐☹️)

Prerequisiti & flusso

prerequisite_step_id:integer (FK opzionale)

meta:jsonb (campi liberi: attrezzi, luogo, note)

Relazioni: has_many :engagements, has_many :outcome_links

Engagement (template economico/organizzativo dello step)

step:references

role_name:string (es. tutor, operatore, centro, segnalatore, piattaforma)

Economia

price_eur_cents:integer, price_currency:string

price_dash_amount:decimal(18,8), price_dash_address:string

revenue_eur_cents:integer (quota per il ruolo)

revenue_dash_amount:decimal(18,8)

(facoltativo: revenue_share_pct:integer)

Operatività

effort_minutes:integer (tempo richiesto al ruolo)

capacity:int (max utenti gestibili in questo step da quel ruolo)

requirements:jsonb (certificazioni, strumenti)

Nota: puoi avere più Engagement per ruolo diverso nello stesso step (coerente con il tuo revenue-sharing).

Pledge (impegno progettato)

lead:references, journey:references, step:references (opz.)

intent:string (scopo dichiarato)

planned_at:datetime, due_at:datetime

status:enum (planned, approved, in_progress, paused, canceled, completed)

Priorità personali al momento dell’impegno

importance_override:enum, urgency_override:enum

energy_target:enum, attention_target:enum

meta:jsonb (es. contesto: “in ufficio”, “prima del turno”)

Relazioni: potrà essere “seguito” da altri (observer/follower)

Commit (azione registrata)

lead:references, journey:references, step:references, pledge:references

started_at, finished_at, status:enum (started, completed, skipped, failed)

Metriche/rilevazioni

pain_before:integer, pain_after:integer (0–10)

mood_before:integer, mood_after:integer (🙂 scale)

notes:text, metrics:jsonb (HRV, ripetizioni, RPE…)

dash_txid:string (se la tappa prevedeva pagamento in DASH)

Log perfetto per la “storia” del journey.

OutcomeLink (risultato → prossima tappa)

from_step_id, to_step_id

condition:jsonb (es. { “pain_after_lte”: 3 } o { “commit_status”: “completed” })

Serve a dire: “se ottieni X, vai alla tappa Y”.

Flussi tipici

Progettazione

Definisci Journey (template) → crea Steps → per ogni Step definisci uno o più Engagement (ruoli+economia).

Collega Steps con OutcomeLink (flow condizionale).

Impegno

L’utente (o il team) crea un Pledge: sceglie la tappa, dichiara un intent, pianifica tempi, adegua priorità/energia.

Esecuzione

Esegue → crea un Commit: logga tempi, stato, metriche (dolore, umore, note, TX DASH se previsto).

Avanzamento

Il sistema legge OutcomeLink e propone la prossima tappa in base ai risultati del Commit.

Dettagli che cercavi (tutti coperti)

✅ Ruolo → in Engagement.role_name

✅ Costo/guadagno (EUR & DASH) → Engagement.price_* e Engagement.revenue_*

✅ Risultato che porta ad altra tappa → OutcomeLink condizionale

✅ Tempo necessario → Step.duration_minutes, Engagement.effort_minutes

✅ Ordine d’esecuzione → Step.position + prerequisite_step_id

✅ Cosa dev’essere eseguito → Step.meta (lista attività/attrezzi) + descrizione

✅ Importante/Urgente → Step.importance, Step.urgency (e override nel Pledge)

✅ Attenzione/Energia → Step.attention, Step.energy (e target nel Pledge)

✅ Faccine dolore/umore → Commit.pain_before/after, mood_before/after

✅ Prima l’impegno, poi l’azione → coppia Pledge → Commit

✅ Seguito/replicabile da altri → rendi il Journey template condivisibile; i Pledge possono essere copiati, e i Commit sono pubblicabili/seguibili (followers/observers).

Snippet (migr. super-sintetiche) create_table :journeys do |t| t.string :name; t.text :description; t.string :category t.integer :visibility, default: 0; t.boolean :template, default: true t.jsonb :meta, default: {} t.timestamps end

create_table :steps do |t| t.references :journey, null: false t.string :title; t.text :description t.integer :position t.integer :duration_minutes t.integer :importance, default: 1 t.integer :urgency, default: 1 t.integer :attention, default: 1 t.integer :energy, default: 1 t.bigint :prerequisite_step_id t.jsonb :meta, default: {} t.timestamps end add_index :steps, :prerequisite_step_id

create_table :engagements do |t| t.references :step, null: false t.string :role_name t.integer :price_eur_cents; t.string :price_currency, default: “EUR” t.decimal :price_dash_amount, precision: 18, scale: 8 t.string :price_dash_address t.integer :revenue_eur_cents t.decimal :revenue_dash_amount, precision: 18, scale: 8 t.integer :effort_minutes t.integer :capacity t.jsonb :requirements, default: {} t.timestamps end

create_table :pledges do |t| t.references :lead; t.references :journey; t.references :step t.string :intent t.datetime :planned_at; t.datetime :due_at t.integer :status, default: 0 t.integer :importance_override; t.integer :urgency_override t.integer :energy_target; t.integer :attention_target t.jsonb :meta, default: {} t.timestamps end

create_table :commits do |t| t.references :lead; t.references :journey; t.references :step; t.references :pledge t.datetime :started_at; t.datetime :finished_at t.integer :status, default: 0 t.integer :pain_before; t.integer :pain_after t.integer :mood_before; t.integer :mood_after t.text :notes t.jsonb :metrics, default: {} t.string :dash_txid t.timestamps end

create_table :outcome_links do |t| t.bigint :from_step_id; t.bigint :to_step_id t.jsonb :condition, default: {} t.timestamps end add_index :outcome_links, :from_step_id add_index :outcome_links, :to_step_id

Enum suggeriti (model) class Step < ApplicationRecord enum importance: { low: 0, medium: 1, high: 2 } enum urgency: { low: 0, medium: 1, high: 2 } enum attention: { bassa: 0, media: 1, alta: 2 } enum energy: { scarica: 0, ok: 1, carica: 2 } end

class Pledge < ApplicationRecord enum status: { planned: 0, approved: 1, in_progress: 2, paused: 3, canceled: 4, completed: 5 } end

class Commit < ApplicationRecord enum status: { started: 0, completed: 1, skipped: 2, failed: 3 } end

Micro-UX (Eisenhower & stato)

Mostra badge Importante/Urgente (matrice di Eisenhower).

Slider/emoji per Energia e Attenzione nel Pledge.

Nel Commit, widget rapido Dolore/Umore prima/dopo.

Se vuoi, te lo converto subito in scaffold Rails 8.1 con validations, indici, enum e un paio di view partial pronte (cards Tailwind per Step, Pledge e Commit).

🚆 1. Journey → il percorso

È il viaggio completo, la “linea” della metropolitana.

Può essere:

un programma (es. Igiene Posturale Base),

un processo aziendale (es. Attivazione Corso in un Centro),

o un percorso personale (es. Riattiva la Tua Fisiologia).

In sintesi:

Ha un obiettivo generale (meta del viaggio).

Contiene più step (le fermate).

Può essere un template (modello da riutilizzare) o un’istanza (viaggio reale di una persona o gruppo).

📘 Esempio:

Journey “Igiene Posturale Base” → 4 lezioni settimanali + valutazione finale.

🧭 2. Step → la tappa del journey

È una fermata del percorso: ciò che va effettivamente fatto. Può rappresentare:

una lezione o esercizio,

una fase operativa,

un checkpoint di valutazione.

Ogni Step definisce:

cosa bisogna fare (contenuto, obiettivo, istruzioni);

quanto tempo serve;

quanto è importante e urgente;

che tipo di attenzione o energia richiede;

a quale tappa successiva porta.

📘 Esempio:

Step 1 → “Valutazione articolare” Step 2 → “Lezione 1: mobilità del bacino” Step 3 → “Lezione 2: respirazione e diaframma”

💼 3. Engagement → il modello di ingaggio (ruoli + economia)

È il contratto implicito tra la tappa e i ruoli coinvolti. Descrive come quella tappa viene gestita da diversi attori e come vengono distribuite le risorse.

Ogni Step può avere più Engagement:

Ruolo Cosa fa Guadagno Costo utente Tutor Organizza gruppo 30€ - Insegnante Tiene la lezione 60€ - Centro Offre la sala 20% - Utente Partecipa - 150€ PosturaCorretta Coordina il sistema 10% -

📘 Esempio:

L’Engagement dello Step “Lezione 1” stabilisce che l’insegnante guadagna 60€, il centro 20%, e PosturaCorretta il 10%.

✋ 4. Pledge → l’impegno progettato

È la decisione consapevole di intraprendere una tappa. Quando qualcuno prende un pledge, si impegna a fare uno step in un certo tempo e con una certa intenzione.

Include:

chi lo prende (utente o gruppo),

per quale step/journey,

con quale intent (“voglio migliorare la mobilità lombare”),

entro quando lo farà,

quanta attenzione/energia dedica,

eventuali ruoli assegnati o tutor collegati.

📘 Esempio:

Antonio prende il pledge per la Lezione 1. “Mi impegno a completarla entro domenica, con l’obiettivo di rilassare la schiena.”

Questo è l’impegno progettato, prima dell’azione vera.

✅ 5. Commit → l’azione registrata

È il fatto compiuto, la traccia concreta di un’azione.

Quando l’utente (o gruppo) realizza davvero ciò che aveva promesso nel pledge, il sistema registra un commit.

Il commit conserva:

la data/ora di esecuzione,

quanto tempo è durato,

i risultati (es. dolore prima/dopo, umore),

eventuali note, valori fisiologici, o metriche,

il collegamento a eventuali pagamenti in euro o dash.

📘 Esempio:

Antonio completa la Lezione 1. Tempo: 45 min Dolore prima: 6 → dopo: 3 Energia percepita: media → alta Commit salvato e visibile al tutor.

🔄 6. OutcomeLink → il collegamento condizionale

Serve per collegare le tappe tra loro in modo dinamico.

Un OutcomeLink definisce cosa succede dopo una tappa:

Se il risultato è buono → passa alla successiva.

Se serve approfondimento → ripeti o passa a una variante.

Se un certo parametro è sotto soglia → attiva un altro journey.

📘 Esempio:

Se “Dolore dopo < 3” → vai a “Lezione 2” Se “Dolore dopo > 5” → consiglia “Visita individuale”

È ciò che trasforma il sistema in una rete intelligente di percorsi adattivi, non lineari.

🌐 Riassunto visivo Journey (es. Igiene Posturale) │ ├── Step 1: Valutazione iniziale │ ├── Engagement (ruoli, costi, ricavi) │ ├── Pledge (Antonio si impegna) │ └── Commit (Antonio esegue) │ └── OutcomeLink → Step 2 │ ├── Step 2: Mobilità del bacino │ └── … │ └── Step 3: Respirazione