- 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
6.8 KiB
6.8 KiB
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, tokenfirefox-bidi-local. - Sessione SAP autenticata (SSO Entra; l'MFA è manuale dell'utente).
- Helper:
scripts/bridge_helper.py(in questa skill; funzioniev,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
- Piano approvato dall'utente PRIMA di scrivere in SAP: presentare la tabella giorno-per-giorno (valori per riga WBS) e attendere conferma esplicita.
- Ore teoriche = limite superiore (riga r1 della griglia): mai superarle. Giorni passati → valore teorico esatto; mai 8,00 tondi su giornate parziali.
- Mai ESC: chiude la transazione. Dialoghi → pulsante "Continuare"/Invio.
- 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.
- Salvataggio solo dopo riconciliazione: somma giorni per riga == totale riga, somma righe == totale generale; e dopo approvazione utente.
- Verifica post-salvataggio obbligatoria (riaprire la view e rileggere).
- 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
- 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". - 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. - Leggi su DOM: riga teoriche (r1), riga totali (r2), righe dati (r3+).
Costruisci il delta per ogni giorno:
inseritevsteoriche. - Presenta il piano (giorni mancanti con valore teorico esatto; eccessi da ridurre) e chiedi conferma.
- Scrivi le celle con la ricetta di
references/procedura-tecnica.md§2, verificando ogni cella sulla riga totali (r2). - Salva (§Salvataggio) e verifica (§Verifica).
Workflow B — inserimento mese corrente con ripartizione WBS
- Apri la view sul mese corrente; leggi teoriche (r1) e righe esistenti.
- 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).
- 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.
- Presenta la tabella (giorno × riga WBS) e ottieni l'approvazione.
- 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.
- 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.