SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
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— без ошибок.