75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
"""
|
|
Заполняет поле options_language в learning_questions.
|
|
Определяет, на каком языке показывать варианты ответов:
|
|
- 'user' — для вопросов "Что означает...?" (варианты на языке пользователя)
|
|
- 'pl' — для остальных (варианты на польском)
|
|
|
|
Запуск: python3 init_options_language.py
|
|
"""
|
|
import asyncio
|
|
import asyncpg
|
|
from config import DB_CONFIG
|
|
|
|
|
|
# Ключевые фразы, которые означают "вопрос на понимание смысла"
|
|
USER_LANG_PATTERNS = [
|
|
'co oznacza',
|
|
'co znaczy',
|
|
'что означает',
|
|
'що означає',
|
|
'what does',
|
|
'what means',
|
|
'переведи',
|
|
'переклади',
|
|
'przetłumacz',
|
|
'translate',
|
|
]
|
|
|
|
|
|
async def main():
|
|
pool = await asyncpg.create_pool(**DB_CONFIG)
|
|
|
|
async with pool.acquire() as conn:
|
|
# Получаем все вопросы
|
|
questions = await conn.fetch("""
|
|
SELECT question_id, prompt_pl, prompt_ru, prompt_uk, prompt_en
|
|
FROM learning_questions
|
|
""")
|
|
|
|
user_lang_count = 0
|
|
pl_lang_count = 0
|
|
|
|
for q in questions:
|
|
# Собираем все промпты в один текст для проверки
|
|
all_prompts = ' '.join([
|
|
q['prompt_pl'] or '',
|
|
q['prompt_ru'] or '',
|
|
q['prompt_uk'] or '',
|
|
q['prompt_en'] or '',
|
|
]).lower()
|
|
|
|
# Определяем язык вариантов
|
|
is_user_lang = any(pattern in all_prompts for pattern in USER_LANG_PATTERNS)
|
|
options_language = 'user' if is_user_lang else 'pl'
|
|
|
|
await conn.execute("""
|
|
UPDATE learning_questions
|
|
SET options_language = $2
|
|
WHERE question_id = $1
|
|
""", q['question_id'], options_language)
|
|
|
|
if is_user_lang:
|
|
user_lang_count += 1
|
|
else:
|
|
pl_lang_count += 1
|
|
|
|
print(f"✅ options_language = 'user': {user_lang_count} вопросов")
|
|
print(f"✅ options_language = 'pl': {pl_lang_count} вопросов")
|
|
print(f" Всего: {user_lang_count + pl_lang_count}")
|
|
|
|
await pool.close()
|
|
print("\n🎉 Готово!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |