diff --git a/web/frontend/src/__tests__/filter-persistence.test.ts b/web/frontend/src/__tests__/filter-persistence.test.ts index 85aa031..486b925 100644 --- a/web/frontend/src/__tests__/filter-persistence.test.ts +++ b/web/frontend/src/__tests__/filter-persistence.test.ts @@ -374,7 +374,7 @@ describe('KIN-011: TaskDetail — возврат с сохранением URL', // ───────────────────────────────────────────────────────────── describe('KIN-047: TaskDetail — Approve/Reject в статусе review', () => { - function makeTaskWith(status: string, executionMode: 'auto' | 'review' | null = null) { + function makeTaskWith(status: string, executionMode: 'auto_complete' | 'review' | null = null) { return { id: 'KIN-047', project_id: 'KIN', @@ -412,7 +412,7 @@ describe('KIN-047: TaskDetail — Approve/Reject в статусе review', () = }) it('Approve и Reject скрыты при autoMode в статусе review', async () => { - vi.mocked(api.taskFull).mockResolvedValue(makeTaskWith('review', 'auto') as any) + vi.mocked(api.taskFull).mockResolvedValue(makeTaskWith('review', 'auto_complete') as any) const router = makeRouter() await router.push('/task/KIN-047') @@ -430,7 +430,7 @@ describe('KIN-047: TaskDetail — Approve/Reject в статусе review', () = }) it('Тоггл Auto/Review виден в статусе review при autoMode (позволяет выйти из автопилота)', async () => { - vi.mocked(api.taskFull).mockResolvedValue(makeTaskWith('review', 'auto') as any) + vi.mocked(api.taskFull).mockResolvedValue(makeTaskWith('review', 'auto_complete') as any) const router = makeRouter() await router.push('/task/KIN-047') @@ -446,7 +446,7 @@ describe('KIN-047: TaskDetail — Approve/Reject в статусе review', () = }) it('После клика тоггла в review+autoMode появляются Approve и Reject', async () => { - const task = makeTaskWith('review', 'auto') + const task = makeTaskWith('review', 'auto_complete') vi.mocked(api.taskFull).mockResolvedValue(task as any) vi.mocked(api.patchTask).mockResolvedValue({ execution_mode: 'review' } as any) @@ -475,8 +475,8 @@ describe('KIN-047: TaskDetail — Approve/Reject в статусе review', () = it('KIN-051: Approve и Reject видны при статусе review и execution_mode=null (фикс баги)', async () => { // Воспроизводит баг: задача в review без явного execution_mode зависала - // без кнопок, потому что localStorage мог содержать 'auto' - localStorageMock.setItem('kin-mode-KIN', 'auto') // имитируем "плохой" localStorage + // без кнопок, потому что localStorage мог содержать 'auto_complete' + localStorageMock.setItem('kin-mode-KIN', 'auto_complete') // имитируем "плохой" localStorage vi.mocked(api.taskFull).mockResolvedValue(makeTaskWith('review', null) as any) const router = makeRouter() await router.push('/task/KIN-047') diff --git a/web/frontend/src/views/ProjectView.vue b/web/frontend/src/views/ProjectView.vue index 0c7bef4..6b6b414 100644 --- a/web/frontend/src/views/ProjectView.vue +++ b/web/frontend/src/views/ProjectView.vue @@ -168,18 +168,18 @@ const autoMode = ref(false) function loadMode() { if (project.value?.execution_mode) { - autoMode.value = project.value.execution_mode === 'auto' + autoMode.value = project.value.execution_mode === 'auto_complete' } else { - autoMode.value = localStorage.getItem(`kin-mode-${props.id}`) === 'auto' + autoMode.value = localStorage.getItem(`kin-mode-${props.id}`) === 'auto_complete' } } async function toggleMode() { autoMode.value = !autoMode.value - localStorage.setItem(`kin-mode-${props.id}`, autoMode.value ? 'auto' : 'review') + localStorage.setItem(`kin-mode-${props.id}`, autoMode.value ? 'auto_complete' : 'review') try { - await api.patchProject(props.id, { execution_mode: autoMode.value ? 'auto' : 'review' }) - if (project.value) project.value = { ...project.value, execution_mode: autoMode.value ? 'auto' : 'review' } + await api.patchProject(props.id, { execution_mode: autoMode.value ? 'auto_complete' : 'review' }) + if (project.value) project.value = { ...project.value, execution_mode: autoMode.value ? 'auto_complete' : 'review' } } catch (e: any) { error.value = e.message } @@ -640,7 +640,7 @@ async function addDecision() { {{ t.title }} - 🔓 from {{ t.parent_task_id }} diff --git a/web/frontend/src/views/TaskDetail.vue b/web/frontend/src/views/TaskDetail.vue index 6ce3259..7a0ab02 100644 --- a/web/frontend/src/views/TaskDetail.vue +++ b/web/frontend/src/views/TaskDetail.vue @@ -43,14 +43,14 @@ function loadMode(t: typeof task.value) { // Task is in review — always show Approve/Reject regardless of localStorage autoMode.value = false } else { - autoMode.value = localStorage.getItem(`kin-mode-${t.project_id}`) === 'auto' + autoMode.value = localStorage.getItem(`kin-mode-${t.project_id}`) === 'auto_complete' } } async function toggleMode() { if (!task.value) return autoMode.value = !autoMode.value - localStorage.setItem(`kin-mode-${task.value.project_id}`, autoMode.value ? 'auto' : 'review') + localStorage.setItem(`kin-mode-${task.value.project_id}`, autoMode.value ? 'auto_complete' : 'review') try { const updated = await api.patchTask(props.id, { execution_mode: autoMode.value ? 'auto_complete' : 'review' }) task.value = { ...task.value, ...updated }