Docs: flux nou de editare VFP pe text (txt2vcx.ps1) + cale cache corectata

CLAUDE.md: calea cache-ului text e D:\ROA\_vfp_textcache\roagest (nu
_textcache_roagest); editarile de cod .vcx/.scx se fac acum direct pe
.vc2/.sc2 + write-back cu txt2vcx.ps1 (.mnx/.frx raman read-only, COMUN
doar cu -AllowComun). Nota noua docs/flux-editare-vfp-text.md cu fluxul,
comenzile si limitele. todo.txt: 2 itemi pending (faza 2 mnx/frx,
text-as-source-of-truth in git).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 18:30:39 +03:00
parent ca21bfe7a2
commit 9f8dd67051
4 changed files with 59 additions and 4 deletions

View File

@@ -6,6 +6,7 @@ Notite concise despre structura interna a proiectului (fluxuri, pachete, tabele)
- [CLAUDE.md](CLAUDE.md) — modul de lucru Claude ↔ Marius (propuneri de cod pentru VFP IDE, acces Oracle direct).
- [flux-achizitie-import.md](flux-achizitie-import.md) — lantul achizitie import: gestiuni.vcx → achizitie_import → import_nota → import_nir → PACK_CONTAFIN; capcane (ptva bruta vs proc_tva, import_nota_original mort, 4427/401).
- [flux-editare-vfp-text.md](flux-editare-vfp-text.md) — editare directa pe cache-ul text (.vc2/.sc2) cu write-back prin txt2vcx.ps1, in loc de VFP IDE; limite (.mnx/.frx read-only, COMUN cu aprobare, staleness dupa sesiuni IDE).
- [propuneri_achizitie_import.md](propuneri_achizitie_import.md) — *temporar*: modificarile propuse (cu cod) pentru sesizarea achizitie import; se sterge dupa implementare.
- `local/` — notite neversionate (credentiale Oracle etc., in .gitignore).

View File

@@ -0,0 +1,42 @@
# Flux editare directă pe text pentru `.vcx`/`.scx`
Pe lângă căutare (`vcx2txt.ps1`), cache-ul text din `D:\ROA\_vfp_textcache\roagest\` poate fi acum
și **sursă de editare** pentru `.vcx`/`.scx`, scriind înapoi în binar cu `txt2vcx.ps1` — fără trecere
prin VFP IDE. Detalii complete (guard-uri, ordinea pașilor, teste) în
`D:\ROA\UTIL\foxbin2prg\CLAUDE.md`; aici doar partea relevantă pentru ROAGEST.
## Pașii
1. Refresh cache (obligatoriu dacă a rulat vreo sesiune de IDE de la ultimul refresh — altfel
verificarea de staleness din `txt2vcx.ps1` refuză scrierea):
```powershell
& 'D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1' -Project 'D:\ROA\ROAGEST\roagest.pjx' -ProjectRoot 'D:\ROA\ROAGEST' -CacheRoot 'D:\ROA\_vfp_textcache\roagest' -Types vcx,scx,frx,mnx
```
2. Editează `.vc2`/`.sc2` direct în `D:\ROA\_vfp_textcache\roagest\`. Formatul e
**position-sensitive** (nu reformata/reflow liniile) și proprietățile sunt **alfabetizate** (o
proprietate nouă se inserează la locul ei alfabetic, nu la sfârșit).
3. Revizuiește diff-ul pe fișierul text ca pe orice altă modificare de cod.
4. Scrie înapoi în proiect:
```powershell
& 'D:\ROA\UTIL\foxbin2prg\txt2vcx.ps1' -TextFile 'D:\ROA\_vfp_textcache\roagest\Clase\oavize.vc2' -ProjectRoot 'D:\ROA\ROAGEST' -CacheRoot 'D:\ROA\_vfp_textcache\roagest'
```
Regenerează și compilează binarul într-un folder de staging, verifică fidelitatea (roundtrip
text→bin→text byte-identic) și abia apoi copiază `.vct`+`.vcx` (sau `.sct`+`.scx`) peste
binarele din proiect. Dacă orice pas eșuează, proiectul și cache-ul rămân neatinse.
## Limite
- `.mnx`/`.frx` rămân **doar pentru citire** — meniurile tot au nevoie de GENMENU în IDE ca să
regenereze `.mpr`, iar formatul `.frx` e prea fragil pentru round-trip. Editează-le în VFP IDE ca
până acum.
- Ținte sub `COMUN\` necesită `-AllowComun` **și** aprobare explicită — o modificare acolo afectează
toate aplicațiile ROA, nu doar ROAGEST.
- **După orice sesiune de IDE** rulează `vcx2txt.ps1` înainte de a edita text — staleness-ul se
verifică pe baza `mtime`, iar o sesiune de IDE (chiar și una care doar a deschis o clasă) poate
lăsa cache-ul în urmă față de binar.
- Fără backup-uri `.bak` lângă binarele din proiect — git e mecanismul de restore; scriptul ține o
copie de siguranță doar în folderul temp al rulării.