Аудит §2 переписан под решения (var-гейт, LF, дедуп закрыт — дублей нет); backlog: TD-COMMENTS-IFACE п.1–3 закрыты, TD-STYLE-ANALYZERS закрыт; STATUS.md — новый блок захода, устаревший блок «Осталось (в backlog)» в шапке удалён; план и ledger захода.
1.6 KiB
Task 8: Фронтенд — store + каркас подвкладки «Поиск»
Files:
- Modify:
frontend/src/store.js - Create:
frontend/src/views/DiscoveryView.vue - Modify:
frontend/src/views/ChannelsView.vue
Interfaces:
-
state:
channelsTab: 'list' | 'search',discTasks: [],discCandidates: [],discBlacklist: [],discLog: [],discActiveTaskId: null,discCandidateStatus: 'review',discBusy: false. -
store-функции:
gotoChannelsTab(tab),loadDiscTasks(),saveDiscTask(form, id=null)(create/patch),deleteDiscTask(id),startDiscTask(id),pauseDiscTask(id),generateDiscKeywords(taskId),loadDiscCandidates(taskId, status),joinDiscCandidate(c),rejectDiscCandidate(c),loadDiscBlacklist(),removeDiscBlacklist(id),loadDiscLog(taskId). -
Step 1: store.js — состояние + функции (паттерны:
api.get/post/patch/delete,toast,errMsg). -
Step 2: ChannelsView.vue — в шапке сегмент: «Каналы | Поиск» (
state.channelsTab), содержимое по табу. -
Step 3: DiscoveryView.vue (каркас): левая колонка — список задач (+ «Новая задача»); правая — панель задачи: мастер (name, description, «Сгенерировать ключи ИИ», чипы ключей редактируемые, minSubscribers, lang select ru/any, threshold, sampleSize, planJoins, autoJoin toggle, кнопки «Запустить/Пауза/Удалить»).
-
Step 4:
npm run build— без ошибок.