Files
pi-skill-hub/skills/sap-timesheet/SKILL.md
T
enne2 551b5f3611 feat: skill hub — distribuzione skill via Gitea, indicizzazione e ricerca
- extensions/skill-hub.ts: skill_search (FTS su frontmatter+body+references),
  skill_info, skill_sync/commando /skill-sync, iniezione istruzioni via
  before_agent_start (append al systemPrompt, mai replace)
- skills/sap-timesheet: prima skill migrata (SAP CATS timesheet)
- distribuzione: pi package (keyword pi-package), install git:git.enne2.net/enne2/pi-skill-hub
2026-09-24 12:15:27 +02:00

6.8 KiB
Raw Blame History

name, description
name description
sap-timesheet Compila, corregge e verifica il timesheet mensile SAP CATS (S/4HANA WebGUI s4t.sap.telespazio.com, Manager desktop PPMDT → Inserimento Time Sheet) per il dipendente BENEDETTO MATTEO (21432). Usare quando l'utente chiede di inserire ore, completare/correggere il mese precedente o corrente, caricare le ore dal file Excel "Ore Team Fortuna", o verificare ore inserite vs teoriche. NON usare per gestione trasferte, ferie/assenze, autorizzazione timesheet di altri dipendenti o questioni payroll.

Timesheet SAP — completamento mese precedente e inserimento mese corrente

Outcome

Timesheet mensile salvato in SAP con totale righe = ore teoriche del periodo (e forecast 8h/giorno lavorativo sui giorni futuri), verificato con rilettura post-salvataggio, con evidenza osservata (DOM reale) di ogni valore scritto.

Scope

  • Correzione/completamento del mese precedente: portare le ore inserite in linea con le ore teoriche ora generate (giorni mancanti + eccessi).
  • Inserimento del mese corrente: righe dati ripartite per WBS (percentuali dal file Excel ore team), giorni passati = teoriche, giorni lavorativi dopo oggi = 8,00 (forecast).
  • Verifica post-salvataggio e riconciliazione totali.

NON usare per: approvare timesheet di terzi, gestire assenze, trasferte, o modifiche a mesi chiusi da altro personale.

Preconditions

  • Firefox con BiDi attivo: browser_start(profile="main") (profilo principale, login reali). Bridge su 127.0.0.1:8787, token firefox-bidi-local.
  • Sessione SAP autenticata (SSO Entra; l'MFA è manuale dell'utente).
  • Helper: scripts/bridge_helper.py (in questa skill; funzioni ev, click_ctx, type_text, cell_center, cell_text, dialogs, write_cell).
  • Se serve lo storico dei valori: qmem project sap-timesheet.
  • Fonte ore: Excel "Ore Team Fortuna - .xlsx", Foglio3, colonne CdC/Reparto/Cognome/Nome/WBE/Perc (righe BENEDETTO MATTEO).

Non-negotiable gates

  1. Piano approvato dall'utente PRIMA di scrivere in SAP: presentare la tabella giorno-per-giorno (valori per riga WBS) e attendere conferma esplicita.
  2. Ore teoriche = limite superiore (riga r1 della griglia): mai superarle. Giorni passati → valore teorico esatto; mai 8,00 tondi su giornate parziali.
  3. Mai ESC: chiude la transazione. Dialoghi → pulsante "Continuare"/Invio.
  4. Verifica = DOM reale (BiDi eval), mai screenshot interpretato: ogni valore scritto è "Observed" solo se riletto dalla riga TOTALI (r2) o dopo re-render. Non convertire mai Unknown/Assumption in Observed.
  5. Salvataggio solo dopo riconciliazione: somma giorni per riga == totale riga, somma righe == totale generale; e dopo approvazione utente.
  6. Verifica post-salvataggio obbligatoria (riaprire la view e rileggere).
  7. Segregazione: l'agente inserisce ma non approva; il salvataggio finale viene eseguito solo con l'utente informato (attestazione del titolare).

Workflow A — completamento/correzione mese precedente

  1. Naviga: Easy Access → dblclick preferito "Risorse umane -> Manager's Desktop" (dispatchEvent dblclick su tree#C105#2#1#1#i) → sezione Time Sheet → click destro su riga "BENEDETTO MATTEO" → "Inserimento Time Sheet".
  2. Imposta il periodo del mese precedente con i pulsanti Videata precedente/successiva (M0:46:1::1:46 / :1:49, spostano di un mese). I campi data intestazione NON accettano digitazione sintetica.
  3. Leggi su DOM: riga teoriche (r1), riga totali (r2), righe dati (r3+). Costruisci il delta per ogni giorno: inserite vs teoriche.
  4. Presenta il piano (giorni mancanti con valore teorico esatto; eccessi da ridurre) e chiedi conferma.
  5. Scrivi le celle con la ricetta di references/procedura-tecnica.md §2, verificando ogni cella sulla riga totali (r2).
  6. Salva (§Salvataggio) e verifica (§Verifica).

Workflow B — inserimento mese corrente con ripartizione WBS

  1. Apri la view sul mese corrente; leggi teoriche (r1) e righe esistenti.
  2. Calcola il piano: per ogni giorno con teoriche > 0 → ore = teorica; per i giorni lavorativi dopo oggi → 8,00; giorni con teorica 0 nel passato e weekend → 0. Oggi stesso escluso (si completa a fine mese col Workflow A).
  3. Ripartisci per riga WBS con le percentuali dell'Excel (es. 70/20/10 su 185.102.01.01 / 225.489.64.50 / 235.900.10), arrotondando al centesimo e bilanciando perché la somma giornaliera = teorica del giorno.
  4. Presenta la tabella (giorno × riga WBS) e ottieni l'approvazione.
  5. Crea le righe: compila la prima riga (c4 TdA=ORE, c6 WBS, c8 UM=H; c2 CdC e c3 CA vengono auto-compilate da SAP dopo l'inserimento dei giorni), poi seleziona la riga (colonna 0) → menu "..." → Copiare riga per le successive, correggendo solo la WBS e i giorni.
  6. Scrivi i giorni di ogni riga (ricetta in references), verifica per riga e salva (§Salvataggio) + verifica (§Verifica).

Salvataggio

  • Pulsante "Salvare Evidenziato" (M0:50::btn[11]).
  • Errori E bloccano il salvataggio (riportarli all'utente); i warning W si superano con "Continuare".
  • Esito OK = la view si chiude tornando al Manager desktop (nessun popup).
  • Se compare il dialogo di enqueue "La matricola 21432 è attualmente impegnata…" → premere Invio e vedi references/errori-noti.md §Lock.

Verifica (exit criteria)

  • Riaperta la view e rilegta la griglia dal DOM reale.
  • Somma giorni per riga == totale riga; somma righe == totale generale.
  • Nessun giorno supera le teoriche; nessun giorno mancante rispetto al piano.
  • Valori registrati in qmem (project sap-timesheet) con i totali finali.
  • Rischi/limitazioni dichiarati (es. teoriche future non ancora generate).

Resource loading

Condizione Carica/esegui
Prima scrittura o ambiente cambiato references/procedura-tecnica.md
Errore SAP, lock, pagina bianca, menu chiuso references/errori-noti.md
Analisi di controllo/conformità richiesta references/best-practice-controlli.md
Operazioni ponte BiDi ripetitive scripts/bridge_helper.py (python3)

Automation boundary

  • Lettura griglia/navigazione: autonoma.
  • Scrittura celle: dopo approvazione del piano (una volta per sessione).
  • Salvataggio: dopo riconciliazione OK; se compaiono errori E → fermarsi e riportarli; i warning W si confermano con "Continuare".
  • Mai ripetere un salvataggio fallito senza rianalisi: rischio duplicati (idempotenza: verificare sempre cosa è già persistito prima di riscrivere).

Esempio (completamento agosto 2026, reale)

Teoriche 107,18 vs inserite 61,05 → mancanti 04,06,07,19,20,21.08=8,00 e 26.08=8,28; eccessi 24.08 8,00→6,87 e 31.08 8,00→6,98. Totale finale 107,18 = teoriche. Verificato con rilettura post-salvataggio. Cattiva risposta da evitare: "dichiarare completato" senza rilettura, o correggere eccessi senza approvazione.