feat: Robot ecosystem v1.2.6 - Google Search RAG & Master-Merge logic stabilized

This commit is contained in:
2026-02-17 22:44:57 +00:00
parent 2def6b2201
commit b11b9bce87
25 changed files with 3192 additions and 789 deletions

View File

@@ -210,4 +210,14 @@ A rendszer az adatintegritás és a sebesség érdekében hibrid modellt haszná
* **`data.wallets`**: 3-as osztású egyenleg (`earned`, `purchased`, `coins`).
* **`data.financial_ledger`**: Pénzügyi tranzakciók főkönyve.
* **`data.security_audit_logs`**: Biztonsági események és 4-szem jóváhagyások.
* **`data.org_sales_assignments`**: Cég-Üzletkötő kapcsolat (Farming jog).
* **`data.org_sales_assignments`**: Cég-Üzletkötő kapcsolat (Farming jog).
## 4. MDM és Jármű Katalógus Struktúra
A rendszer hibrid (Relációs + JSONB) modellt használ a skálázhatóság érdekében.
### 4.1 Táblák:
* **data.vehicle_model_definitions**: A "Szent Grál". Tartalmazza a márka, kód, marketing név mellett a fix numerikus adatokat (ccm, kw, weight) a gyors szűréshez.
* **data.feature_definitions**: Globális szótár az összes extráról (ABS, Halradar, Retarder stb.), kategóriákba sorolva.
* **data.model_feature_maps**: Összeköti a modellt az extrákkal.
- `availability`: [STANDARD, OPTIONAL, ACCESSORY]
* **data.vehicle_model_reviews**: Felhasználói vélemények a típusról (1-5 csillag, szöveges).

View File

@@ -30,4 +30,45 @@
## 📅 SPRINT 2 (Marketplace MVP)
1. **OCR Pipeline:** MinIO feltöltés + Tesseract teszt.
2. **Service Request:** Frontend űrlap ajánlatkéréshez.
3. **Ranking Engine:** Távolság + Súlyozás algoritmus implementálása.
3. **Ranking Engine:** Távolság + Súlyozás algoritmus implementálása.
# 13. Roadmap és Technikai Adósság (v1.2.6)
Ez a dokumentum rögzíti a rendszer fejlesztési fázisait és azokat a technikai kompromisszumokat, amelyeket a gyors haladás érdekében hoztunk, de később felülvizsgálatot igényelnek.
## 13.1 Rövid távú Roadmap (Q1-Q2)
### 1. Intelligens Kereső API (Fuzzy Search)
- **Cél:** A `synonyms` mezőben tárolt alternatív nevek kihasználása.
- **Megvalósítás:** PostgreSQL `tsvector` és `GIN` indexek használata, hogy a kereső akkor is találjon eredményt, ha a felhasználó "Tracer"-t ír be "Yamaha MT-09 Tracer" helyett.
### 2. Média Kezelés & MinIO Integráció
- **Cél:** Járműfotók automatikus beszerzése.
- **Megvalósítás:** Új bot fejlesztése, amely a dúsított `marketing_name` alapján hivatalos sajtófotókat keres, és azokat a már futó MinIO objektumtárba menti.
### 3. Robot 4: Service Hunter (Szerviz-logika)
- **Cél:** Karbantartási tervek generálása.
- **Megvalósítás:** A `specifications` (olajmennyiség, gyertya típus) mezőkből kiindulva szerviz-csomagok és árak kalkulálása.
## 13.2 Technikai Adósság (Tech Debt)
### 1. Adattípus Optimalizálás: JSON vs. JSONB
- **Helyzet:** A `synonyms` és `specifications` mezők jelenleg `JSON` típusúak.
- **Adósság:** A Postgres függvények (pl. `jsonb_array_length`) használatához folyamatos casting (`::jsonb`) szükséges, ami lassítja a lekérdezéseket.
- **Megoldás:** Egy Alembic migráció keretében az összes JSON oszlopot át kell állítani `JSONB` típusra.
### 2. "N/A-{id}" és "UNKNOWN-{id}" Kódok Tisztítása
- **Helyzet:** A NOT NULL és UNIQUE kényszerek miatt a robot egyedi ál-kódokat generál, ha az AI nem talál gyári kódot.
- **Adósság:** Ezek nem valódi technikai kódok.
- **Megoldás:** Szükséges egy manuális felülvizsgálati (Manual Review) felület, ahol az operátorok a `N/A` kódú rekordokat ellenőrizhetik vagy egyesíthetik.
### 3. AI Response Parsing (Regex Workaround)
- **Helyzet:** A Gemini Search Tool letiltja a kényszerített JSON választ, ezért Regex-szel bányásszuk ki a JSON-t a nyers szövegből.
- **Adósság:** Ez a megoldás törékeny, ha az AI stílusa jelentősen megváltozik.
- **Megoldás:** Monitorozni kell az AI API frissítéseit; amint a Google engedélyezi a Search + Controlled Generation kombinációt, vissza kell térni a natív JSON módra.
## 13.3 Hosszú távú Vízió (Q3+)
- **Trust Engine:** A járművek történetének és szervizadatainak hitelesítése.
- **Global Fleet Insight:** Flottaszintű elemzések készítése a dúsított MDM adatok alapján.

View File

@@ -481,4 +481,28 @@ Kérlek, ellenőrizd, hogy ezek a fájlok a legfrissebb verziót tartalmazzák-e
1. **Service Réteg Implementálása:** Megírni a logikát, ami ténylegesen számolja a 10/5%-os jutalékot és beírja a `FinancialLedger`-be.
2. **Admin UI:** Felületet készíteni a `system_parameters` (Jutalék szintek) állítására.
3. **Robot v1.8:** A "Ghost" szervizek bekötése az új `Person` logikába (automata `identity_hash` generálás a cégadatokból).
3. **Robot v1.8:** A "Ghost" szervizek bekötése az új `Person` logikába (automata `identity_hash` generálás a cégadatokból).
# Changelog
## [v1.1.0] - 2026-02-17 "The Awakening"
### 🚀 Hozzáadva (New Features)
- **AI Service (Gemini Integration):** `app/services/ai_service.py` létrehozva. A rendszer mostantól képes a "Yamaha 4HN" típusú zajos adatokból tiszta marketing neveket és műszaki specifikációkat generálni.
- **Robot 2 (Technical Enricher):** `app/workers/technical_enricher.py` frissítve v1.1-re. Hibrid működés: RDW adatbázis + AI kiegészítés.
- **Robot 3 (OCR - Előkészület):** `app/workers/ocr_robot.py` váza elkészült a dokumentumok feldolgozásához.
- **Reporting:** `app/scripts/morning_report.py` létrehozva a napi robot-tevékenység összefoglalására.
- **Logging:** Új `ProcessLog` tábla létrehozva az `audit` sémában a háttérfolyamatok nyomon követésére.
### 🐛 Javítva (Bug Fixes)
- **Docker Infrastructure:** - Javítva a `KeyError: 'ContainerConfig'` hiba a Docker Compose V2-re váltással.
- Javítva az "empty database URL" hiba a migrációnál (`.env` változók helyes átadása).
- Hálózati beragadások (Gitea/Nginx conflict) feloldva.
- **Circular Imports:** Megszüntetve a `SystemParameter` modell duplikációja (`system_config.py` vs `system.py`). Minden szerviz (`Auth`, `Security`, `Cost`, `Gamification`) mostantól a központi `app.models`-ből importál.
- **Swagger UI:** Az API sikeresen elindul, a dokumentáció elérhető a `/docs` végponton.
### ⚙️ Infrastruktúra (Refactor)
- **Docker Compose:** Teljes tisztítás. Duplikált környezeti változók törölve, `env_file` használat optimalizálva.
- **Services:** A robotok (`enricher`, `catalog`, `hunter`) külön konténerekbe szervezve, `unbuffered` python kimenettel a valós idejű logolásért.
### 🛡️ Biztonság
- `.env` fájl szerkezete egységesítve, duplikációk eltávolítva.

View File

@@ -223,4 +223,13 @@ Kapcsolatot teremt egy Jármű (`Asset`) és egy Szervezet (`Organization`) köz
## 4.0 Catalog 2022+ Strategy (Hybrid Mode)
A CarQueryAPI korlátai miatt 2022 utáni modelleknél a Robot 1 az alábbi hibrid logikát alkalmazza:
1. **API Ninjas & Auto-Data Sync:** Elsődleges technikai forrás.
2. **European Scraper Mode:** A mobile.de és autoscout24.hu portálok típusválasztóinak (meta-adatok) aratása a legfrissebb modellek és motorváltozatok rögzítéséhez.
2. **European Scraper Mode:** A mobile.de és autoscout24.hu portálok típusválasztóinak (meta-adatok) aratása a legfrissebb modellek és motorváltozatok rögzítéséhez.
## 6. Szerviz Logika és Intervallumok
A szervizkönyv nem csak eseménynapló, hanem előrejelző rendszer.
### 6.1 Karbantartási Terv (Maintenance Plan)
Az MDM-ben rögzített `specifications` tartalmazza a fődarabok szervizigényét:
- **Folyadékok:** Típus, mennyiség, csereperiódus (km/hónap).
- **Alkatrészek:** Gyári kódok és alternatívák (cross-reference).
- **Biztonság:** Időszakos vizsgák (érintésvédelem, emelőhátfal, hajó szemle).

View File

@@ -73,4 +73,13 @@ Minden talált entitás pontszámot kap:
### 3. Döntési Szintek
- **80+ pont:** Ellenőrzött (Verified) - Automatikus publikálás.
- **40-79 pont:** Moderációra vár - Manuális adminisztrátori jóváhagyás szükséges.
- **<40 pont:** Elutasítva/Inaktív - Marad a Stage táblában.
- **<40 pont:** Elutasítva/Inaktív - Marad a Stage táblában.
## 6. Szerviz Logika és Intervallumok
A szervizkönyv nem csak eseménynapló, hanem előrejelző rendszer.
### 6.1 Karbantartási Terv (Maintenance Plan)
Az MDM-ben rögzített `specifications` tartalmazza a fődarabok szervizigényét:
- **Folyadékok:** Típus, mennyiség, csereperiódus (km/hónap).
- **Alkatrészek:** Gyári kódok és alternatívák (cross-reference).
- **Biztonság:** Időszakos vizsgák (érintésvédelem, emelőhátfal, hajó szemle).

View File

@@ -1,7 +0,0 @@
21.1 Adatmélység és Idővonal
A rendszer célja a teljes EU-s járműpark lefedése a 2000-es évjárattól kezdődően.
Hierarchia: Make -> Model -> Generation -> Engine Variant -> Trim Level.
Kezdeti adatok: Az első fázisban a robot a 4 alapszintet tölti (Márka, Típus, Évjárat, Motor), majd iteratívan mélyíti a factory_data JSONB mezőt (olajmennyiség, nyomaték, guminyomás stb.).

View File

@@ -0,0 +1,57 @@
21.1 Adatmélység és Idővonal
A rendszer célja a teljes EU-s járműpark lefedése a 2000-es évjárattól kezdődően.
Hierarchia: Make -> Model -> Generation -> Engine Variant -> Trim Level.
Kezdeti adatok: Az első fázisban a robot a 4 alapszintet tölti (Márka, Típus, Évjárat, Motor), majd iteratívan mélyíti a factory_data JSONB mezőt (olajmennyiség, nyomaték, guminyomás stb.).
# 21. Deep Asset Catalog (MDM)
Ez a dokumentum írja le a járművek technikai mélységét kategóriánként.
## 1. Kategória Specifikus Adatok (JSONB Schemas)
- **Személyautó:** Klíma fajták (digit, többzónás), hajtáslánc, ADAS rendszerek.
- **Teherautó/Kamion:** Tengelyek száma, fülke típusa, retarder típusok, menetíró.
- **Motorkerékpár:** Munkaütem, hűtés módja, táskák/dobozok konfigurációja.
- **Hajó:** Merülés, vízkiszorítás, orrsugárkormány, navigációs elektronika.
## 2. Numerikus Indexelés
A gyors keresés érdekében a következő mezők fix oszlopok:
- `engine_capacity` (ccm)
- `power_kw` (kW)
- `weight_kg` (Súly)
- `year_from / year_to` (Gyártási időszak)
# 21. Deep Asset Catalog & Master Data Management (MDM)
Ez a modul a rendszer "agyát" képezi, ahol a zajos külső forrásokból származó adatok tiszta, dúsított és egyedi járműspecifikációkká alakulnak.
## 21.1 Adatmodell (vehicle_model_definitions)
A katalógus nem egyszerűen rekordokat tárol, hanem egy Master-Slave viszonyrendszert valósít meg a duplikációk elkerülése érdekében.
### Kulcsfontosságú mezők:
- `technical_code`: Egyedi gyári azonosító (pl. PC44, ZX600R). Elsődleges kulcs a deduplikációhoz.
- `parent_id`: Önhivatkozás. Ha egy rekord duplikátum, itt mutat a Master (eredeti) rekordra.
- `synonyms` (JSONB): Alternatív elnevezések gyűjteménye (pl. "Tracer 9", "MT-09 Tracer") a kereshetőség javítására.
- `year_from / year_to`: Gyártási intervallumok a generációk megkülönböztetéséhez.
- `specifications` (JSONB): Műszaki adatok (olajmennyiség, gyertya típus, hűtőfolyadék).
## 21.2 Master-Merge Logika
A rendszer az "Igazság Hierarchiáját" követi az adatok mentésekor:
1. **Hatósági Adat (RDW):** CCM és teljesítmény (kW) forrása.
2. **AI Adatbányászat (Gemini + Google Search):** Technikai kódok, évjáratok és szervizadatok forrása.
3. **Manuális felülbírálat:** Legmagasabb prioritású `status = 'manual_check'`.
### Összefésülési szabály (Deduplikáció):
A Robot 2 csak akkor olvaszt össze két rekordot, ha:
- A `make` (gyártó) egyezik.
- A `technical_code` azonos és nem 'N/A'.
- A `engine_capacity` (CCM) megegyezik.
## 21.3 Állapotgépek (Status Lifecycle)
- `unverified`: Alapállapot, csak nyers adatok.
- `ai_enriched`: Sikeresen dúsított, hitelesített Master rekord.
- `duplicate`: Felismert másolat, amely egy Master rekordhoz van láncolva.

View File

@@ -110,4 +110,55 @@ A robotok és az n8n szoros együttműködésben dolgoznak.
- **Event Hunter:** n8n workflow figyeli a motoros/autós találkozókat és eseményeket, majd összeköti őket a helyi szervizpartnerekkel.
- **Gamification Link:** A robot regisztrálja a felhasználói validálásokat és kiosztja a pontokat/krediteket.
# 22. Robot Ökoszisztéma
A rendszer automatizált adatgyűjtő és dúsító ágensei.
## 1. Model Enrichment Robot (Dúsító)
- **Működés:** Hajnali 01:00 - 05:00 között.
- **Logika:** 1. Új `unverified` kódok keresése.
2. RDW API lekérdezés (Holland alapok).
3. AI (Gemini) Deep Scraping: Marketing név, felszereltségi lista, szervizintervallumok kinyerése.
4. Validálás a JSON Sémák alapján.
5. Master státusz beállítása.
## 2. Resource Management
A robot figyeli a szerver terhelését. Ha a CPU > 70%, az AI lekérdezéseket lassítja (throttle), hogy ne zavarja a hajnali biztonsági mentéseket.
# 22. Robot Ökoszisztéma Specifikáció
A rendszer autonóm robotok hálózatából áll, amelyek egymásra épülve tisztítják és dúsítják a flottaszintű adatokat.
## 22.1 Robot 1: Catalog Scraper (RDW)
- **Feladata:** Külső API-k (pl. Holland RDW) folyamatos monitorozása és új járművek importálása.
- **Működés:** Nyers adatokat hoz létre `unverified` státusszal.
## 22.2 Robot 2: Technical Enricher & Master Merge (v1.2.6)
Ez a legkomplexebb modul, amely AI-t és webes keresést használ.
### Főbb képességek:
- **Google Search Integration (RAG):** Ha az AI nem ismeri a modellkódot, valós időben keres a gyártói oldalakon.
- **Safe-Merge Technológia:** Megakadályozza a technikai kód nélküli rekordok véletlen összevonását (`N/A-{id}` generálásával).
- **Atomi tranzakciókezelés:** Minden mentés külön tranzakció, így a hiba nem szakítja meg a tömeges feldolgozást.
### Működési folyamat:
1. Rekord kiválasztása (`status = unverified`).
2. RDW kiegészítő adatok lekérése.
3. Gemini 2.0 Flash meghívása keresőeszközzel.
4. JSON parseolás és kód-validáció.
5. Deduplikáció ellenőrzése és mentés.
## 22.3 Robot 3: OCR & Document AI
- **Feladata:** Feltöltött okmányok, számlák és kilométeróra állások felismerése.
- **Technológia:** Multimodális Gemini 2.0 elemzés.
- **Kimenet:** Strukturált JSON, amely azonnal validálható a katalógus (R2) adataival.
## 22.4 Robot 4: Service Hunter (Tervezett)
- **Cél:** A dúsított technikai adatok alapján szervizpartnerek és árak keresése.
- **Input:** Robot 2 által generált szerviz-specifikációk (olaj típus, mennyiség).
## 22.5 Robot Monitoring & Operáció
A robotok állapotát nem csak SQL-ben, hanem az n8n Dashboardon és a logok szintjén is követjük.
- **Hibakezelés:** Automatikus visszalépés és ideiglenes kódgenerálás (`RESET-`, `UNKNOWN-`) az adatbázis kényszerek (Unique, Not Null) betartása érdekében.