sync SVN r18157

This commit is contained in:
2026-09-17 13:33:56 +03:00
parent d2a16f75a1
commit 221ae4711e
4 changed files with 130 additions and 0 deletions

View File

@@ -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\<subiect>.md`;
- specific unui produs -> `<PRODUS>\docs\` (in `cercetare\` daca e cercetare incheiata);
- element comun de cod -> `COMUN\docs\inventar-comun.md`;
- rutare noua de skill -> `COMUN\skills\<nume>\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).

View File

@@ -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\<an>\<luna>), 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 (<PRODUS>\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\<an>\<luna>\*.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` | `<PRODUS>\COMUN\programe\*.prg` |
| cod VFP - formulare `.vcx`/`.vc2` | `<PRODUS>\COMUN\clase\*.vc2` -> skill `roa-vfp-text-edit` |
| cercetare incheiata pe un subiect | `<PRODUS>\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`.