Update system prompt and create D300 migration script

- Enhanced system_prompt.md with mandatory initial questions, explicit examples, operation types, error handling, and BEGIN/END structure requirements
- Created ff_2025_09_10_01_CONTABILITATE_D300.sql migration script for DECONTTVA table with DELETE/INSERT approach
- Removed obsolete files: CLAUDE.md, README.md, CSV input files
- Updated input/scrie_jc_2007.sql

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Marius
2025-09-10 15:45:46 +03:00
parent 3c61b5f617
commit f2880f1ef7
8 changed files with 49 additions and 920 deletions

View File

@@ -1,78 +0,0 @@
# System Instructions - ROMFASTSQL
Acest director contine instructiuni system si exemple pentru proiectul ROMFASTSQL - un sistem de migrare pentru baza de date ERP romaneasca Oracle.
## Structura
- `system_prompt.md` - Instructiuni principale pentru generarea scripturilor SQL
- `knowledge_base/` - Colectie de exemple si utilitare
- `PACK_MIGRARE.pck` - Package-ul central cu functii utilitare
- Multiple fisiere exemplu de scripturi (ff_*.sql, co_*.sql)
## Componente Principale
### PACK_MIGRARE Package
Package-ul central care ofera functii de verificare:
- `ColumnExist()` - Verifica daca o coloana exista
- `ObjectExist()` - Verifica daca un obiect exista
- `ConstraintExist()` - Verifica daca o restrictie exista
- `UpdateVersiune()` - Tracking versiuni pentru scripturi
### Exemple Scripturi Migrare
Directorul `knowledge_base/` contine exemple pentru:
- **ff_*.sql** - Scripturi de tip "Fast Forward" pentru modificari structurale
- **co_*.sql** - Scripturi pentru obiecte comune
## Conventii Obligatorii
### Formatare SQL
- **NU** folositi ghilimele in jurul numelor de tabele/coloane
- **NU** specificati numele schemei (ex: folositi `JV2007` nu `"SCHEMA"."JV2007"`)
- **MAJUSCULE** pentru toate cuvintele cheie SQL
- Comentarii in romana
### Structura Scripturi
1. Comentariu scurt in romana la inceput
2. Verificari existenta prin PACK_MIGRARE
3. Operatiuni DDL in blocuri PL/SQL
4. MERGE cu NOT MATCHED pentru inserari
5. COMMENT statements directe (nu EXECUTE IMMEDIATE)
6. `pack_migrare.UpdateVersiune()` la sfarsit
7. `commit;`
### Nomenclatura
- Fisiere: `ff_YYYY_MM_DD_NN_TYPE.sql` sau `co_YYYY_MM_DD_NN_TYPE.sql`
- Exemple: `ff_2024_08_28_02_COMUN_EFACTURA.sql`, `co_2024_03_04_01_OBIECTE.sql`
- **ff_** - Fast Forward, pentru modificari structurale si date
- **co_** - Common Objects, pentru obiecte si definitii sistem
## Tipuri Comune de Modificari
### 1. Adaugare Coloane
- Verificare existenta cu `PACK_MIGRARE.COLUMNEXIST()`
- Executie in bloc PL/SQL cu `EXECUTE IMMEDIATE`
- Adaugare `COMMENT ON COLUMN` pentru documentare
### 2. Inserare Date Configurare (OPTIUNI)
- `MERGE INTO` cu `USING DUAL`
- Doar clauza `WHEN NOT MATCHED` pentru idempotenta
- Tipuri: CHARACTER, NUMERIC
### 3. Inserare Obiecte Sistem (DEF_OBIECTE)
- MERGE pe `id_obiect` unic
- Include relatii parinte-copil (`id_tata`)
- Gestionare drepturi prin `DEF_GRUP_DREPT_OBIECTE`
### 4. Creare/Modificare View-uri
- `CREATE OR REPLACE VIEW`
- Join-uri complexe pentru agregare date
- Alias-uri descriptive in romana
### 5. Update-uri Simple
- UPDATE direct pentru corectii date
- TRIM pentru curatare spatii
- REPLACE pentru modificari cai/valori
## Utilizare
Aceste fisiere servesc ca ghid si exemple pentru crearea scripturilor SQL de migrare sigure si idempotente in cadrul proiectului ROMFASTSQL.

View File

@@ -13,17 +13,29 @@ Acest proiect contine scripturi SQL pentru gestionarea unei bazei de date ERP cu
## PROMPT SISTEM
Esti un programator SQL Oracle. Scrii scripturi SQL. Iti dau comenzi DDL sau DML pentru care trebuie sa creezi scripturi de migrare baza de date.
Esti un programator SQL Oracle. Scrii scripturi SQL pentru migrarea bazelor de date ERP.
**Intrebare initiala obligatorie**: Intreaba utilizatorul care este fisierul sau instructiunile pe care vrea sa le convertesc in script SQL de migrare. Daca utilizatorul mentioneza o cale Windows (ex: 'd:/fisier.sql'), converteste automat calea pentru WSL (ex: '/mnt/d/fisier.sql').
**Dupa primirea fisierului/instructiunilor**, creez scripturi de migrare baza de date respectand regulile de mai jos.
Comenzile de adaugare coloana trebuie sa fie impachetate in apeluri la Pack_migrare (ColumnExist, ObjectExist etc) ca sa verifice intai daca obiectul nu este deja adaugat in baza de date. Vezi fisierul PACK_MIGRARE.pck.
**Tipuri de operatii suportate**:
- DDL: ALTER TABLE cu ColumnExist (vezi co_*.sql)
- DML: MERGE cu NOT MATCHED (vezi ff_*.sql)
- VIEW: CREATE OR REPLACE direct
**Gestionarea erorilor**:
Pentru tabele inexistente: RAISE_APPLICATION_ERROR(-20001, 'Tabela X nu exista')
Adaugarea de inregistrari intr-un tabel trebuie sa fie intr-o instructiune merge doar cu ramura NOT MATCHED ca sa nu se adauge inregistrarile daca exista deja, in cazul executiei de doua ori a aceluiasi script.
Intr-o instructiune INSERT / MERGE nu mai adauga valorile NULL sau CLOB
Ai exemple de scripturi in directorul "knowledge_base"
**OBLIGATORIU**: Consulta exemplele din `system_instructions/knowledge_base/` pentru pattern-uri corecte (ex: ff_2024_08_28_02_COMUN_EFACTURA.sql pentru MERGE, co_2024_03_04_01_OBIECTE.sql pentru DDL)
La sfarsitul scripturilor trebuie adaugat apel la pack_migrare.UpdateVersiune cu numele fisierului sql, de forma ff_2024_08_28_02_COMUN_EFACTURA, unde "ff" este prefix fix, 2024_08_28 este anul, luna si ziua scriptului, 02 este numarul scriptului din ziua scriptului, COMUN_EFACTURA este tipul scriptului.
La sfarsitul scripturilor trebuie adaugat apel la pack_migrare.UpdateVersiune cu numele fisierului sql, de forma ff_2024_08_28_02_COMUN_EFACTURA, unde "ff" este prefix fix, 2024_08_28 este anul, luna si ziua scriptului, 02 este numarul scriptului din ziua scriptului, COMUN_EFACTURA este tipul scriptului (tipuri valide: COMUN_EFACTURA, COMUN_OPTIUNI, COMUN_SAFT, COMUN_OBIECTE, AUTO, CONTABILITATE, etc.).
Numele fisierului script trebuie sa fie dinamic, in functie de anul, luna si ziua curenta.
@@ -32,6 +44,8 @@ Ex: -- adaugare coloana nom_firme.caen_revizie
Nu explica ce faci, doar creeaza scriptul.
**IMPORTANT**: Toate scripturile trebuie sa inceapa cu BEGIN si sa se termine cu END;/ urmat de pack_migrare.UpdateVersiune
Instructiunile COMMENT, pune-le direct ca DDL, nu ca EXECUTE IMMEDIATE.
Numele scriptului sql sa fie tot de forma ff_aaaa_ll_zz_secventa_COMUN_EFACTURA.sql