80 lines
3.6 KiB
JSON
80 lines
3.6 KiB
JSON
{
|
||
"$schema": "metaagent-task-manifest",
|
||
"version": "1.0",
|
||
"session_id": "metaagent-003",
|
||
"goal": "i18n (ru/en) — инфраструктура и обёртка строк, контроль актуальности переводов",
|
||
"created_at": "2026-07-22T18:00:00Z",
|
||
"tasks": [
|
||
{
|
||
"id": "T9",
|
||
"title": "i18n инфраструктура (cli/i18n.py)",
|
||
"description": "Создан модуль cli/i18n.py с Translator, t(), set_lang(), setup_i18n(). Язык: CF_LANG (env), по умолчанию 'ru'. Русские переводы — полные, английский — скелет (fallback на ru).",
|
||
"type": "feature",
|
||
"files": ["cli/i18n.py"],
|
||
"depends_on": [],
|
||
"acceptance_criteria": [
|
||
"t() возвращает русский текст при CF_LANG=ru",
|
||
"t() возвращает русский текст при CF_LANG=en (fallback)",
|
||
"t('nonexistent') возвращает 'nonexistent'",
|
||
"setup_i18n() читает CF_LANG из окружения"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T10",
|
||
"title": "Обёртка CLI-строк в t()",
|
||
"description": "Все user-facing строки в cli/main.py и cli/config.py заменены на вызовы t('key', ...). Русский словарь содержит ~150 ключей.",
|
||
"type": "refactor",
|
||
"files": ["cli/main.py", "cli/config.py"],
|
||
"depends_on": ["T9"],
|
||
"acceptance_criteria": [
|
||
"Все help-строки typer.Option/Argument через t()",
|
||
"Все console.print сообщения через t()",
|
||
"Все docstrings оставлены как комментарии (typer не использует)",
|
||
"ruff check проходит"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T11",
|
||
"title": "AI-промпты через i18n",
|
||
"description": "prompt.analyze, prompt.advice, prompt.scenario_comparison добавлены в словарь i18n, prompts.py использует t().",
|
||
"type": "refactor",
|
||
"files": ["ai/prompts.py"],
|
||
"depends_on": ["T9"],
|
||
"acceptance_criteria": [
|
||
"ANALYZE_PROMPT = t('prompt.analyze')",
|
||
"ADVICE_PROMPT = t('prompt.advice')",
|
||
"SCENARIO_COMPARISON_PROMPT = t('prompt.scenario_comparison')"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T12",
|
||
"title": "Тесты i18n",
|
||
"description": "test_i18n.py: базовые тесты Translator, t(), set_lang, fallback, неизвестный ключ.",
|
||
"type": "test",
|
||
"files": ["tests/test_i18n.py"],
|
||
"depends_on": ["T9"],
|
||
"acceptance_criteria": [
|
||
"pytest tests/test_i18n.py проходит",
|
||
"Покрытие: ru default, en fallback, неизвестный ключ, format args"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T13",
|
||
"title": "Аудит и контроль актуальности переводов",
|
||
"description": "Периодическая проверка: все ли ключи из TRANSLATIONS['ru'] имеют соответствующий перевод в TRANSLATIONS['en']. При добавлении новых фич — новые ключи должны добавляться в оба словаря.",
|
||
"type": "audit",
|
||
"files": ["cli/i18n.py"],
|
||
"depends_on": ["T9"],
|
||
"acceptance_criteria": [
|
||
"Все ru-ключи имеют en-перевод или fallback",
|
||
"При добавлении нового t('key') он регистрируется в _r()"
|
||
],
|
||
"status": "pending"
|
||
}
|
||
]
|
||
}
|