DBR Projekt Dokumentáció
1. Projekt Áttekintés
A DBR projekt egy adat-analitikai és feldolgozó rendszer, amely pénzügyi eszközárfolyamok és felhasználói szavazatok aggregálására, elemzésére és riportolására szolgál. Fő célja gördülő átlagok, napi statisztikák és optimális értékek számítása a követett eszközökre (pl. olaj, EUR, arany, BTC), miközben kezeli a felhasználói inputokat és biztosítja az adatintegritást.
A rendszer nyers árfolyamokat és szavazatokat fogad, ezeket több lépésben feldolgozza, majd eredményeit relációs adatbázisban tárolja. Fő fogalmak: eszközök, árfolyamok, DBR (Dinamikus Bázisráta), felhasználói szavazás. Az adatok beolvasástól az átlagoláson és statisztikákon át a riportolásig és értesítésig áramlanak.
2. Architektúra Diagram
3. Adatbázis séma diagram
4. Adatfolyam leírás
- Új árfolyam és szavazat adatok érkeznek külső forrásból és bekerülnek az adatbázisba.
- Az
averages.pygördülő átlagokat számol a legutóbbi mintákból, eredményt aRatesAtáblába menti. - A
daily_stats.pynapi statisztikákat számol minden eszközre (pl. alkalmazott és optimális DBR), eredményt aDailyStatstáblába menti. - A
daily_user_stats.pyfelhasználói szintű statisztikákat számol szavazatok és eszközteljesítmény alapján. - A
real_time.pykezeli a valós idejű frissítéseket, biztosítja aRatesAnaprakészségét, szükség esetén resetel. - Health check és hibakezelő modulok figyelik a hiányzó vagy hibás adatokat, naplóznak és szükség esetén Discordon értesítenek.
5. Fő osztályok és függvények
- AveragePrecalculator: Gördülő átlagok számítása és feltöltése az adatbázisba. Batch feldolgozást és a
RatesAtáblát használja. - BaseAssetCalculator: Napi statisztikák számítása minden eszközre (pl. hozam, DBR értékek) a
RatesAalapján. - OptimalCalculator: Optimális DBR értékek meghatározása történeti adatok alapján.
- DailyUserStatCalculator: Felhasználói szavazatok aggregálása, elemzése, riport statisztikák készítése.
- RTC (real-time controller): Valós idejű frissítések szervezése, adatnaprakészség és resetek kezelése.
6. Fő algoritmusok és számítások
- Gördülő átlag számítás: Idősoros adatokon csúszó ablakos átlagolás minden eszközre, a rövid távú kilengések kisimítására.
- DBR számítás: Dinamikus bázisráta számítása, értékek skálázása és normalizálása az összehasonlíthatóság érdekében.
- Napi hozam és legjobb szavazat statisztikák: Napi teljesítménymutatók aggregálása eszközökre és felhasználókra.
- Hiányzó/késő adatok kezelése: Forward-filling és health check a teljesség és integritás érdekében.
7. Hibakezelés és health check
- Hiányzó vagy duplikált sorok detektálása egyedi kivételekkel és validációval.
- Adathibák naplózása és kritikus esetben Discord értesítés (
send_warning.py). - Hiányos adatok pótlása forward-fillinggel vagy újraszámolással.
8. Valós idejű feldolgozási folyamat
9. Konfiguráció és konstansok
- ASSET_NO: Követett eszközök száma (pl. 4: olaj, EUR, arany, BTC).
- SAMPLES: Minták száma az átlagoláshoz a DBR számításban.
- MyNAN: Speciális érték hiányzó vagy hibás adat jelölésére az adatbázisban.
- DBR_SCALE_VALUE: Skálázó tényező a DBR értékek egységesítéséhez.
10. Naplózás és értesítések
A naplózás a Python logging moduljával történik, rotáló fájlkezelővel. Kritikus hibák Discordon keresztül jutnak el a projekt felelőseihez a send_warning.py modul segítségével, amely HTTP POST kérést küld egy webhookra.
11. Bővítés és karbantartás
- Új eszköz hozzáadásához frissítsd az
ASSET_NO-t, és minden érintett táblát, számítást igazíts hozzá. - Átlagolási logika módosításához az
AveragePrecalculator-t és kapcsolódó függvényeket kell módosítani. - Új értesítési csatorna integrálásához bővítsd a
send_warning.py-t további végpontokkal. - Kódminőség fenntartása: moduláris felépítés, alapos hibakezelés, rendszeres health check.
- Adatintegritás: bemenetek és kimenetek validálása minden feldolgozási lépésnél.