584 lines
18 KiB
TypeScript
584 lines
18 KiB
TypeScript
// ============================================================================
|
||
// Demo Mock Data
|
||
// ============================================================================
|
||
|
||
import type {
|
||
Workspace,
|
||
Project,
|
||
Channel,
|
||
Creative,
|
||
Placement,
|
||
PurchasePlanChannel,
|
||
WorkspaceMember,
|
||
Permission,
|
||
SpendingAnalytics,
|
||
CreativeAnalyticsItem,
|
||
ChannelAnalyticsItem,
|
||
} from "@/lib/types/api";
|
||
import { DEMO_WORKSPACE_ID, DEMO_USER } from "./constants";
|
||
|
||
// ============================================================================
|
||
// Workspace & User
|
||
// ============================================================================
|
||
|
||
export const demoWorkspace: Workspace = {
|
||
id: DEMO_WORKSPACE_ID,
|
||
name: "Демо Workspace",
|
||
};
|
||
|
||
export const demoMember: WorkspaceMember = {
|
||
id: "demo-member-0000-0000-000000000001",
|
||
user: {
|
||
id: DEMO_USER.id,
|
||
telegram_id: DEMO_USER.telegram_id,
|
||
username: DEMO_USER.username,
|
||
},
|
||
status: "active",
|
||
permissions: [{ key: "admin_full" }],
|
||
};
|
||
|
||
// ============================================================================
|
||
// Projects (Target Channels)
|
||
// ============================================================================
|
||
|
||
export const demoProjects: Project[] = [
|
||
{
|
||
id: "proj-0001-0000-0000-000000000001",
|
||
telegram_id: -1001234567001,
|
||
title: "Крипто Новости",
|
||
username: "crypto_news_demo",
|
||
status: "active",
|
||
},
|
||
{
|
||
id: "proj-0002-0000-0000-000000000002",
|
||
telegram_id: -1001234567002,
|
||
title: "IT Вакансии",
|
||
username: "it_jobs_demo",
|
||
status: "active",
|
||
},
|
||
{
|
||
id: "proj-0003-0000-0000-000000000003",
|
||
telegram_id: -1001234567003,
|
||
title: "Стартапы и Бизнес",
|
||
username: "startups_demo",
|
||
status: "active",
|
||
},
|
||
];
|
||
|
||
// ============================================================================
|
||
// Channels (External Channels for placements)
|
||
// ============================================================================
|
||
|
||
export const demoChannels: Channel[] = [
|
||
{
|
||
id: "chan-0001-0000-0000-000000000001",
|
||
telegram_id: -1002345678001,
|
||
title: "Технологии Будущего",
|
||
username: "tech_future",
|
||
description: "Новости о технологиях и инновациях",
|
||
subscribers_count: 125000,
|
||
},
|
||
{
|
||
id: "chan-0002-0000-0000-000000000002",
|
||
telegram_id: -1002345678002,
|
||
title: "Инвестиции Pro",
|
||
username: "invest_pro",
|
||
description: "Аналитика и инвестиционные идеи",
|
||
subscribers_count: 89000,
|
||
},
|
||
{
|
||
id: "chan-0003-0000-0000-000000000003",
|
||
telegram_id: -1002345678003,
|
||
title: "Программисты",
|
||
username: "programmers_hub",
|
||
description: "Сообщество разработчиков",
|
||
subscribers_count: 156000,
|
||
},
|
||
{
|
||
id: "chan-0004-0000-0000-000000000004",
|
||
telegram_id: -1002345678004,
|
||
title: "Маркетинг Pro",
|
||
username: "marketing_pro",
|
||
description: "Digital маркетинг и реклама",
|
||
subscribers_count: 67000,
|
||
},
|
||
{
|
||
id: "chan-0005-0000-0000-000000000005",
|
||
telegram_id: -1002345678005,
|
||
title: "Финансовая грамотность",
|
||
username: "finance_edu",
|
||
description: "Обучение финансам",
|
||
subscribers_count: 234000,
|
||
},
|
||
{
|
||
id: "chan-0006-0000-0000-000000000006",
|
||
telegram_id: -1002345678006,
|
||
title: "Startup Daily",
|
||
username: "startup_daily",
|
||
description: "Ежедневные новости стартапов",
|
||
subscribers_count: 45000,
|
||
},
|
||
];
|
||
|
||
// ============================================================================
|
||
// Creatives
|
||
// ============================================================================
|
||
|
||
export const demoCreatives: Creative[] = [
|
||
{
|
||
id: "crea-0001-0000-0000-000000000001",
|
||
name: "Крипто - Основной",
|
||
text: "🚀 Присоединяйтесь к лучшему крипто-каналу!\n\n💰 Ежедневные сигналы\n📊 Аналитика рынка\n🎯 Точные прогнозы\n\n{invite_link}",
|
||
status: "active",
|
||
placements_count: 12,
|
||
project_id: "proj-0001-0000-0000-000000000001",
|
||
project_channel_title: "Крипто Новости",
|
||
created_at: "2024-11-15T10:00:00Z",
|
||
},
|
||
{
|
||
id: "crea-0002-0000-0000-000000000002",
|
||
name: "Крипто - Агрессивный",
|
||
text: "⚡️ СРОЧНО! Секретный канал для избранных!\n\n🔥 Закрытая информация\n💎 Альткоины x100\n🚀 Успей до памп!\n\n{invite_link}",
|
||
status: "active",
|
||
placements_count: 5,
|
||
project_id: "proj-0001-0000-0000-000000000001",
|
||
project_channel_title: "Крипто Новости",
|
||
created_at: "2024-11-20T14:30:00Z",
|
||
},
|
||
{
|
||
id: "crea-0003-0000-0000-000000000003",
|
||
name: "IT Jobs - Основной",
|
||
text: "👨💻 Ищешь работу в IT?\n\n✅ Вакансии от топ-компаний\n✅ Удаленка и офис\n✅ Junior - Senior\n\nПодписывайся: {invite_link}",
|
||
status: "active",
|
||
placements_count: 8,
|
||
project_id: "proj-0002-0000-0000-000000000002",
|
||
project_channel_title: "IT Вакансии",
|
||
created_at: "2024-10-01T09:00:00Z",
|
||
},
|
||
{
|
||
id: "crea-0004-0000-0000-000000000004",
|
||
name: "Startups - Нетворкинг",
|
||
text: "🤝 Нетворкинг для стартаперов\n\n🎯 Найди кофаундера\n💡 Обменяйся идеями\n🚀 Развивай проект\n\n{invite_link}",
|
||
status: "active",
|
||
placements_count: 6,
|
||
project_id: "proj-0003-0000-0000-000000000003",
|
||
project_channel_title: "Стартапы и Бизнес",
|
||
created_at: "2024-12-01T16:00:00Z",
|
||
},
|
||
{
|
||
id: "crea-0005-0000-0000-000000000005",
|
||
name: "IT Jobs - Тестовый",
|
||
text: "🔥 Тестовый креатив для IT вакансий\n\n{invite_link}",
|
||
status: "archived",
|
||
placements_count: 2,
|
||
project_id: "proj-0002-0000-0000-000000000002",
|
||
project_channel_title: "IT Вакансии",
|
||
created_at: "2024-09-15T11:00:00Z",
|
||
},
|
||
];
|
||
|
||
// ============================================================================
|
||
// Placements
|
||
// ============================================================================
|
||
|
||
export const demoPlacements: Placement[] = [
|
||
{
|
||
id: "plac-0001-0000-0000-000000000001",
|
||
placement_date: "2024-12-20T12:00:00Z",
|
||
cost: 5500,
|
||
comment: "Отличное размещение",
|
||
ad_post_url: "https://t.me/tech_future/1234",
|
||
invite_link_type: "approval",
|
||
invite_link: "https://t.me/+ABC123demo1",
|
||
status: "active",
|
||
subscriptions_count: 156,
|
||
views_count: 8500,
|
||
views_availability: "available",
|
||
last_views_fetch_at: "2024-12-21T10:00:00Z",
|
||
created_at: "2024-12-19T15:00:00Z",
|
||
project_id: "proj-0001-0000-0000-000000000001",
|
||
project_channel_title: "Крипто Новости",
|
||
placement_channel_id: "chan-0001-0000-0000-000000000001",
|
||
placement_channel_title: "Технологии Будущего",
|
||
creative_id: "crea-0001-0000-0000-000000000001",
|
||
creative_name: "Крипто - Основной",
|
||
},
|
||
{
|
||
id: "plac-0002-0000-0000-000000000002",
|
||
placement_date: "2024-12-18T14:00:00Z",
|
||
cost: 3200,
|
||
comment: null,
|
||
ad_post_url: "https://t.me/invest_pro/5678",
|
||
invite_link_type: "approval",
|
||
invite_link: "https://t.me/+ABC123demo2",
|
||
status: "active",
|
||
subscriptions_count: 89,
|
||
views_count: 4200,
|
||
views_availability: "available",
|
||
last_views_fetch_at: "2024-12-20T08:00:00Z",
|
||
created_at: "2024-12-17T10:00:00Z",
|
||
project_id: "proj-0001-0000-0000-000000000001",
|
||
project_channel_title: "Крипто Новости",
|
||
placement_channel_id: "chan-0002-0000-0000-000000000002",
|
||
placement_channel_title: "Инвестиции Pro",
|
||
creative_id: "crea-0001-0000-0000-000000000001",
|
||
creative_name: "Крипто - Основной",
|
||
},
|
||
{
|
||
id: "plac-0003-0000-0000-000000000003",
|
||
placement_date: "2024-12-15T10:00:00Z",
|
||
cost: 4800,
|
||
comment: "Программисты - хорошая аудитория",
|
||
ad_post_url: "https://t.me/programmers_hub/9012",
|
||
invite_link_type: "public",
|
||
invite_link: "https://t.me/+ABC123demo3",
|
||
status: "active",
|
||
subscriptions_count: 234,
|
||
views_count: 12000,
|
||
views_availability: "available",
|
||
last_views_fetch_at: "2024-12-19T14:00:00Z",
|
||
created_at: "2024-12-14T09:00:00Z",
|
||
project_id: "proj-0002-0000-0000-000000000002",
|
||
project_channel_title: "IT Вакансии",
|
||
placement_channel_id: "chan-0003-0000-0000-000000000003",
|
||
placement_channel_title: "Программисты",
|
||
creative_id: "crea-0003-0000-0000-000000000003",
|
||
creative_name: "IT Jobs - Основной",
|
||
},
|
||
{
|
||
id: "plac-0004-0000-0000-000000000004",
|
||
placement_date: "2024-12-10T16:00:00Z",
|
||
cost: 2500,
|
||
comment: null,
|
||
ad_post_url: "https://t.me/marketing_pro/3456",
|
||
invite_link_type: "approval",
|
||
invite_link: "https://t.me/+ABC123demo4",
|
||
status: "active",
|
||
subscriptions_count: 67,
|
||
views_count: 3100,
|
||
views_availability: "manual",
|
||
last_views_fetch_at: "2024-12-12T11:00:00Z",
|
||
created_at: "2024-12-09T14:00:00Z",
|
||
project_id: "proj-0003-0000-0000-000000000003",
|
||
project_channel_title: "Стартапы и Бизнес",
|
||
placement_channel_id: "chan-0004-0000-0000-000000000004",
|
||
placement_channel_title: "Маркетинг Pro",
|
||
creative_id: "crea-0004-0000-0000-000000000004",
|
||
creative_name: "Startups - Нетворкинг",
|
||
},
|
||
{
|
||
id: "plac-0005-0000-0000-000000000005",
|
||
placement_date: "2024-12-05T11:00:00Z",
|
||
cost: 6200,
|
||
comment: "Финансовая аудитория",
|
||
ad_post_url: "https://t.me/finance_edu/7890",
|
||
invite_link_type: "approval",
|
||
invite_link: "https://t.me/+ABC123demo5",
|
||
status: "active",
|
||
subscriptions_count: 312,
|
||
views_count: 15600,
|
||
views_availability: "available",
|
||
last_views_fetch_at: "2024-12-08T09:00:00Z",
|
||
created_at: "2024-12-04T10:00:00Z",
|
||
project_id: "proj-0001-0000-0000-000000000001",
|
||
project_channel_title: "Крипто Новости",
|
||
placement_channel_id: "chan-0005-0000-0000-000000000005",
|
||
placement_channel_title: "Финансовая грамотность",
|
||
creative_id: "crea-0002-0000-0000-000000000002",
|
||
creative_name: "Крипто - Агрессивный",
|
||
},
|
||
{
|
||
id: "plac-0006-0000-0000-000000000006",
|
||
placement_date: "2024-11-28T13:00:00Z",
|
||
cost: 1800,
|
||
comment: null,
|
||
ad_post_url: "https://t.me/startup_daily/2345",
|
||
invite_link_type: "public",
|
||
invite_link: "https://t.me/+ABC123demo6",
|
||
status: "archived",
|
||
subscriptions_count: 45,
|
||
views_count: 2100,
|
||
views_availability: "unavailable",
|
||
last_views_fetch_at: null,
|
||
created_at: "2024-11-27T15:00:00Z",
|
||
project_id: "proj-0003-0000-0000-000000000003",
|
||
project_channel_title: "Стартапы и Бизнес",
|
||
placement_channel_id: "chan-0006-0000-0000-000000000006",
|
||
placement_channel_title: "Startup Daily",
|
||
creative_id: "crea-0004-0000-0000-000000000004",
|
||
creative_name: "Startups - Нетворкинг",
|
||
},
|
||
];
|
||
|
||
// ============================================================================
|
||
// Purchase Plan Channels
|
||
// ============================================================================
|
||
|
||
export const demoPurchasePlanChannels: Record<string, PurchasePlanChannel[]> = {
|
||
"proj-0001-0000-0000-000000000001": [
|
||
{
|
||
id: "plan-0001-0000-0000-000000000001",
|
||
status: "completed",
|
||
planned_cost: 5500,
|
||
comment: "Основной канал",
|
||
channel: {
|
||
id: "chan-0001-0000-0000-000000000001",
|
||
telegram_id: -1002345678001,
|
||
title: "Технологии Будущего",
|
||
username: "tech_future",
|
||
},
|
||
},
|
||
{
|
||
id: "plan-0002-0000-0000-000000000002",
|
||
status: "completed",
|
||
planned_cost: 3500,
|
||
comment: null,
|
||
channel: {
|
||
id: "chan-0002-0000-0000-000000000002",
|
||
telegram_id: -1002345678002,
|
||
title: "Инвестиции Pro",
|
||
username: "invest_pro",
|
||
},
|
||
},
|
||
{
|
||
id: "plan-0003-0000-0000-000000000003",
|
||
status: "planned",
|
||
planned_cost: 4000,
|
||
comment: "На следующую неделю",
|
||
channel: {
|
||
id: "chan-0005-0000-0000-000000000005",
|
||
telegram_id: -1002345678005,
|
||
title: "Финансовая грамотность",
|
||
username: "finance_edu",
|
||
},
|
||
},
|
||
],
|
||
"proj-0002-0000-0000-000000000002": [
|
||
{
|
||
id: "plan-0004-0000-0000-000000000004",
|
||
status: "completed",
|
||
planned_cost: 4800,
|
||
comment: "IT аудитория",
|
||
channel: {
|
||
id: "chan-0003-0000-0000-000000000003",
|
||
telegram_id: -1002345678003,
|
||
title: "Программисты",
|
||
username: "programmers_hub",
|
||
},
|
||
},
|
||
{
|
||
id: "plan-0005-0000-0000-000000000005",
|
||
status: "planned",
|
||
planned_cost: 3000,
|
||
comment: null,
|
||
channel: {
|
||
id: "chan-0001-0000-0000-000000000001",
|
||
telegram_id: -1002345678001,
|
||
title: "Технологии Будущего",
|
||
username: "tech_future",
|
||
},
|
||
},
|
||
],
|
||
"proj-0003-0000-0000-000000000003": [
|
||
{
|
||
id: "plan-0006-0000-0000-000000000006",
|
||
status: "completed",
|
||
planned_cost: 2500,
|
||
comment: null,
|
||
channel: {
|
||
id: "chan-0004-0000-0000-000000000004",
|
||
telegram_id: -1002345678004,
|
||
title: "Маркетинг Pro",
|
||
username: "marketing_pro",
|
||
},
|
||
},
|
||
{
|
||
id: "plan-0007-0000-0000-000000000007",
|
||
status: "completed",
|
||
planned_cost: 1800,
|
||
comment: "Стартап аудитория",
|
||
channel: {
|
||
id: "chan-0006-0000-0000-000000000006",
|
||
telegram_id: -1002345678006,
|
||
title: "Startup Daily",
|
||
username: "startup_daily",
|
||
},
|
||
},
|
||
],
|
||
};
|
||
|
||
// ============================================================================
|
||
// Analytics Data
|
||
// ============================================================================
|
||
|
||
export const demoSpendingAnalytics: SpendingAnalytics = {
|
||
total_cost: 24000,
|
||
total_subscriptions: 903,
|
||
total_views: 45500,
|
||
avg_cpf: 26.58,
|
||
avg_cpm: 527.47,
|
||
chart_data: [
|
||
{
|
||
period: "2024-11",
|
||
cost: 1800,
|
||
subscriptions: 45,
|
||
views: 2100,
|
||
cpf: 40.0,
|
||
cpm: 857.14,
|
||
},
|
||
{
|
||
period: "2024-12-05",
|
||
cost: 6200,
|
||
subscriptions: 312,
|
||
views: 15600,
|
||
cpf: 19.87,
|
||
cpm: 397.44,
|
||
},
|
||
{
|
||
period: "2024-12-10",
|
||
cost: 2500,
|
||
subscriptions: 67,
|
||
views: 3100,
|
||
cpf: 37.31,
|
||
cpm: 806.45,
|
||
},
|
||
{
|
||
period: "2024-12-15",
|
||
cost: 4800,
|
||
subscriptions: 234,
|
||
views: 12000,
|
||
cpf: 20.51,
|
||
cpm: 400.0,
|
||
},
|
||
{
|
||
period: "2024-12-18",
|
||
cost: 3200,
|
||
subscriptions: 89,
|
||
views: 4200,
|
||
cpf: 35.96,
|
||
cpm: 761.9,
|
||
},
|
||
{
|
||
period: "2024-12-20",
|
||
cost: 5500,
|
||
subscriptions: 156,
|
||
views: 8500,
|
||
cpf: 35.26,
|
||
cpm: 647.06,
|
||
},
|
||
],
|
||
};
|
||
|
||
export const demoCreativeAnalytics: CreativeAnalyticsItem[] = [
|
||
{
|
||
id: "crea-0001-0000-0000-000000000001",
|
||
name: "Крипто - Основной",
|
||
placements_count: 12,
|
||
total_cost: 8700,
|
||
total_subscriptions: 245,
|
||
total_views: 12700,
|
||
avg_cpf: 35.51,
|
||
avg_cpm: 685.04,
|
||
},
|
||
{
|
||
id: "crea-0002-0000-0000-000000000002",
|
||
name: "Крипто - Агрессивный",
|
||
placements_count: 5,
|
||
total_cost: 6200,
|
||
total_subscriptions: 312,
|
||
total_views: 15600,
|
||
avg_cpf: 19.87,
|
||
avg_cpm: 397.44,
|
||
},
|
||
{
|
||
id: "crea-0003-0000-0000-000000000003",
|
||
name: "IT Jobs - Основной",
|
||
placements_count: 8,
|
||
total_cost: 4800,
|
||
total_subscriptions: 234,
|
||
total_views: 12000,
|
||
avg_cpf: 20.51,
|
||
avg_cpm: 400.0,
|
||
},
|
||
{
|
||
id: "crea-0004-0000-0000-000000000004",
|
||
name: "Startups - Нетворкинг",
|
||
placements_count: 6,
|
||
total_cost: 4300,
|
||
total_subscriptions: 112,
|
||
total_views: 5200,
|
||
avg_cpf: 38.39,
|
||
avg_cpm: 826.92,
|
||
},
|
||
];
|
||
|
||
export const demoChannelAnalytics: ChannelAnalyticsItem[] = [
|
||
{
|
||
channel_id: "chan-0001-0000-0000-000000000001",
|
||
channel_title: "Технологии Будущего",
|
||
channel_username: "tech_future",
|
||
placements_count: 3,
|
||
total_cost: 5500,
|
||
total_subscriptions: 156,
|
||
total_views: 8500,
|
||
avg_cps: 35.26,
|
||
avg_cpm: 647.06,
|
||
},
|
||
{
|
||
channel_id: "chan-0002-0000-0000-000000000002",
|
||
channel_title: "Инвестиции Pro",
|
||
channel_username: "invest_pro",
|
||
placements_count: 2,
|
||
total_cost: 3200,
|
||
total_subscriptions: 89,
|
||
total_views: 4200,
|
||
avg_cps: 35.96,
|
||
avg_cpm: 761.9,
|
||
},
|
||
{
|
||
channel_id: "chan-0003-0000-0000-000000000003",
|
||
channel_title: "Программисты",
|
||
channel_username: "programmers_hub",
|
||
placements_count: 4,
|
||
total_cost: 4800,
|
||
total_subscriptions: 234,
|
||
total_views: 12000,
|
||
avg_cps: 20.51,
|
||
avg_cpm: 400.0,
|
||
},
|
||
{
|
||
channel_id: "chan-0005-0000-0000-000000000005",
|
||
channel_title: "Финансовая грамотность",
|
||
channel_username: "finance_edu",
|
||
placements_count: 2,
|
||
total_cost: 6200,
|
||
total_subscriptions: 312,
|
||
total_views: 15600,
|
||
avg_cps: 19.87,
|
||
avg_cpm: 397.44,
|
||
},
|
||
{
|
||
channel_id: "chan-0004-0000-0000-000000000004",
|
||
channel_title: "Маркетинг Pro",
|
||
channel_username: "marketing_pro",
|
||
placements_count: 1,
|
||
total_cost: 2500,
|
||
total_subscriptions: 67,
|
||
total_views: 3100,
|
||
avg_cps: 37.31,
|
||
avg_cpm: 806.45,
|
||
},
|
||
{
|
||
channel_id: "chan-0006-0000-0000-000000000006",
|
||
channel_title: "Startup Daily",
|
||
channel_username: "startup_daily",
|
||
placements_count: 1,
|
||
total_cost: 1800,
|
||
total_subscriptions: 45,
|
||
total_views: 2100,
|
||
avg_cps: 40.0,
|
||
avg_cpm: 857.14,
|
||
},
|
||
];
|
||
|