From 4e9bd96c1a8a7611335683a8e30e78566035600f Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Thu, 17 Sep 2026 17:24:55 +0300 Subject: [PATCH] sync SVN r18161 --- AGENTS.md | 12 +++++ docs/handoff_id_set_skilluri.md | 52 ++++++++++++++++++++++ docs/handoff_idempotenta_id_set.md | 71 ++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 docs/handoff_id_set_skilluri.md create mode 100644 docs/handoff_idempotenta_id_set.md diff --git a/AGENTS.md b/AGENTS.md index 0bc7574..75cf9ae 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,3 +20,15 @@ skill-ului. - investighezi facturare / articole / preturi / comenzi / politici de pret / note contabile / id_set / crm_note_vanzari, sau nu stii unde sta un obiect/coloana/pachet DB -> skill `roa-domeniu-rutare` - final de sesiune sau de lucrare / "salveaza ce ai invatat" / actualizezi documentatia sau fluxurile -> skill `roa-actualizare-doc` + +## Stil de interactiune + +Cand ai o decizie, o ambiguitate sau mai multe abordari valide, prezinta optiuni cu trade-off-uri +si o recomandare clara, apoi intreaba — nu actiona unilateral. Pune recomandarea prima, marcat-o. +Intreaba o singura data, asteapta raspunsul; nu repeta intrebari la care nu s-a raspuns si nu intra +in loop de decizie. Actioneaza direct doar cand scopul e clar si schimbarea e mica; pentru orice +netrivial, propune un plan si intreaba inainte de a edita. Daca eziti intre doua variante +rezonabile, alege una si mergi — poti corecta. Separa "a raspunde" de "a executa": o intrebare sau +o parere primeste un raspuns, nu o implementare. Fii concis: fara preambul, fara sa povestesti ce +urmeaza sa faci. Extinderea completa (interactiune + cautare, distilata din promptul Claude Code): +`COMUN\docs\stil_interactiune_cautare.md`. diff --git a/docs/handoff_id_set_skilluri.md b/docs/handoff_id_set_skilluri.md new file mode 100644 index 0000000..1c14993 --- /dev/null +++ b/docs/handoff_id_set_skilluri.md @@ -0,0 +1,52 @@ +# Handoff — id_set unic + skilluri rutare (2026-09-17, ~13:30) + +Stare pentru sesiunea urmatoare. Zero lucrari ramase in stare periculoasa pe disc (doar fisiere necomise, listate mai jos). + +## 1. Livrabile terminate si comise + +| Ce | Unde | Stare | +|---|---|---| +| Migrare id_set unic | `D:\ROA\DATABASE\SCRIPTURI_CLAR\2026\09\ff_2026_09_17_03_COMUN_ID_SET_UNIC.sql` | SVN r18155, publicat (UPD_DATABASE id 17609 + arhiva lunara) | +| Doc SSH | `COMUN\docs\conexiuni-tunel-ssh-odbc.md` | comis de Marius (r18154) | +| Skill `roa-domeniu-rutare` | `COMUN\skills\roa-domeniu-rutare\SKILL.md` | SVN r18156 + symlink + backstop | +| Skill `roa-actualizare-doc` | `COMUN\skills\roa-actualizare-doc\SKILL.md` | SVN r18156 + symlink + backstop | +| Backstop | `COMUN\utile\backstop_skills.txt` + `ROAFACTURARE\AGENTS.md` | r18156 / r18157 | + +## 2. NEFINALIZAT / necomis + +- `COMUN\utile\roa-sql.ps1` — **NOU, necomis** (helper determinist sqlplus; parola citita din `COMUN\docs\local\oracle.md`, NU hardcodata). Trebuie `svn add` + commit + roa_sync. +- **Îmbunătățirea `roa-domeniu-rutare`** cu sectiunea "Comenzi directe" — NEÎNCEPUT. Feedback Marius: skillurile trebuie sa aiba **comenzi directe / apelari deterministe de scripturi**, nu doar pointeri. + +## 3. Feedback de urmat (de la Marius, sesiunea aceasta) + +1. **Skilluri cu comenzi directe**: adauga in `roa-domeniu-rutare` comenzile exacte (sqlplus connect dev+productie, interogari de dictionar `all_source`/`all_triggers`/`all_sequences`/`all_tab_columns`, grep in `SCRIPTURI_CLAR`), nu doar harta descriptiva. +2. **Uita-te la pluginul gstack** din Claude Code (`C:\Users\mmari\.claude\skills\gstack\`) ca sa vezi hook-ul de context: injecteaza dimensiunea contextului si se opreste/salveaza la ~250k. De implementat echivalent (eu am ajuns la 341k fara sa opresc — nerespectand regula 250k din `reguli_lucru.md` pct. 0/9). +3. **Subagenti DeepSeek Flash v4.1** pentru sarcini de executie (mai ieftini), ca in instructiunile din docs — nu am urmat instructiunea, am facut interogarile in sesiunea principala. +4. **Nu hardcoda parole** in scripturi — foloseste `COMUN\docs\local\oracle.md` (NEVERSIONAT in git). + +## 4. Comenzi de reluat (deterministe) + +```powershell +# SQL pe dev (parola din local/oracle.md, automat) +powershell -File COMUN\utile\roa-sql.ps1 -Schema MARIUSM_AUTO -Sql "select user from dual" +# SQL pe productie (alias TNS) +powershell -File COMUN\utile\roa-sql.ps1 -Con "ROMCONSTRUCT/@ROA_ROMCONSTRUCT" -Sql "..." + +# SSH ROMCONSTRUCT (cheie publica, port 22122, NU 22) +ssh -N -o BatchMode=yes -L 1521:127.0.0.1:1521 romfast@82.76.217.177 -p 22122 +# ROMFAST e intern, fara tunel: 10.0.20.36:1521 + +# commit roa-sql.ps1 (la aprobarea lui Marius) +svn add COMUN\utile\roa-sql.ps1 ; svn commit ... ; roa_sync.bat +``` + +## 5. Stiut deja (nu se reia) + +- **Spatiul ID_SET**: doua lucruri distincte — set de contare `XSETS.ID_SET = ACT.ID_SET` (25000+tip, in `tipuri_documente_facturare.md`) vs nota contabila `NOTE_CONTABILE.ID_SET = CRM_NOTE_VANZARI.ID_SET`. Generatoare: `SEQ_CRM_NOTE_ID_SET` + `SEQ_XSETS` (>=1M). Fix: un singur generator SEQ_XSETS, coloane NUMBER(6)->NUMBER(10). Vezi `roa-domeniu-rutare` + `ff_2026_09_17_03`. +- **Lantul notei vanzare**: `CRM_POLITICI_PRET_ART.ID_NOTA -> CRM_POLITICI_PRETURI.ID_NOTA -> CRM_NOTE_VANZARI.ID_NOTA`; `CRM_NOTE_VANZARI.ID_SET -> NOTE_CONTABILE.ID_SET`. +- **Coloane ID_SET**: majoritatea schemelor erau NUMBER(6) (max 999999), de-aia bump-ul 2007 a mers pe +200000. +- **Capcana**: `sterge_nota_vanzari` face `delete from note_contabile where id_set`; index NONUNIQUE -> coliziune = stergere silentioasa. + +## 6. Tuneluri/SSH — NU lasa deschise + +Toate inchise la finalul sesiunii. Re-deschiderea: comanda din pct. 4. diff --git a/docs/handoff_idempotenta_id_set.md b/docs/handoff_idempotenta_id_set.md new file mode 100644 index 0000000..ba1c69d --- /dev/null +++ b/docs/handoff_idempotenta_id_set.md @@ -0,0 +1,71 @@ +# 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 `(? +# 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 `(?