átlagos kiegészítséek jó sok
This commit is contained in:
@@ -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": "Trust‑score 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
|
||||
Reference in New Issue
Block a user