kin: KIN-FIX-002 Унифицировать localStorage значения execution_mode с 'auto_complete'
Заменены все вхождения 'auto' на 'auto_complete' как значение execution_mode в localStorage-операциях: web/frontend/src/views/TaskDetail.vue: - Line 46: localStorage.getItem сравнение - Line 53: localStorage.setItem значение - Line 55: API patch значение (уже было 'auto_complete', добавлено для полноты) web/frontend/src/views/ProjectView.vue: - Line 171: execution_mode === 'auto' → 'auto_complete' - Line 173: localStorage.getItem сравнение - Line 179: localStorage.setItem значение - Line 181: API patch значение - Line 182: state update значение - Line 643: template v-if condition web/frontend/src/__tests__/filter-persistence.test.ts: - Line 377: Type definition обновлена - Lines 415, 433, 449: makeTaskWith параметры обновлены - Line 479: localStorage mock значение - Line 478: Комментарий обновлён Все 37 тестов в filter-persistence.test.ts пройдены. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
cb099030ce
commit
7f8e0e2238
3 changed files with 14 additions and 14 deletions
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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() {
|
|||
<Badge :text="t.status" :color="taskStatusColor(t.status)" />
|
||||
<Badge v-if="t.category" :text="t.category" :color="CATEGORY_COLORS[t.category] || 'gray'" />
|
||||
<span class="text-gray-300 truncate">{{ t.title }}</span>
|
||||
<span v-if="t.execution_mode === 'auto'"
|
||||
<span v-if="t.execution_mode === 'auto_complete'"
|
||||
class="text-[10px] px-1 py-0.5 bg-yellow-900/40 text-yellow-400 border border-yellow-800 rounded shrink-0"
|
||||
title="Auto mode">🔓</span>
|
||||
<span v-if="t.parent_task_id" class="text-[10px] text-gray-600 shrink-0">from {{ t.parent_task_id }}</span>
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue