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:
@@ -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.
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user