Files
tgex-frontend/lib/mocks/data/placements.ts
2025-11-19 12:56:04 +03:00

214 lines
6.3 KiB
TypeScript

import { Placement, Subscription, ViewsSnapshot } from "@/lib/types/api";
import { mockTargetChannels } from "./channels";
import { mockExternalChannels } from "./external-channels";
import { mockCreatives } from "./creatives";
// ============================================================================
// Mock Placements Data
// ============================================================================
export const mockPlacements: Placement[] = [
{
id: "p1",
target_channel_id: "tc1",
target_channel_title: mockTargetChannels[0].title,
external_channel_id: "ec1",
external_channel_title: mockExternalChannels[0].title,
creative_id: "cr1",
creative_name: mockCreatives[0].name,
placement_date: "2024-03-15T10:00:00.000Z",
cost: 5000,
comment: "Тестовая закупка на утро",
ad_post_url: "https://t.me/marketing_pro/1234",
invite_link_type: "approval",
invite_link: "https://t.me/+AbCdEfGhIjKlMnOp",
status: "active",
subscriptions_count: 125,
views_count: 12500,
views_availability: "available",
last_views_fetch_at: "2024-03-16T10:00:00.000Z",
created_at: "2024-03-14T15:00:00.000Z",
},
{
id: "p2",
target_channel_id: "tc1",
target_channel_title: mockTargetChannels[0].title,
external_channel_id: "ec2",
external_channel_title: mockExternalChannels[1].title,
creative_id: "cr2",
creative_name: mockCreatives[1].name,
placement_date: "2024-03-18T14:00:00.000Z",
cost: 12000,
comment: "Большой канал, ожидаем хороших результатов",
ad_post_url: "https://t.me/business_startups/5678",
invite_link_type: "approval",
invite_link: "https://t.me/+QrStUvWxYzAbCdEf",
status: "active",
subscriptions_count: 210,
views_count: 28000,
views_availability: "available",
last_views_fetch_at: "2024-03-19T10:00:00.000Z",
created_at: "2024-03-17T10:00:00.000Z",
},
{
id: "p3",
target_channel_id: "tc2",
target_channel_title: mockTargetChannels[1].title,
external_channel_id: "ec3",
external_channel_title: mockExternalChannels[2].title,
creative_id: "cr3",
creative_name: mockCreatives[2].name,
placement_date: "2024-03-20T16:00:00.000Z",
cost: 3500,
comment: null,
ad_post_url: "https://t.me/it_tech_news/9101",
invite_link_type: "public",
invite_link: "https://t.me/+GhIjKlMnOpQrStUv",
status: "active",
subscriptions_count: 75,
views_count: 8500,
views_availability: "available",
last_views_fetch_at: "2024-03-21T10:00:00.000Z",
created_at: "2024-03-19T12:00:00.000Z",
},
{
id: "p4",
target_channel_id: "tc1",
target_channel_title: mockTargetChannels[0].title,
external_channel_id: "ec1",
external_channel_title: mockExternalChannels[0].title,
creative_id: "cr1",
creative_name: mockCreatives[0].name,
placement_date: "2024-03-22T08:00:00.000Z",
cost: 4500,
comment: "Повтор в этом же канале",
ad_post_url: "https://t.me/marketing_pro/1290",
invite_link_type: "approval",
invite_link: "https://t.me/+XyZaBcDeFgHiJkLm",
status: "active",
subscriptions_count: 95,
views_count: null,
views_availability: "unavailable",
last_views_fetch_at: "2024-03-23T09:00:00.000Z",
created_at: "2024-03-21T14:00:00.000Z",
},
{
id: "p5",
target_channel_id: "tc1",
target_channel_title: mockTargetChannels[0].title,
external_channel_id: "ec2",
external_channel_title: mockExternalChannels[1].title,
creative_id: "cr1",
creative_name: mockCreatives[0].name,
placement_date: "2024-02-10T10:00:00.000Z",
cost: 10000,
comment: "Старая закупка (архив)",
ad_post_url: "https://t.me/business_startups/4567",
invite_link_type: "public",
invite_link: "https://t.me/+OldLinkArch12345",
status: "archived",
subscriptions_count: 150,
views_count: 20000,
views_availability: "available",
last_views_fetch_at: "2024-02-12T10:00:00.000Z",
created_at: "2024-02-09T10:00:00.000Z",
},
];
// Keep old name for backward compatibility
export const mockPurchases = mockPlacements;
// ============================================================================
// Mock Subscriptions
// ============================================================================
export const mockSubscriptions: Subscription[] = [
{
id: "s1",
purchase_id: "p1",
telegram_user_id: 123456789,
user_first_name: "Иван",
user_last_name: "Иванов",
user_username: "ivan_ivanov",
subscribed_at: "2024-03-15T11:35:00.000Z",
is_active: true,
event_type: "join_request",
},
{
id: "s2",
purchase_id: "p1",
telegram_user_id: 987654321,
user_first_name: "Мария",
user_last_name: null,
user_username: "maria123",
subscribed_at: "2024-03-15T12:05:00.000Z",
is_active: true,
event_type: "join_request",
},
{
id: "s3",
purchase_id: "p1",
telegram_user_id: 456789123,
user_first_name: "Алексей",
user_last_name: "Петров",
user_username: null,
subscribed_at: "2024-03-15T13:20:00.000Z",
is_active: false,
event_type: "join_request",
},
{
id: "s4",
purchase_id: "p2",
telegram_user_id: 789123456,
user_first_name: "Елена",
user_last_name: "Сидорова",
user_username: "elena_s",
subscribed_at: "2024-03-18T14:30:00.000Z",
is_active: true,
event_type: "chat_member",
},
];
// ============================================================================
// Mock Views History
// ============================================================================
export const mockViewsHistory: ViewsSnapshot[] = [
{
id: "v1",
purchase_id: "p1",
views: 10000,
fetched_at: "2024-03-15T12:00:00.000Z",
},
{
id: "v2",
purchase_id: "p1",
views: 11500,
fetched_at: "2024-03-15T18:00:00.000Z",
},
{
id: "v3",
purchase_id: "p1",
views: 12500,
fetched_at: "2024-03-16T10:00:00.000Z",
},
{
id: "v4",
purchase_id: "p2",
views: 25000,
fetched_at: "2024-03-18T15:00:00.000Z",
},
{
id: "v5",
purchase_id: "p2",
views: 27000,
fetched_at: "2024-03-18T20:00:00.000Z",
},
{
id: "v6",
purchase_id: "p2",
views: 28000,
fetched_at: "2024-03-19T10:00:00.000Z",
},
];