átlagos kiegészítséek jó sok

This commit is contained in:
Roo
2026-03-22 11:02:05 +00:00
parent f53e0b53df
commit 5d44339f21
249 changed files with 20922 additions and 2253 deletions

View File

@@ -131,6 +131,80 @@ async def seed_params():
"description": "Szintek, büntetések és jutalmak mátrixa",
"scope_level": "global"
},
# --- 6.1 GAMIFICATION 2.0 (Seasonal Competitions & Self-Defense) ---
{
"key": "service_trust_threshold",
"value": 70,
"category": "gamification",
"description": "Minimum trust score a szerviz publikálásához (0-100)",
"scope_level": "global"
},
{
"key": "service_submission_rewards",
"value": {
"points": 50,
"xp": 100,
"social_credits": 10
},
"category": "gamification",
"description": "Jutalmak sikeres szerviz beküldésért",
"scope_level": "global"
},
{
"key": "seasonal_competition_config",
"value": {
"season_duration_days": 90,
"top_contributors_count": 10,
"rewards": {
"first_place": {"credits": 1000, "badge": "season_champion"},
"second_place": {"credits": 500, "badge": "season_runner_up"},
"third_place": {"credits": 250, "badge": "season_bronze"},
"top_10": {"credits": 100, "badge": "season_elite"}
}
},
"category": "gamification",
"description": "Szezonális verseny beállítások",
"scope_level": "global"
},
{
"key": "self_defense_penalties",
"value": {
"level_minus_1": {
"name": "Figyelmeztetés",
"restrictions": ["no_service_submissions", "reduced_search_priority"],
"duration_days": 7,
"recovery_xp": 500
},
"level_minus_2": {
"name": "Felfüggesztés",
"restrictions": ["no_service_submissions", "no_reviews", "no_messaging", "reduced_search_priority"],
"duration_days": 30,
"recovery_xp": 2000
},
"level_minus_3": {
"name": "Kitiltás",
"restrictions": ["no_service_submissions", "no_reviews", "no_messaging", "no_search", "account_frozen"],
"duration_days": 365,
"recovery_xp": 10000
}
},
"category": "gamification",
"description": "Önvédelmi rendszer büntetési szintek",
"scope_level": "global"
},
{
"key": "contribution_types_config",
"value": {
"service_submission": {"points": 50, "xp": 100, "weight": 1.0},
"verified_review": {"points": 30, "xp": 50, "weight": 0.8},
"expertise_tagging": {"points": 20, "xp": 30, "weight": 0.6},
"data_validation": {"points": 15, "xp": 25, "weight": 0.5},
"community_moderation": {"points": 40, "xp": 75, "weight": 0.9}
},
"category": "gamification",
"description": "Hozzájárulási típusok és pontozási súlyok",
"scope_level": "global"
},
# --- 7. ÉRTESÍTÉSEK ÉS KARBANTARTÁS ---
{
@@ -248,209 +322,4 @@ async def seed_params():
# --- 11. KÜLSŐ API-K (DVLA, UK) ---
{
"key": "dvla_api_enabled",
"value": True,
"category": "api_keys",
"description": "Engedélyezze-e a brit DVLA lekérdezéseket?",
"scope_level": "global"
},
{
"key": "dvla_api_url",
"value": "https://driver-vehicle-licensing.api.gov.uk/vehicle-enquiry/v1/vehicles",
"category": "api_keys",
"description": "Hivatalos DVLA Vehicle Enquiry API végpont",
"scope_level": "global"
},
{
"key": "dvla_api_key",
"value": "IDE_JÖN_A_VALÓDI_KULCS",
"category": "api_keys",
"description": "Bizalmas DVLA API kulcs (X-API-KEY)",
"scope_level": "global"
},
# --- 12. AI & ROBOTOK (Ollama integráció) ---
{
"key": "ai_model_text",
"value": "qwen2.5-coder:32b",
"category": "ai",
"description": "Fő technikai elemző modell (Ollama)",
"scope_level": "global"
},
{
"key": "ai_model_vision",
"value": "llava:7b",
"category": "ai",
"description": "Látó modell az OCR folyamatokhoz",
"scope_level": "global"
},
{
"key": "ai_temperature",
"value": 0.1,
"category": "ai",
"description": "AI válasz kreativitása (0.1 = precíz, 0.9 = kreatív)",
"scope_level": "global"
},
{
"key": "ai_prompt_ocr_invoice",
"value": "FELADAT: Olvasd ki a számla adatait. JSON válasz: {amount, currency, date, vendor, vat}.",
"category": "ai",
"description": "Robot 1 - Számla OCR prompt",
"scope_level": "global"
},
# --- 13. SOCIAL & VERIFIED REVIEWS (Epic 4.1 - #66) ---
{
"key": "REVIEW_WINDOW_DAYS",
"value": 30,
"category": "social",
"description": "Értékelési időablak napokban a tranzakció után",
"scope_level": "global"
},
{
"key": "TRUST_SCORE_INFLUENCE_FACTOR",
"value": 1.0,
"category": "social",
"description": "Trustscore súlyozási tényező a szerviz értékeléseknél",
"scope_level": "global"
},
{
"key": "REVIEW_RATING_WEIGHTS",
"value": {
"price": 0.25,
"quality": 0.35,
"time": 0.20,
"communication": 0.20
},
"category": "social",
"description": "Értékelési dimenziók súlyai az összpontszám számításához",
"scope_level": "global"
},
{
"key": "ai_prompt_gold_data",
"value": "Készíts technikai adatlapot a(z) {make} {model} típushoz a megadott adatok alapján: {context}. Csak hiteles JSON-t adj!",
"category": "ai",
"description": "Robot 3 - Technikai dúsító prompt",
"scope_level": "global"
}
] # <-- ITT HIÁNYZOTT A ZÁRÓJEL!
# ----------------------------------------------------------------------
# HIERARCHIKUS KERESÉSI MÁTRIXOK (A SearchService 2.4-hez)
# Ezek az értékek felülbírálják az alapértelmezéseket a megfelelő "scope" esetén.
# ----------------------------------------------------------------------
# 1. GLOBÁLIS ALAP (Free usereknek)
params.append({
"key": "RANKING_RULES",
"scope_level": "global",
"scope_id": None,
"value": {
"ad_weight": 8000,
"partner_weight": 1000,
"trust_weight": 5,
"dist_penalty": 40,
"can_use_prefs": False,
"search_radius_km": 25
},
"category": "search",
"description": "Alapértelmezett (Free) rangsorolási szabályok"
})
# 2. PREMIUM CSOMAG SZINTŰ BEÁLLÍTÁS (Közepes szint)
params.append({
"key": "RANKING_RULES",
"scope_level": "package",
"scope_id": "premium",
"value": {
"pref_weight": 10000,
"partner_weight": 2000,
"trust_weight": 50,
"ad_weight": 500,
"dist_penalty": 20,
"can_use_prefs": True,
"search_radius_km": 50
},
"category": "search",
"description": "Prémium csomag rangsorolási szabályai"
})
# 3. VIP CSOMAG SZINTŰ BEÁLLÍTÁS
params.append({
"key": "RANKING_RULES",
"scope_level": "package",
"scope_id": "vip",
"value": {
"pref_weight": 20000, # A kedvenc mindent visz
"partner_weight": 5000,
"trust_weight": 100, # A minőség számít
"ad_weight": 0, # VIP-nek nem tolunk hirdetést az élre
"dist_penalty": 5, # Alig büntetjük a távolságot
"can_use_prefs": True,
"search_radius_km": 150
},
"category": "search",
"description": "VIP csomag rangsorolási szabályai"
})
# 4. EGYÉNI CÉGES FELÜLBÍRÁLÁS (Pl. ProfiBot Flotta Co.)
params.append({
"key": "RANKING_RULES",
"scope_level": "user",
"scope_id": "99",
"value": {
"pref_weight": 50000, # Nekik csak a saját szerződött partnereik kellenek
"can_use_prefs": True,
"search_radius_km": 500 # Az egész országot látják
},
"category": "search",
"description": "Egyedi flotta-ügyfél keresési szabályai"
})
logger.info("🚀 Rendszerparaméterek szinkronizálása a 2.0-ás modell szerint...")
added_count = 0
updated_count = 0
for p in params:
# GONDOLATMENET A JAVÍTÁSHOZ:
# Muszáj a scope_level-t és scope_id-t is vizsgálni, különben az SQLAlchemy
# összeomlik (MultipleResultsFound), mert ugyanaz a 'key' (pl. RANKING_RULES)
# több sorban is szerepel a hierarchia miatt!
s_level = p.get("scope_level", "global")
s_id = p.get("scope_id", None)
stmt = select(SystemParameter).where(
SystemParameter.key == p["key"],
SystemParameter.scope_level == s_level,
SystemParameter.scope_id == s_id
)
res = await db.execute(stmt)
existing = res.scalar_one_or_none()
if not existing:
# Új rekord létrehozása
new_param = SystemParameter(
key=p["key"],
value=p["value"],
category=p["category"],
description=p["description"],
scope_level=s_level,
scope_id=s_id,
last_modified_by=None
)
db.add(new_param)
added_count += 1
# Azonnali commit, hogy a következő körben már lássa a DB!
await db.commit()
else:
# Csak frissítés, ha szükséges
existing.description = p["description"]
existing.category = p["category"]
updated_count += 1
await db.commit()
logger.info(f"✅ Kész! Új: {added_count}, Frissített meta: {updated_count}")
if __name__ == "__main__":
asyncio.run(seed_params())
"key": "dvla_api_en