diff --git a/CONTEXT.md b/CONTEXT.md index f937b0c..9b25ed8 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -8,7 +8,7 @@ **Этап:** Фаза 1 (Frontend) завершена **Фаза MVP:** Готов к тестированию базового функционала -**Последнее обновление:** 2025-12-29 +**Последнее обновление:** 2025-12-31 --- @@ -33,6 +33,8 @@ | 2025-12-29 | **Фаза 1:** Frontend — Модалка создания идеи | | 2025-12-29 | **Фаза 1:** Frontend — Skeleton loader и empty state | | 2025-12-29 | **Фаза 1:** Frontend — Удаление идей | +| 2025-12-31 | Исправлен баг: Select в inline-редактировании закрывался при клике (MenuProps.disablePortal) | +| 2025-12-31 | Локализация интерфейса на русский язык | --- diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 904c414..cf793f1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -23,7 +23,7 @@ function App() { Team Planner - Backlog management for your team + Управление бэклогом идей команды diff --git a/frontend/src/components/CreateIdeaModal/CreateIdeaModal.tsx b/frontend/src/components/CreateIdeaModal/CreateIdeaModal.tsx index e398e06..42ea74c 100644 --- a/frontend/src/components/CreateIdeaModal/CreateIdeaModal.tsx +++ b/frontend/src/components/CreateIdeaModal/CreateIdeaModal.tsx @@ -18,17 +18,17 @@ import { useCreateIdea } from '../../hooks/useIdeas'; import type { CreateIdeaDto, IdeaStatus, IdeaPriority } from '../../types/idea'; const statusOptions: { value: IdeaStatus; label: string }[] = [ - { value: 'backlog', label: 'Backlog' }, - { value: 'todo', label: 'To Do' }, - { value: 'in_progress', label: 'In Progress' }, - { value: 'done', label: 'Done' }, + { value: 'backlog', label: 'Бэклог' }, + { value: 'todo', label: 'К выполнению' }, + { value: 'in_progress', label: 'В работе' }, + { value: 'done', label: 'Готово' }, ]; const priorityOptions: { value: IdeaPriority; label: string }[] = [ - { value: 'low', label: 'Low' }, - { value: 'medium', label: 'Medium' }, - { value: 'high', label: 'High' }, - { value: 'critical', label: 'Critical' }, + { value: 'low', label: 'Низкий' }, + { value: 'medium', label: 'Средний' }, + { value: 'high', label: 'Высокий' }, + { value: 'critical', label: 'Критичный' }, ]; const initialFormData: CreateIdeaDto = { @@ -76,17 +76,17 @@ export function CreateIdeaModal() { fullWidth >
- Create New Idea + Новая идея {createIdea.isError && ( - Failed to create idea. Please try again. + Не удалось создать идею. Попробуйте снова. )} handleChange('title', e.target.value)} required @@ -94,7 +94,7 @@ export function CreateIdeaModal() { /> handleChange('description', e.target.value)} multiline @@ -103,10 +103,10 @@ export function CreateIdeaModal() { - Status + Статус handleChange('priority', e.target.value)} > {priorityOptions.map((opt) => ( @@ -134,57 +134,57 @@ export function CreateIdeaModal() { handleChange('module', e.target.value)} - placeholder="e.g., Auth, Dashboard, API" + placeholder="например: Авторизация, Дашборд, API" /> handleChange('targetAudience', e.target.value)} - placeholder="Who is this for?" + placeholder="Для кого это?" /> handleChange('pain', e.target.value)} multiline rows={2} - placeholder="What problem does this solve?" + placeholder="Какую проблему это решает?" /> handleChange('aiRole', e.target.value)} multiline rows={2} - placeholder="How can AI help with this?" + placeholder="Как AI может помочь с этим?" /> handleChange('verificationMethod', e.target.value) } multiline rows={2} - placeholder="How to verify this is done?" + placeholder="Как проверить, что это готово?" /> - +
diff --git a/frontend/src/components/IdeasFilters/IdeasFilters.tsx b/frontend/src/components/IdeasFilters/IdeasFilters.tsx index 33986b4..8b01514 100644 --- a/frontend/src/components/IdeasFilters/IdeasFilters.tsx +++ b/frontend/src/components/IdeasFilters/IdeasFilters.tsx @@ -15,18 +15,18 @@ import { useModulesQuery } from '../../hooks/useIdeas'; import type { IdeaStatus, IdeaPriority } from '../../types/idea'; const statusOptions: { value: IdeaStatus; label: string }[] = [ - { value: 'backlog', label: 'Backlog' }, - { value: 'todo', label: 'To Do' }, - { value: 'in_progress', label: 'In Progress' }, - { value: 'done', label: 'Done' }, - { value: 'cancelled', label: 'Cancelled' }, + { value: 'backlog', label: 'Бэклог' }, + { value: 'todo', label: 'К выполнению' }, + { value: 'in_progress', label: 'В работе' }, + { value: 'done', label: 'Готово' }, + { value: 'cancelled', label: 'Отменено' }, ]; const priorityOptions: { value: IdeaPriority; label: string }[] = [ - { value: 'low', label: 'Low' }, - { value: 'medium', label: 'Medium' }, - { value: 'high', label: 'High' }, - { value: 'critical', label: 'Critical' }, + { value: 'low', label: 'Низкий' }, + { value: 'medium', label: 'Средний' }, + { value: 'high', label: 'Высокий' }, + { value: 'critical', label: 'Критичный' }, ]; export function IdeasFilters() { @@ -52,7 +52,7 @@ export function IdeasFilters() { > setSearchValue(e.target.value)} sx={{ minWidth: 200 }} @@ -68,16 +68,16 @@ export function IdeasFilters() { /> - Status + Статус value={filters.status ?? ''} - label="Status" + label="Статус" onChange={(e) => { const val = e.target.value; setFilter('status', val === '' ? undefined : val); }} > - All + Все {statusOptions.map((opt) => ( {opt.label} @@ -87,16 +87,16 @@ export function IdeasFilters() { - Priority + Приоритет value={filters.priority ?? ''} - label="Priority" + label="Приоритет" onChange={(e) => { const val = e.target.value; setFilter('priority', val === '' ? undefined : val); }} > - All + Все {priorityOptions.map((opt) => ( {opt.label} @@ -106,13 +106,13 @@ export function IdeasFilters() { - Module + Модуль