step-6: add fix_chunks.py, make step-6 self-contained
- verify_chunks.py now reads from step-6/<stem>/chunks.json and auto-copies from step-5 on first run (input and output both in step-6) - fix_chunks.py: new script that applies fixes directly on chunks.json (merge too-short/incomplete, split too-long, remove empty, add prefix) supports --dry-run to preview changes before applying - step6-fix.md skill updated to use fix_chunks.py workflow: dry-run → user approval → apply → re-verify
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
---
|
||||
description: Legge il report di step 6, mostra le fix pianificate e le applica su approvazione tramite fix_chunks.py.
|
||||
allowed-tools: Read Bash Grep
|
||||
argument-hint: <stem>
|
||||
---
|
||||
|
||||
Leggi e interpreta `step-6/$ARGUMENTS/report.json`.
|
||||
|
||||
**Report:**
|
||||
!`cat step-6/$ARGUMENTS/report.json 2>/dev/null || echo "ERRORE: report.json non trovato — esegui prima: python step-6/verify_chunks.py --stem $ARGUMENTS"`
|
||||
|
||||
---
|
||||
|
||||
In base al contenuto del report, segui le istruzioni qui sotto.
|
||||
|
||||
## Se verdict == "ok"
|
||||
|
||||
Non c'è nulla da fare. Comunica all'utente che può procedere:
|
||||
|
||||
```
|
||||
✅ Nessun problema — procedi con la vettorizzazione:
|
||||
python step-8/ingest.py --stem $ARGUMENTS
|
||||
```
|
||||
|
||||
## Se verdict == "warnings_only" o "blocked"
|
||||
|
||||
### Passo 1 — Mostra le fix pianificate (dry-run)
|
||||
|
||||
Esegui il dry-run e mostra l'output all'utente:
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate && python step-6/fix_chunks.py --stem $ARGUMENTS --dry-run
|
||||
```
|
||||
|
||||
Spiega brevemente cosa farà ogni operazione:
|
||||
- **rimuovi chunk vuoti**: elimina chunk senza testo
|
||||
- **aggiungi prefisso**: inserisce `[sezione > titolo]` dove manca
|
||||
- **fondi incompleti**: unisce i chunk con frase spezzata al chunk successivo
|
||||
- **fondi troppo corti**: unisce chunk < 200 char con il successivo
|
||||
- **spezza troppo lunghi**: divide chunk > 1200 char al confine di paragrafo/frase
|
||||
|
||||
### Passo 2 — Chiedi conferma
|
||||
|
||||
Chiedi all'utente: **"Applico le correzioni?"**
|
||||
|
||||
Applica solo su approvazione esplicita.
|
||||
|
||||
### Passo 3 — Applica e ri-verifica
|
||||
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
python step-6/fix_chunks.py --stem $ARGUMENTS
|
||||
python step-6/verify_chunks.py --stem $ARGUMENTS
|
||||
```
|
||||
|
||||
Leggi il nuovo `step-6/$ARGUMENTS/report.json` e comunica:
|
||||
- Il nuovo verdict
|
||||
- Quanti warning/blockers residui rimangono
|
||||
- Se il verdict è `ok` o `warnings_only` senza blockers: comunica che si può procedere con step-8
|
||||
|
||||
## Dopo le correzioni
|
||||
|
||||
Se il verdict finale è `ok`:
|
||||
|
||||
```
|
||||
✅ chunks.json pulito salvato in step-6/$ARGUMENTS/
|
||||
Procedi con la vettorizzazione:
|
||||
python step-8/ingest.py --stem $ARGUMENTS
|
||||
```
|
||||
|
||||
Se rimangono warning minori (too_short/too_long non risolvibili perché testo non spezzabile):
|
||||
|
||||
```
|
||||
🟡 X warning residui non risolvibili automaticamente (testo non spezzabile).
|
||||
Puoi procedere comunque con la vettorizzazione:
|
||||
python step-8/ingest.py --stem $ARGUMENTS
|
||||
```
|
||||
Reference in New Issue
Block a user