Files
filwordspl-backend/init_options_language.py
T
2026-09-20 11:45:58 +00:00

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())