diff --git a/docs/conexiuni-tunel-ssh-odbc.md b/docs/conexiuni-tunel-ssh-odbc.md index b8998ee..c0ce386 100644 --- a/docs/conexiuni-tunel-ssh-odbc.md +++ b/docs/conexiuni-tunel-ssh-odbc.md @@ -129,12 +129,38 @@ si interogarea intoarce 0 randuri **fara nicio eroare**. Foloseste here-string c **Capcana `termout off`**: ascunde si mesajele de eroare. Daca fisierul spool iese gol, ruleaza din nou fara `termout off` inainte sa banuiesti datele. +## Acces SSH direct cu cheie publica (metoda rapida, recomandata) + +Pentru clientii la care cheia publica e instalata pe server, nu mai e nevoie de profil Bitvise / +parola: se deschide tunelul direct cu `ssh` din `~\.ssh` (cheile `id_ed25519` / `id_rsa`). + +```powershell +# ridica tunelul: portul local 1521 -> Oracle (localhost:1521) de pe server +Start-Process ssh -ArgumentList @( + '-N','-o','ExitOnForwardFailure=yes','-o','StrictHostKeyChecking=accept-new', + '-o','BatchMode=yes', + '-L','1521:127.0.0.1:1521', + '-p','','@') -WindowStyle Hidden + +# verificare tunel +(Test-NetConnection 127.0.0.1 -Port 1521 -WarningAction SilentlyContinue).TcpTestSucceeded +``` + +`BatchMode=yes` = nu asteapta parola (foloseste cheia); daca pica, inseamna ca cheia publica nu e +instalata pe serverul respectiv. Portul SSH nu e neaparat 22: multi clienti ROA folosesc **22122**. +Inchidere: opri procesul `ssh` (sau `Get-Process ssh | Stop-Process`). + +> Nu te baza pe shell-ul remote ca sa "vezi" ce e pe server: contul `romfast` de pe clienti are +> shell restrans (`netstat`/`ss`/`hostname`/`head` nu exista). Proba reala e interogarea sqlplus +> dupa ridicarea tunelului, nu comenzile de pe server. + ## Schemele cunoscute (fara parole) | Tunel / profil | Alias TNS + DSN | Schema Oracle | |---|---|---| | `vending.tlp` | `VENDING` | **`VENDING`** (parola standard ROA) | | conpress | `ROA_CONPRESS` | `xenoti` | +| cheie publica, SSH 82.76.217.177:22122, user `romfast` | `ROA_ROMCONSTRUCT` | **`ROMCONSTRUCT`** (parola standard ROA), SID `ROA`, Oracle 10g | Profilele Bitvise sunt in **`D:\roa\BITVISE\`** pe statia curenta (`vending.tlp`, `conpress.tlp`, `clever.tlp`, `automotive.tlp`, `avis.tlp`, `eduard.tlp`, `ems.tlp`, `romfast.tlp`, `sigma.tlp`, diff --git a/skills/roa-actualizare-doc/SKILL.md b/skills/roa-actualizare-doc/SKILL.md new file mode 100644 index 0000000..a4ff640 --- /dev/null +++ b/skills/roa-actualizare-doc/SKILL.md @@ -0,0 +1,46 @@ +--- +name: roa-actualizare-doc +description: Actualizeaza documentatia si fluxurile dupa o sesiune de lucru - transforma cunostintele noi reutilizabile (flux ascuns, capcana platita, procedura/tabela cheie) in docuri/reguli minimale. Culege ce s-a invatat, filtreaza 80/20 (doar reutilizabil, nu tot ce s-a atins), PROPUNE modificarile si aplica doar dupa aprobarea lui Marius, apoi actualizeaza indexul COMUN\docs\README.md si declansatorul din reguli_lucru.md pct. 7. Foloseste-l OBLIGATORIU la final de sesiune sau de lucrare, cand utilizatorul spune "salveaza ce ai invatat", "actualizeaza docurile/fluxurile", "de ce a durat mult sa gasesti X", sau cand ai descoperit un flux/capcana/obiect cheie nedocumentat. Nu scrie din oficiu - intai propui, apoi aplici. +--- + +# Actualizarea documentatiei si a fluxurilor dupa o sesiune + +Formalizeaza regula 11 din `reguli_lucru.md` ("propune actualizarea documentatiei la final"). +Scopul: urmatoarea sesiune gaseste mai repede; nu se pastreaza tot, doar reutilizabilul (80/20). + +## Pasi + +1. **Culege** ce s-a invatat in sesiune: flux ascuns, capcana platita, procedura/tabela cheie, + locul unde sta un obiect greu de gasit. +2. **Filtreaza 80/20**: doar reutilizabil, nu tot ce s-a atins, nu verbose, fara istoric, fara + studii de caz, fara "de ce" (cititorul e un agent care stie deja contextul). +3. **Propune** (nu scrie inca): lista de modificari + destinatia fiecareia (fisier + 2-3 randuri). + Astepti aprobarea lui Marius. +4. **Aplica dupa aprobare**, la locul potrivit: + - comun tuturor produselor -> `COMUN\docs\.md`; + - specific unui produs -> `\docs\` (in `cercetare\` daca e cercetare incheiata); + - element comun de cod -> `COMUN\docs\inventar-comun.md`; + - rutare noua de skill -> `COMUN\skills\\SKILL.md` + rand in `backstop_skills.txt`. +5. **Rutare**: adauga randul in indexul `COMUN\docs\README.md` + declansatorul in + `reguli_lucru.md` pct. 7. Daca e skill nou, ruleaza `leaga_skills.ps1` (symlink) si + `scrie_backstop_skills.ps1` (AGENTS.md) -> skill `roa-onboarding` pasii 13-14. + +## Reguli + +- ASCII, fara diacritice; CRLF la `.sql`. Un subiect = un singur proprietar (ceilalti primesc o + trimitere de un rand, nu o copie). +- O notita = regula + strictul de context ca sa fie aplicabila. Nu duplica: verifica intai + `COMUN\docs\README.md` si `docs\cercetare\` ca subiectul sa nu existe deja. +- Nu documenta ce se deduce din cod; documenteaza fluxul ascuns, capcana, locul greu de gasit. + +## Criterii de acceptare si dovada + +1. Propunerea a fost aprobata de Marius inainte de scriere (nu s-a scris din oficiu). +2. Fisierele noi sunt ASCII (0 octeti > 127); `.sql` cu CRLF. +3. Randul din `README.md` si declansatorul din `reguli_lucru.md` pct. 7 au fost adaugate. + +## Referinta (doar la nevoie) + +- `COMUN\docs\README.md` - indexul documentatiei comune (tabelul "cand citesti fiecare"). +- `COMUN\docs\reguli_lucru.md` pct. 7 (routing) si pct. 11 (propune actualizarea doc). +- `COMUN\skills\roa-domeniu-rutare\SKILL.md` - harta surselor (unde sta fiecare obiect/flux). diff --git a/skills/roa-domeniu-rutare/SKILL.md b/skills/roa-domeniu-rutare/SKILL.md new file mode 100644 index 0000000..b020451 --- /dev/null +++ b/skills/roa-domeniu-rutare/SKILL.md @@ -0,0 +1,56 @@ +--- +name: roa-domeniu-rutare +description: Rutare rapida in domeniul ROA - unde gasesti un obiect sau un flux fara sa scanezi D:\ROA generic. Harta surselor: scripturile DB (D:\ROA\DATABASE\SCRIPTURI_CLAR\\), pachetele Oracle (PACK_FACTURARE = facturare, PACK_PRETURI = politici pret/articole/note vanzari, PACK_CONTAFIN = contabilitate, PACK_SETURI = seturi de note), codul VFP (COMUN\programe, COMUN\clase), notele de cercetare (\docs\cercetare), schema de referinta MARIUSM_AUTO@ROA_CENTRAL. Acopera si lantul notei contabile de vanzare (CRM_POLITICI_PRET_ART -> CRM_POLITICI_PRETURI -> CRM_NOTE_VANZARI -> NOTE_CONTABILE) si spatiul ID_SET (doua lucruri distincte: set de contare 25000+tip vs nota contabila NOTE_CONTABILE.ID_SET). Foloseste-l OBLIGATORIU cand investighezi facturare, articole, preturi, comenzi, politici de pret, note contabile, id_set, crm_note_vanzari, sau cand nu stii unde sta un obiect/coloana/pachet DB si ai fi tentat sa cauti generic in D:\ROA. +--- + +# Rutare in domeniul ROA: unde cauti, fara scanari generice + +Cand nu stii unde sta un obiect sau ce flux atinge o zona, deschide mai intai harta de mai jos. +Nu cauta generic in `D:\ROA` - sursele sunt localizate. + +## Harta surselor (mergi direct) + +| Cauti | Mergi direct la | +|---|---| +| DDL / pachete / triggere / secvente Oracle | `D:\ROA\DATABASE\SCRIPTURI_CLAR\\\*.sql` (SVN) | +| schema de referinta (dev) | `MARIUSM_AUTO@ROA_CENTRAL` -> `conventie_mediu_oracle.md` | +| productia unui client | tunel SSH -> `conexiuni-tunel-ssh-odbc.md` (skill `roa-oracle-production-access`) | +| pachet facturare (`scrie_nota`, `cursor_articol`, `cont_venit_articol_stoc`) | `PACK_FACTURARE` | +| politici pret / articole / note de vanzari (`gaseste_creeaza_nota_vanzare`, `salveaza_pret_nomenclator`, `sterge_nota_vanzare`) | `PACK_PRETURI` | +| contabilitate (`SCRiE_IN_ACT`, situatii, jurnale TVA) | `PACK_CONTAFIN` | +| seturi de note / copiere set | `PACK_SETURI` | +| actualizare versiune scripturi | `PACK_MIGRARE.UpdateVersiune` | +| cod VFP - proceduri / clase `.prg` | `\COMUN\programe\*.prg` | +| cod VFP - formulare `.vcx`/`.vc2` | `\COMUN\clase\*.vc2` -> skill `roa-vfp-text-edit` | +| cercetare incheiata pe un subiect | `\docs\cercetare\*.md` | +| export sursa de pachet pentru grep | `COMUN\docs\*.pck` | + +## Fluxurile de domeniu deja documentate (deschide-le, nu le recauta) + +- `tipuri_documente_facturare.md` - `VANZARI.TIP` + seturile de contare `ID_SET` (25000 + tip). +- `flux-modificare-stergere-nota-jurnal.md` - PACK_CONTAFIN, ACT/RUL, modificare/stergere nota. +- `machete-note-xrequest-explicatii.md` - XREQUEST/XNOTE (ce campuri cere o operatie la introducere). +- `fluxul_svn_git.md` - SVN <-> git. + +## Lantul notei contabile de vanzare + +`CRM_POLITICI_PRET_ART.ID_NOTA -> CRM_POLITICI_PRETURI.ID_NOTA -> CRM_NOTE_VANZARI.ID_NOTA`; +liniile sablonului: `CRM_NOTE_VANZARI.ID_SET -> NOTE_CONTABILE.ID_SET` (SCD/ASCD/SCC/ASCC). + +## Spatiul ID_SET - doua lucruri distincte (usor de confundat) + +1. **Set de contare** `XSETS.ID_SET = ACT.ID_SET`, valoare `25000 + tip` - documentat in + `tipuri_documente_facturare.md`. +2. **Nota contabila** `NOTE_CONTABILE.ID_SET = CRM_NOTE_VANZARI.ID_SET` - liniile sablonului de nota. + +Generatoare pentru (2): `SEQ_CRM_NOTE_ID_SET` (trigger pe CRM_NOTE_VANZARI) si `SEQ_XSETS` +(XSETS, valori >= 1000000), plus seturi predefinite (< 1000000, puse manual de programator). +Fix 2026-09-17 (`ff_2026_09_17_03_COMUN_ID_SET_UNIC.sql`): un singur generator `SEQ_XSETS`, +coloane `ID_SET` din `crm_note_vanzari`/`note_contabile` largite `NUMBER(6) -> NUMBER(10)`. +Capcana: `sterge_nota_vanzari` face `delete from note_contabile where id_set`; indexul pe +`NOTE_CONTABILE.ID_SET` e NONUNIQUE, deci o coliziune sterge silentios si randurile unui set +predefinit. + +## Referinta (doar la nevoie) + +- `COMUN\docs\conventie_mediu_oracle.md`, `conexiuni-tunel-ssh-odbc.md`, `scripturi-migrare-db.md`. diff --git a/utile/backstop_skills.txt b/utile/backstop_skills.txt index c2b74f5..3d93050 100644 --- a/utile/backstop_skills.txt +++ b/utile/backstop_skills.txt @@ -14,3 +14,5 @@ skill-ului. - `GO` pe un `Recno()` capturat sau primit ca parametru -> skill `roa-vfp-go-recno` - procedura PL/SQL cu `SELECT ... INTO` apelata din VFP (randuri pierdute tacut) -> skill `roa-oracle-sqlexec-no-data` - inrolezi un calculator nou sau un proiect nou in fluxul git-text / expui skill-urile pe masina / aplici backstop-ul de rutare -> skill `roa-onboarding` +- 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`