flowchart TD
A[Felhasználó feltölt egy XLSX fájlt] --> B[Ügyfél-dashboard]
B --> C[Feltöltés a rendszerbe]
C --> D[Dashboard app validáció]
D --> D1{Kötelező oszlopok megvannak?
Cikkszám, Termék Név, Státusz,
Raktárkészlet, Kategória}
D1 -- Nem --> D2[400 JSON hiba
uploadError a dashboardon]
D1 -- Igen --> E[Excel bekerül az Inboxba
Product_Inbox]
E --> F[Automatikus feldolgozás
másodperceken belül indul]
F --> G{Van új XLSX?}
G -- Nem --> G0[Idle state]
G -- Igen --> H[Input validáció + state init]
H --> I[Korai előszűrés]
I --> I1{Raktárkészlet > 0
és nem bundle?}
I1 -- Nem --> I2[Kizárt sorok eldobjuk
nem mennek tovább]
I1 -- Igen --> I3[Prefiltered Excel mentése
intermediate_v3/unas_v3_prefiltered_*.xlsx]
BP0[Business Profile config
ügyfélprofil / identitás / hely / előnyök] --> BP1[STAGE1 prompt input]
I3 --> S1[STAGE1 - SEO]
S1 --> S1A{SEO Title üres?}
S1A -- Nem --> S1B[SEO stage skip]
S1A -- Igen --> S1C[Kategória routing]
S1C --> S1D[Perplexity research]
S1D --> BP1
BP1 --> S1E[SEO AI generation]
S1E --> S1F[Írás a sorba]
S1F --> S1F1[Rövid leírás]
S1F --> S1F2[SEO Title]
S1F --> S1F3[SEO Description]
S1F --> S1F4[SEO Keywords]
S1F --> S1F5[Lapfülek]
S1F --> S1F6[Brand]
S1F --> S1F7[Gyártó]
S1F --> S1F8[Utolsó módosítás]
S1B --> S1OUT
S1F8 --> S1OUT[STAGE1 output
unas_v3_s1_seo_*.xlsx]
S1OUT --> S2[STAGE2 - Similar]
S2 --> S2A{Hasonló Termékek üres?}
S2A -- Nem --> S2B[Similar skip]
S2A -- Igen --> S2C[Jelöltgyűjtés kategória szerint]
S2C --> S2D[Ár logika
ha nincs ár vagy 0: belsőleg 10000]
S2D --> S2E[AI kiválasztás]
S2E --> S2F[Backfill, ha kevés találat]
S2F --> S2G[Hasonló Termékek írása]
S2G --> S2H[Utolsó módosítás]
S2B --> S2OUT
S2H --> S2OUT[STAGE2 output
unas_v3_s2_similar_*.xlsx]
S2OUT --> S3[STAGE3 - Accessories]
S3 --> S3A{Kiegészítő Termékek üres?}
S3A -- Nem --> S3B[Accessories skip]
S3A -- Igen --> S3C[Fix category -> SKU mapping]
S3C --> S3D[Parent fallback]
S3D --> S3E[Kiegészítő Termékek írása]
S3E --> S3F[Utolsó módosítás]
S3B --> S3OUT
S3F --> S3OUT[STAGE3 output
unas_v3_s3_acc_*.xlsx]
S3OUT --> S4[STAGE4 - Technical]
S4 --> S4A{Ital termék?}
S4A -- Nem --> S4B[Technical skip]
S4A -- Igen --> S4C{Van / kell űrtartalom?}
S4C -- Igen --> S4D[Névből űrtartalom parse]
S4C -- Nem --> S4E[Űrtartalom változatlan]
S4D --> S4F[Méret + másodlagos egység]
S4E --> S4G{Alkoholos ital?}
S4F --> S4G
S4G -- Nem --> S4H[ABV nem releváns]
S4G -- Igen --> S4I{Van / kell ABV?}
S4I -- Igen --> S4J[Névből ABV parse]
S4I -- Nem --> S4K[ABV változatlan]
S4J --> S4L[Technikai mezők írása]
S4H --> S4L
S4K --> S4L
S4B --> S4OUT
S4L --> S4OUT[STAGE4 output
unas_v3_s4_tech_*.xlsx]
S4OUT --> S5[STAGE5 - Fallback Brand/Gyártó + DRS]
S5 --> S5A[Szöveges mezők tisztítása]
S5A --> S5B{Brand vagy Gyártó hiányzik?}
S5B -- Nem --> S5C[Fallback skip]
S5B -- Igen --> S5D[Egyszerű AI fallback]
S5D --> S5E[Brand kitöltése ha hiányzik]
S5D --> S5F[Gyártó kitöltése ha hiányzik]
S5E --> S5G[DRS detektálás]
S5F --> S5G
S5C --> S5G
S5G --> S5H{DRS termék?}
S5H -- Igen --> S5I[Plusz szolgáltatások mezők]
S5H -- Nem --> S5J[DRS skip]
S5I --> S5OUT
S5J --> S5OUT[STAGE5 output
unas_v3_s5_norm_*.xlsx]
S5OUT --> S6[STAGE6 - Finalize]
S6 --> S6A[CrossSale1 = 1]
S6A --> S6B[CrossSale2 = 1]
S6B --> S6C[CrossSale3 = 0]
S6C --> S6D[Google kategória fix érték]
S6D --> S6E[Tiltott és üres oszlopok szűrése]
S6E --> S6F[Final XLSX az Outboxba]
S6F --> S6G[Másolat a publish downloads mappába]
S6G --> S6H[Inbox archíválás]
S6H --> Z[Status = complete]
Z --> UI1[Állapot-lekérdezés a felületen]
Z --> UI2[Kész fájl letöltése]
UI1 --> UI3[Dashboard kész állapot]
UI2 --> UI4[Felhasználó valódi XLSX-et tölt le]
classDef entry fill:#e0f2fe,stroke:#0284c7,stroke-width:2px,color:#111;
classDef stage fill:#fff7ed,stroke:#ea580c,stroke-width:2px,color:#111;
classDef data fill:#ecfccb,stroke:#65a30d,stroke-width:2px,color:#111;
classDef warn fill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#111;
classDef cfg fill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#111;
class A,B,C,D,D1,E,F,G,H entry;
class S1,S2,S3,S4,S5,S6 stage;
class I,I2,I3,S1OUT,S2OUT,S3OUT,S4OUT,S5OUT,S6F,S6G,S6H,UI1,UI2,UI3,UI4,Z data;
class D2 warn;
class BP0,BP1 cfg;