Files
roafacturare/docs/handoff_idempotenta_id_set.md
2026-09-17 17:24:55 +03:00

72 lines
4.4 KiB
Markdown

# Handoff — idempotenta script 03 + ColumnNeedModify (2026-09-17, ~15:00)
Stare pentru sesiunea urmatoare. Nimic in stare periculoasa pe disc. Fisierele necomise sunt listate la pct. 4.
## 1. Livrabile terminate
| Ce | Unde | Stare |
|---|---|---|
| Script 03 idempotent | `D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\09\ff_2026_09_17_03_COMUN_ID_SET_UNIC.sql` | editat in loc, PUBLICAT (UPD_DATABASE id 17609 reactualizat) |
| Script 04 nou (PACK_MIGRARE + functia ColumnNeedModify) | `D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\09\ff_2026_09_17_04_COMUN_PACK_MIGRARE.sql` | nou, PUBLICAT (id 17610) |
| Arhiva lunara | `Y:\ROAUPDATE\_UPDATE\` | regenerata (30 scripturi), verificata octet cu octet |
Ambele scripturi: ASCII (0 octeti > 127), CRLF, fara BOM, se termina cu `UpdateVersiune` + `commit;`.
## 2. Ce face scriptul 03 (acum idempotent)
- `alter table ... modify (id_set number(10))` era direct; acum e in `declare` cu guard:
`pack_migrare.ColumnExist(...) = 1` AND `data_type='NUMBER' AND data_precision < 10`.
Pe dev coloanele sunt deja NUMBER(10) (data_precision=10), deci guard-ul sare corect.
- Trigger-ul e `create or replace` (idempotent); renumerotarea `where id_set < 1000000` e no-op la a doua rulare.
## 3. Ce face scriptul 04 (noua functie)
`PACK_MIGRARE.ColumnNeedModify(tcTableName, tcColumnName, tcDataType, tnPrecision, tnScale, tcNullable)`:
intoarce 1 daca coloana NU are definitia ceruta (trebuie ALTER MODIFY), 0 altfel. Orice parametru NULL = aspectul nu se verifica.
Pachetul complet a fost reprodus din DB-ul live (are ramura `when 'RF' THEN` din UpdateVersiune, pe care `.pck`-ul stale o pierduse) + functia noua. Baza: scriptul 2014 `ff_2014_08_18_01_COMUN_PACK_MIGRARE.sql` == DB live (verificat cu diff).
## 4. APROBAT dar NEEXECUTAT (Marius a aprobat in sesiune)
1. **A**: in `COMUN\skills\roa-oracle-migration\SKILL.md` — inlocuieste criteriul CRLF buguit
`($b -join ',').Contains('13,10')` (fals pozitiv: byte 113='q' + 10 => "113,10" contine "13,10")
cu regex-ul `(?<!\r)\n` (acelasi pe care-l foloseste `publicare_scripturi.ps1` linia 543).
2. **B**: capcana noua in `roa-oracle-migration\SKILL.md` + `scripturi-migrare-db.md`: fisierele `.sql`
noi ies cu LF din `write`/`edit`; converteste CRLF inainte de publicare. One-liner:
`$t = [IO.File]::ReadAllText($p); $t = $t -replace "`r`n","`n" -replace "`n","`r`n"; [IO.File]::WriteAllText($p, $t, (New-Object System.Text.ASCIIEncoding))`
3. **C**: in `COMUN\docs\oracle_export.md` — un rand: `.pck` poate fi stale (ex. PACK_MIGRARE fara ramura
RF); verifica echivalenta fata de DB live inainte de a-l folosi.
4. **Sterge `.pck`-urile din `COMUN\docs\`**: `PACK_MIGRARE.pck`, `PACK_UPDATE.pck`, `PACK_DIAG_SPATIU.pck`.
Marius: foloseste doar ultimele versiuni din SCRIPTURI_CLAR, nu exporturi `.pck` din docs.
ATENTIE: `oracle_export.md` si `roa-domeniu-rutare\SKILL.md` trimit la `*.pck` — actualizeaza-le.
## 5. NEFINALIZAT / necomis (din sesiunile trecute)
- `COMUN\utile\roa-sql.ps1` — NOU, necomis (svn add + commit + roa_sync).
- AGENTS.md: sectiunea "Stil de interactiune" adaugata — necomisa.
- `COMUN\docs\reguli_lucru.md`: regula 14 (intreaba cu optiuni in loc de investigatie) adaugata — necomisa.
- `roa-domeniu-rutare\SKILL.md`: sectiunea "Comenzi directe" (comenzi sqlplus deterministe) — NEINCEPUTA.
- Scripturile 03 (M) si 04 (A) din `D:\ROA\DATABASE` — de comis in SVN (`svn add` pt 04).
## 6. Comenzi de reluat
```powershell
# publicare (deja facuta, doar daca re-rulezi):
powershell -File D:\ROA\ROAFACTURARE\COMUN\utile\publicare_scripturi.ps1 -DryRun
# SQL pe dev:
powershell -File COMUN\utile\roa-sql.ps1 -Schema MARIUSM_AUTO -Sql "select user from dual"
# commit SVN in D:\ROA\DATABASE (doar 03 + 04, tintit):
# svn commit 2026\09\ff_2026_09_17_03_COMUN_ID_SET_UNIC.sql 2026\09\ff_2026_09_17_04_COMUN_PACK_MIGRARE.sql -F <mesaj>
# commit COMUN: vezi skill roa-git-svn-commit (doar fisierele aprobate, apoi roa_sync.bat)
```
## 7. Capcane platite (NU se repeta)
- Verificarea CRLF cu `($b -join ',').Contains('13,10')` e FALS-POZITIVA. Foloseste `(?<!\r)\n`.
- Tool-ul `write` scrie `.sql` cu LF, nu CRLF — converteste.
- `.pck`-urile din `COMUN\docs` pot fi stale fata de DB live (PACK_MIGRARE pierduse ramura RF).
- `roa-actualizare-doc` / `roa-domeniu-rutare` NU sunt in lista mea de skill-uri; citeste-le cu `read`, nu invoca `skill`.
- Greseli de disciplina: n-am folosit subagenti (regula 6) si am depasit pragul de 250k (REGULA ZERO).