@nextsparkjs/theme-default 0.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/about/business.md +49 -0
- package/about/features.json +302 -0
- package/about/team.md +79 -0
- package/api/ai/chat/stream/route.ts +212 -0
- package/api/ai/orchestrator/route.ts +226 -0
- package/api/ai/single-agent/route.ts +291 -0
- package/api/ai/usage/route.ts +122 -0
- package/blocks/benefits/component.tsx +100 -0
- package/blocks/benefits/config.ts +11 -0
- package/blocks/benefits/examples.ts +85 -0
- package/blocks/benefits/fields.ts +156 -0
- package/blocks/benefits/schema.ts +33 -0
- package/blocks/cta-section/component.tsx +100 -0
- package/blocks/cta-section/config.ts +11 -0
- package/blocks/cta-section/examples.ts +41 -0
- package/blocks/cta-section/fields.ts +89 -0
- package/blocks/cta-section/index.ts +6 -0
- package/blocks/cta-section/schema.ts +32 -0
- package/blocks/cta-section/thumbnail.png +1 -0
- package/blocks/faq-accordion/component.tsx +156 -0
- package/blocks/faq-accordion/config.ts +11 -0
- package/blocks/faq-accordion/examples.ts +77 -0
- package/blocks/faq-accordion/fields.ts +119 -0
- package/blocks/faq-accordion/index.ts +6 -0
- package/blocks/faq-accordion/schema.ts +45 -0
- package/blocks/features-grid/component.tsx +112 -0
- package/blocks/features-grid/config.ts +11 -0
- package/blocks/features-grid/examples.ts +63 -0
- package/blocks/features-grid/fields.ts +97 -0
- package/blocks/features-grid/index.ts +6 -0
- package/blocks/features-grid/schema.ts +40 -0
- package/blocks/features-grid/thumbnail.png +1 -0
- package/blocks/hero/component.tsx +100 -0
- package/blocks/hero/config.ts +11 -0
- package/blocks/hero/examples.ts +35 -0
- package/blocks/hero/fields.ts +60 -0
- package/blocks/hero/index.ts +6 -0
- package/blocks/hero/schema.ts +32 -0
- package/blocks/hero/thumbnail.png +1 -0
- package/blocks/hero/thumbnail.png.txt +6 -0
- package/blocks/hero-with-form/component.tsx +232 -0
- package/blocks/hero-with-form/config.ts +11 -0
- package/blocks/hero-with-form/examples.ts +16 -0
- package/blocks/hero-with-form/fields.ts +207 -0
- package/blocks/hero-with-form/index.ts +6 -0
- package/blocks/hero-with-form/schema.ts +54 -0
- package/blocks/jumbotron/component.tsx +136 -0
- package/blocks/jumbotron/config.ts +11 -0
- package/blocks/jumbotron/examples.ts +36 -0
- package/blocks/jumbotron/fields.ts +202 -0
- package/blocks/jumbotron/index.ts +6 -0
- package/blocks/jumbotron/schema.ts +55 -0
- package/blocks/logo-cloud/component.tsx +154 -0
- package/blocks/logo-cloud/config.ts +11 -0
- package/blocks/logo-cloud/examples.ts +34 -0
- package/blocks/logo-cloud/fields.ts +133 -0
- package/blocks/logo-cloud/index.ts +6 -0
- package/blocks/logo-cloud/schema.ts +46 -0
- package/blocks/post-content/component.tsx +197 -0
- package/blocks/post-content/config.ts +11 -0
- package/blocks/post-content/examples.ts +33 -0
- package/blocks/post-content/fields.ts +165 -0
- package/blocks/post-content/index.ts +4 -0
- package/blocks/post-content/schema.ts +46 -0
- package/blocks/pricing-table/component.tsx +154 -0
- package/blocks/pricing-table/config.ts +11 -0
- package/blocks/pricing-table/examples.ts +96 -0
- package/blocks/pricing-table/fields.ts +161 -0
- package/blocks/pricing-table/index.ts +4 -0
- package/blocks/pricing-table/schema.ts +50 -0
- package/blocks/split-content/component.tsx +135 -0
- package/blocks/split-content/config.ts +11 -0
- package/blocks/split-content/examples.ts +38 -0
- package/blocks/split-content/fields.ts +198 -0
- package/blocks/split-content/index.ts +6 -0
- package/blocks/split-content/schema.ts +67 -0
- package/blocks/stats-counter/component.tsx +124 -0
- package/blocks/stats-counter/config.ts +11 -0
- package/blocks/stats-counter/examples.ts +61 -0
- package/blocks/stats-counter/fields.ts +134 -0
- package/blocks/stats-counter/index.ts +6 -0
- package/blocks/stats-counter/schema.ts +47 -0
- package/blocks/testimonials/component.tsx +114 -0
- package/blocks/testimonials/config.ts +11 -0
- package/blocks/testimonials/examples.ts +65 -0
- package/blocks/testimonials/fields.ts +105 -0
- package/blocks/testimonials/index.ts +6 -0
- package/blocks/testimonials/schema.ts +41 -0
- package/blocks/testimonials/thumbnail.png +1 -0
- package/blocks/text-content/component.tsx +97 -0
- package/blocks/text-content/config.ts +11 -0
- package/blocks/text-content/examples.ts +30 -0
- package/blocks/text-content/fields.ts +88 -0
- package/blocks/text-content/index.ts +6 -0
- package/blocks/text-content/schema.ts +30 -0
- package/blocks/text-content/thumbnail.png +1 -0
- package/blocks/timeline/component.tsx +267 -0
- package/blocks/timeline/config.ts +11 -0
- package/blocks/timeline/examples.ts +68 -0
- package/blocks/timeline/fields.ts +147 -0
- package/blocks/timeline/index.ts +6 -0
- package/blocks/timeline/schema.ts +49 -0
- package/blocks/video-hero/component.tsx +270 -0
- package/blocks/video-hero/config.ts +11 -0
- package/blocks/video-hero/examples.ts +24 -0
- package/blocks/video-hero/fields.ts +98 -0
- package/blocks/video-hero/index.ts +6 -0
- package/blocks/video-hero/schema.ts +39 -0
- package/components/ai-chat/ChatPanel.tsx +575 -0
- package/components/ai-chat/ConversationItem.tsx +266 -0
- package/components/ai-chat/ConversationSidebar.tsx +99 -0
- package/components/ai-chat/MarkdownRenderer.tsx +15 -0
- package/components/ai-chat/Message.tsx +42 -0
- package/components/ai-chat/MessageInput.tsx +49 -0
- package/components/ai-chat/MessageList.tsx +46 -0
- package/components/ai-chat/TypingIndicator.tsx +11 -0
- package/config/app.config.ts +367 -0
- package/config/billing.config.ts +349 -0
- package/config/dashboard.config.ts +506 -0
- package/config/dev.config.ts +104 -0
- package/config/features.config.ts +203 -0
- package/config/flows.config.ts +129 -0
- package/config/permissions.config.ts +245 -0
- package/config/theme.config.ts +74 -0
- package/docs/01-overview/01-introduction.md +335 -0
- package/docs/01-overview/02-customization.md +671 -0
- package/docs/02-features/01-components.md +155 -0
- package/docs/02-features/02-styling.md +139 -0
- package/docs/02-features/03-tasks-entity.md +407 -0
- package/docs/03-ai/01-overview.md +211 -0
- package/docs/03-ai/02-customization.md +436 -0
- package/entities/customers/customers.config.ts +75 -0
- package/entities/customers/customers.fields.ts +165 -0
- package/entities/customers/customers.service.ts +516 -0
- package/entities/customers/customers.types.ts +83 -0
- package/entities/customers/messages/en.json +66 -0
- package/entities/customers/messages/es.json +66 -0
- package/entities/customers/migrations/001_customers_table.sql +102 -0
- package/entities/customers/migrations/002_customers_metas.sql +92 -0
- package/entities/pages/messages/en.json +41 -0
- package/entities/pages/messages/es.json +41 -0
- package/entities/pages/migrations/001_pages_table.sql +112 -0
- package/entities/pages/migrations/002_pages_metas.sql +56 -0
- package/entities/pages/migrations/003_add_status.sql +50 -0
- package/entities/pages/pages-management.service.ts +610 -0
- package/entities/pages/pages.config.ts +94 -0
- package/entities/pages/pages.fields.ts +101 -0
- package/entities/pages/pages.service.ts +290 -0
- package/entities/pages/pages.types.ts +124 -0
- package/entities/posts/components/post-header.tsx +97 -0
- package/entities/posts/messages/en.json +55 -0
- package/entities/posts/messages/es.json +55 -0
- package/entities/posts/migrations/001_posts_table.sql +115 -0
- package/entities/posts/migrations/003_add_status.sql +44 -0
- package/entities/posts/migrations/004_entity_taxonomy_relations.sql +129 -0
- package/entities/posts/migrations/006_posts_metas.sql +56 -0
- package/entities/posts/posts.config.ts +101 -0
- package/entities/posts/posts.fields.ts +116 -0
- package/entities/posts/posts.service.ts +376 -0
- package/entities/posts/posts.types.ts +74 -0
- package/entities/tasks/messages/en.json +204 -0
- package/entities/tasks/messages/es.json +204 -0
- package/entities/tasks/migrations/001_tasks_table.sql +105 -0
- package/entities/tasks/migrations/002_task_metas.sql +85 -0
- package/entities/tasks/migrations/sample_data.json +77 -0
- package/entities/tasks/tasks.config.ts +79 -0
- package/entities/tasks/tasks.fields.ts +196 -0
- package/entities/tasks/tasks.service.ts +541 -0
- package/entities/tasks/tasks.types.ts +56 -0
- package/lib/hooks/useAiChat.ts +114 -0
- package/lib/hooks/useConversations.ts +376 -0
- package/lib/hooks/useOrchestratorChat.ts +122 -0
- package/lib/hooks/usePersistentChat.ts +315 -0
- package/lib/hooks/useStreamingChat.ts +127 -0
- package/lib/hooks/useTokenUsage.ts +63 -0
- package/lib/langchain/agents/customer-assistant.md +69 -0
- package/lib/langchain/agents/index.ts +61 -0
- package/lib/langchain/agents/orchestrator.md +59 -0
- package/lib/langchain/agents/page-assistant.md +85 -0
- package/lib/langchain/agents/single-agent.md +46 -0
- package/lib/langchain/agents/task-assistant.md +55 -0
- package/lib/langchain/config.ts +45 -0
- package/lib/langchain/handlers/customer-handler.ts +338 -0
- package/lib/langchain/handlers/page-handler.ts +232 -0
- package/lib/langchain/handlers/task-handler.ts +323 -0
- package/lib/langchain/langchain.config.ts +223 -0
- package/lib/langchain/observability.config.ts +30 -0
- package/lib/langchain/orchestrator.ts +562 -0
- package/lib/langchain/tools/customers.ts +176 -0
- package/lib/langchain/tools/index.ts +10 -0
- package/lib/langchain/tools/orchestrator.ts +92 -0
- package/lib/langchain/tools/pages.ts +289 -0
- package/lib/langchain/tools/tasks.ts +167 -0
- package/lib/scheduled-actions/billing.ts +149 -0
- package/lib/scheduled-actions/index.ts +170 -0
- package/lib/scheduled-actions/webhook.ts +231 -0
- package/lib/selectors.ts +197 -0
- package/messages/de/admin.json +219 -0
- package/messages/de/aiUsage.json +36 -0
- package/messages/de/buttons.json +19 -0
- package/messages/de/categories.json +35 -0
- package/messages/de/common.json +16 -0
- package/messages/de/dev.json +101 -0
- package/messages/de/docs.json +27 -0
- package/messages/de/entities.json +7 -0
- package/messages/de/features.json +119 -0
- package/messages/de/footer.json +22 -0
- package/messages/de/home.json +57 -0
- package/messages/de/index.ts +39 -0
- package/messages/de/mobileNav.json +13 -0
- package/messages/de/navigation.json +8 -0
- package/messages/de/observability.json +74 -0
- package/messages/de/posts.json +54 -0
- package/messages/de/pricing.json +102 -0
- package/messages/de/support.json +9 -0
- package/messages/de/teams.json +8 -0
- package/messages/en/admin.json +219 -0
- package/messages/en/aiUsage.json +36 -0
- package/messages/en/buttons.json +19 -0
- package/messages/en/categories.json +35 -0
- package/messages/en/common.json +16 -0
- package/messages/en/dev.json +106 -0
- package/messages/en/docs.json +27 -0
- package/messages/en/entities.json +7 -0
- package/messages/en/features.json +119 -0
- package/messages/en/footer.json +22 -0
- package/messages/en/home.json +57 -0
- package/messages/en/index.ts +39 -0
- package/messages/en/mobileNav.json +13 -0
- package/messages/en/navigation.json +8 -0
- package/messages/en/observability.json +74 -0
- package/messages/en/posts.json +54 -0
- package/messages/en/pricing.json +102 -0
- package/messages/en/support.json +9 -0
- package/messages/en/teams.json +8 -0
- package/messages/es/admin.json +219 -0
- package/messages/es/aiUsage.json +36 -0
- package/messages/es/buttons.json +19 -0
- package/messages/es/categories.json +35 -0
- package/messages/es/common.json +16 -0
- package/messages/es/dev.json +101 -0
- package/messages/es/docs.json +27 -0
- package/messages/es/entities.json +7 -0
- package/messages/es/features.json +119 -0
- package/messages/es/footer.json +22 -0
- package/messages/es/home.json +57 -0
- package/messages/es/index.ts +39 -0
- package/messages/es/mobileNav.json +13 -0
- package/messages/es/navigation.json +8 -0
- package/messages/es/observability.json +74 -0
- package/messages/es/posts.json +54 -0
- package/messages/es/pricing.json +102 -0
- package/messages/es/support.json +9 -0
- package/messages/es/teams.json +8 -0
- package/messages/fr/admin.json +219 -0
- package/messages/fr/aiUsage.json +36 -0
- package/messages/fr/buttons.json +19 -0
- package/messages/fr/categories.json +35 -0
- package/messages/fr/common.json +16 -0
- package/messages/fr/dev.json +101 -0
- package/messages/fr/docs.json +27 -0
- package/messages/fr/entities.json +7 -0
- package/messages/fr/features.json +119 -0
- package/messages/fr/footer.json +22 -0
- package/messages/fr/home.json +57 -0
- package/messages/fr/index.ts +39 -0
- package/messages/fr/mobileNav.json +13 -0
- package/messages/fr/navigation.json +8 -0
- package/messages/fr/observability.json +74 -0
- package/messages/fr/posts.json +54 -0
- package/messages/fr/pricing.json +102 -0
- package/messages/fr/support.json +9 -0
- package/messages/fr/teams.json +8 -0
- package/messages/it/admin.json +219 -0
- package/messages/it/aiUsage.json +36 -0
- package/messages/it/buttons.json +19 -0
- package/messages/it/categories.json +35 -0
- package/messages/it/common.json +16 -0
- package/messages/it/dev.json +101 -0
- package/messages/it/docs.json +27 -0
- package/messages/it/entities.json +7 -0
- package/messages/it/features.json +119 -0
- package/messages/it/footer.json +22 -0
- package/messages/it/home.json +57 -0
- package/messages/it/index.ts +39 -0
- package/messages/it/mobileNav.json +13 -0
- package/messages/it/navigation.json +8 -0
- package/messages/it/observability.json +74 -0
- package/messages/it/posts.json +54 -0
- package/messages/it/pricing.json +102 -0
- package/messages/it/support.json +9 -0
- package/messages/it/teams.json +8 -0
- package/messages/pt/admin.json +219 -0
- package/messages/pt/aiUsage.json +36 -0
- package/messages/pt/buttons.json +19 -0
- package/messages/pt/categories.json +35 -0
- package/messages/pt/common.json +16 -0
- package/messages/pt/dev.json +101 -0
- package/messages/pt/docs.json +27 -0
- package/messages/pt/entities.json +7 -0
- package/messages/pt/features.json +119 -0
- package/messages/pt/footer.json +22 -0
- package/messages/pt/home.json +57 -0
- package/messages/pt/index.ts +39 -0
- package/messages/pt/mobileNav.json +13 -0
- package/messages/pt/navigation.json +8 -0
- package/messages/pt/observability.json +74 -0
- package/messages/pt/posts.json +54 -0
- package/messages/pt/pricing.json +102 -0
- package/messages/pt/support.json +9 -0
- package/messages/pt/teams.json +8 -0
- package/migrations/089_add_editor_team_role.sql +39 -0
- package/migrations/090_demo_users_teams.sql +540 -0
- package/migrations/091_greek_teams_billing.sql +523 -0
- package/migrations/092_billing_sample_data.sql +774 -0
- package/migrations/093_pages_sample_data.sql +1158 -0
- package/migrations/094_posts_sample_data.sql +278 -0
- package/migrations/095_tasks_sample_data.sql +440 -0
- package/migrations/096_customers_sample_data.sql +358 -0
- package/migrations/097_scheduled_actions_sample_data.sql +111 -0
- package/package.json +22 -0
- package/public/docs/desktop-layout-example.png +0 -0
- package/styles/components.css +11 -0
- package/styles/globals.css +179 -0
- package/templates/(public)/blog/[slug]/page.tsx +65 -0
- package/templates/(public)/layout.tsx +25 -0
- package/templates/(public)/page.tsx +200 -0
- package/templates/(public)/support/page.tsx +321 -0
- package/templates/dashboard/(main)/agent-multi/page.tsx +63 -0
- package/templates/dashboard/(main)/agent-single/page.tsx +142 -0
- package/templates/dashboard/(main)/settings/ai-usage/page.tsx +157 -0
- package/templates/superadmin/ai-observability/[traceId]/page.tsx +27 -0
- package/templates/superadmin/ai-observability/page.tsx +17 -0
|
@@ -0,0 +1,774 @@
|
|
|
1
|
+
-- Migration: 092_billing_sample_data.sql
|
|
2
|
+
-- Description: Sample billing data for theme - plans, subscriptions, usage, and billing events
|
|
3
|
+
-- Date: 2025-12-25
|
|
4
|
+
-- Updated: 2025-12-26 - Added plans INSERT (moved from core)
|
|
5
|
+
-- Theme: default
|
|
6
|
+
-- Phase: Theme sample data - runs AFTER 091_greek_teams_billing.sql
|
|
7
|
+
--
|
|
8
|
+
-- This file contains billing sample data for:
|
|
9
|
+
-- - Sample plans (Free, Pro, Enterprise)
|
|
10
|
+
-- - TMT.dev company teams (Everpoint, Ironvale, Riverstone)
|
|
11
|
+
-- - TMT.dev personal teams (Carlos, etc.)
|
|
12
|
+
-- - Greek alphabet teams (Alpha through Omicron)
|
|
13
|
+
-- - TMT core team (superadmin + developer)
|
|
14
|
+
--
|
|
15
|
+
-- NOTE: Helper functions are in core migration 017_billing_functions.sql
|
|
16
|
+
-- NOTE: The trigger `create_default_subscription` auto-creates free subscriptions
|
|
17
|
+
-- when teams are created. We delete those to replace with our sample data.
|
|
18
|
+
|
|
19
|
+
-- ============================================
|
|
20
|
+
-- SAMPLE PLANS
|
|
21
|
+
-- ============================================
|
|
22
|
+
|
|
23
|
+
-- Plan: Free
|
|
24
|
+
INSERT INTO public."plans" (
|
|
25
|
+
id,
|
|
26
|
+
slug,
|
|
27
|
+
name,
|
|
28
|
+
description,
|
|
29
|
+
type,
|
|
30
|
+
visibility,
|
|
31
|
+
"priceMonthly",
|
|
32
|
+
"priceYearly",
|
|
33
|
+
"trialDays",
|
|
34
|
+
features,
|
|
35
|
+
limits,
|
|
36
|
+
"sortOrder"
|
|
37
|
+
) VALUES (
|
|
38
|
+
'plan_free',
|
|
39
|
+
'free',
|
|
40
|
+
'Free',
|
|
41
|
+
'Free plan to get started',
|
|
42
|
+
'free',
|
|
43
|
+
'public',
|
|
44
|
+
0,
|
|
45
|
+
0,
|
|
46
|
+
0,
|
|
47
|
+
'["basic_analytics"]'::jsonb,
|
|
48
|
+
'{"team_members": 3, "tasks": 50, "customers": 25, "storage_gb": 1, "api_calls": 1000, "file_uploads": 100, "webhooks_count": 0}'::jsonb,
|
|
49
|
+
1
|
|
50
|
+
) ON CONFLICT (slug) DO NOTHING;
|
|
51
|
+
|
|
52
|
+
-- Plan: Pro
|
|
53
|
+
INSERT INTO public."plans" (
|
|
54
|
+
id,
|
|
55
|
+
slug,
|
|
56
|
+
name,
|
|
57
|
+
description,
|
|
58
|
+
type,
|
|
59
|
+
visibility,
|
|
60
|
+
"priceMonthly",
|
|
61
|
+
"priceYearly",
|
|
62
|
+
"trialDays",
|
|
63
|
+
features,
|
|
64
|
+
limits,
|
|
65
|
+
"sortOrder"
|
|
66
|
+
) VALUES (
|
|
67
|
+
'plan_pro',
|
|
68
|
+
'pro',
|
|
69
|
+
'Pro',
|
|
70
|
+
'Professional plan for teams',
|
|
71
|
+
'paid',
|
|
72
|
+
'public',
|
|
73
|
+
2900,
|
|
74
|
+
29000,
|
|
75
|
+
14,
|
|
76
|
+
'["basic_analytics", "advanced_analytics", "realtime_analytics", "api_access", "webhooks", "custom_branding", "guest_access", "priority_support", "task_automation"]'::jsonb,
|
|
77
|
+
'{"team_members": 15, "tasks": 1000, "customers": 500, "storage_gb": 50, "api_calls": 100000, "file_uploads": 2000, "webhooks_count": 10}'::jsonb,
|
|
78
|
+
2
|
|
79
|
+
) ON CONFLICT (slug) DO NOTHING;
|
|
80
|
+
|
|
81
|
+
-- Plan: Enterprise
|
|
82
|
+
INSERT INTO public."plans" (
|
|
83
|
+
id,
|
|
84
|
+
slug,
|
|
85
|
+
name,
|
|
86
|
+
description,
|
|
87
|
+
type,
|
|
88
|
+
visibility,
|
|
89
|
+
"priceMonthly",
|
|
90
|
+
"priceYearly",
|
|
91
|
+
"trialDays",
|
|
92
|
+
features,
|
|
93
|
+
limits,
|
|
94
|
+
"sortOrder"
|
|
95
|
+
) VALUES (
|
|
96
|
+
'plan_enterprise',
|
|
97
|
+
'enterprise',
|
|
98
|
+
'Enterprise',
|
|
99
|
+
'Custom enterprise plan with unlimited features',
|
|
100
|
+
'enterprise',
|
|
101
|
+
'hidden',
|
|
102
|
+
49900, -- $499.00/mo
|
|
103
|
+
499000, -- $4,990.00/yr (2 months free)
|
|
104
|
+
30,
|
|
105
|
+
'["*"]'::jsonb,
|
|
106
|
+
'{"team_members": -1, "projects": -1, "storage_gb": -1, "api_calls": -1}'::jsonb,
|
|
107
|
+
3
|
|
108
|
+
) ON CONFLICT (slug) DO NOTHING;
|
|
109
|
+
|
|
110
|
+
-- ============================================
|
|
111
|
+
-- CLEANUP: Remove auto-created subscriptions
|
|
112
|
+
-- ============================================
|
|
113
|
+
-- These were created by the trigger when teams were inserted.
|
|
114
|
+
-- We want to replace them with more detailed sample subscriptions.
|
|
115
|
+
|
|
116
|
+
DELETE FROM public."subscriptions" WHERE "teamId" IN (
|
|
117
|
+
'team-everpoint-001',
|
|
118
|
+
'team-ironvale-002',
|
|
119
|
+
'team-riverstone-003',
|
|
120
|
+
'team-personal-carlos-001',
|
|
121
|
+
'team-nextspark-001',
|
|
122
|
+
'team-alpha-001',
|
|
123
|
+
'team-beta-002',
|
|
124
|
+
'team-gamma-003',
|
|
125
|
+
'team-delta-004',
|
|
126
|
+
'team-epsilon-005',
|
|
127
|
+
'team-zeta-006',
|
|
128
|
+
'team-eta-007',
|
|
129
|
+
'team-theta-008',
|
|
130
|
+
'team-iota-009',
|
|
131
|
+
'team-kappa-010',
|
|
132
|
+
'team-lambda-011',
|
|
133
|
+
'team-mu-012',
|
|
134
|
+
'team-nu-013',
|
|
135
|
+
'team-xi-014',
|
|
136
|
+
'team-omicron-015'
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
-- ============================================
|
|
140
|
+
-- SAMPLE SUBSCRIPTIONS - TMT.DEV TEAMS
|
|
141
|
+
-- ============================================
|
|
142
|
+
|
|
143
|
+
-- Company Teams - Paid Plans
|
|
144
|
+
INSERT INTO public."subscriptions" (
|
|
145
|
+
id,
|
|
146
|
+
"teamId",
|
|
147
|
+
"planId",
|
|
148
|
+
status,
|
|
149
|
+
"currentPeriodStart",
|
|
150
|
+
"currentPeriodEnd",
|
|
151
|
+
"billingInterval",
|
|
152
|
+
"paymentProvider",
|
|
153
|
+
"externalSubscriptionId",
|
|
154
|
+
"externalCustomerId",
|
|
155
|
+
"createdAt"
|
|
156
|
+
) VALUES
|
|
157
|
+
-- Everpoint Labs → Pro Plan (active, $29/mo)
|
|
158
|
+
(
|
|
159
|
+
'sub-everpoint-001',
|
|
160
|
+
'team-everpoint-001',
|
|
161
|
+
'plan_pro',
|
|
162
|
+
'active',
|
|
163
|
+
NOW() - INTERVAL '15 days',
|
|
164
|
+
NOW() + INTERVAL '15 days',
|
|
165
|
+
'monthly',
|
|
166
|
+
'stripe',
|
|
167
|
+
'sub_everpoint_stripe_001',
|
|
168
|
+
'cus_everpoint_001',
|
|
169
|
+
NOW() - INTERVAL '60 days'
|
|
170
|
+
),
|
|
171
|
+
-- Ironvale Global → Enterprise Plan (active, $499/mo)
|
|
172
|
+
(
|
|
173
|
+
'sub-ironvale-001',
|
|
174
|
+
'team-ironvale-002',
|
|
175
|
+
'plan_enterprise',
|
|
176
|
+
'active',
|
|
177
|
+
NOW() - INTERVAL '10 days',
|
|
178
|
+
NOW() + INTERVAL '20 days',
|
|
179
|
+
'monthly',
|
|
180
|
+
'stripe',
|
|
181
|
+
'sub_ironvale_stripe_001',
|
|
182
|
+
'cus_ironvale_001',
|
|
183
|
+
NOW() - INTERVAL '45 days'
|
|
184
|
+
),
|
|
185
|
+
-- Riverstone Ventures → Pro Plan (trialing, 14-day trial)
|
|
186
|
+
(
|
|
187
|
+
'sub-riverstone-001',
|
|
188
|
+
'team-riverstone-003',
|
|
189
|
+
'plan_pro',
|
|
190
|
+
'trialing',
|
|
191
|
+
NOW(),
|
|
192
|
+
NOW() + INTERVAL '30 days',
|
|
193
|
+
'monthly',
|
|
194
|
+
NULL,
|
|
195
|
+
NULL,
|
|
196
|
+
NULL,
|
|
197
|
+
NOW()
|
|
198
|
+
)
|
|
199
|
+
ON CONFLICT (id) DO NOTHING;
|
|
200
|
+
|
|
201
|
+
-- Add trialEndsAt for trialing subscription
|
|
202
|
+
UPDATE public."subscriptions"
|
|
203
|
+
SET "trialEndsAt" = NOW() + INTERVAL '14 days'
|
|
204
|
+
WHERE id = 'sub-riverstone-001';
|
|
205
|
+
|
|
206
|
+
-- Personal Teams - Free Plans
|
|
207
|
+
INSERT INTO public."subscriptions" (
|
|
208
|
+
id,
|
|
209
|
+
"teamId",
|
|
210
|
+
"planId",
|
|
211
|
+
status,
|
|
212
|
+
"currentPeriodStart",
|
|
213
|
+
"currentPeriodEnd",
|
|
214
|
+
"billingInterval",
|
|
215
|
+
"createdAt"
|
|
216
|
+
) VALUES
|
|
217
|
+
-- Carlos Personal Team → Free Plan
|
|
218
|
+
(
|
|
219
|
+
'sub-personal-carlos-001',
|
|
220
|
+
'team-personal-carlos-001',
|
|
221
|
+
'plan_free',
|
|
222
|
+
'active',
|
|
223
|
+
NOW(),
|
|
224
|
+
NOW() + INTERVAL '100 years',
|
|
225
|
+
'monthly',
|
|
226
|
+
NOW() - INTERVAL '45 days'
|
|
227
|
+
),
|
|
228
|
+
-- NextSpark Team → Pro Plan (for superadmin testing)
|
|
229
|
+
(
|
|
230
|
+
'sub-nextspark-001',
|
|
231
|
+
'team-nextspark-001',
|
|
232
|
+
'plan_pro',
|
|
233
|
+
'active',
|
|
234
|
+
NOW() - INTERVAL '60 days',
|
|
235
|
+
NOW() + INTERVAL '30 days',
|
|
236
|
+
'monthly',
|
|
237
|
+
NOW() - INTERVAL '120 days'
|
|
238
|
+
)
|
|
239
|
+
ON CONFLICT (id) DO NOTHING;
|
|
240
|
+
|
|
241
|
+
-- Add externalCustomerId for NextSpark team (for portal testing)
|
|
242
|
+
UPDATE public."subscriptions"
|
|
243
|
+
SET
|
|
244
|
+
"paymentProvider" = 'stripe',
|
|
245
|
+
"externalSubscriptionId" = 'sub_nextspark_stripe_001',
|
|
246
|
+
"externalCustomerId" = 'cus_nextspark_001'
|
|
247
|
+
WHERE id = 'sub-nextspark-001';
|
|
248
|
+
|
|
249
|
+
-- ============================================
|
|
250
|
+
-- SAMPLE BILLING EVENTS (Payment History)
|
|
251
|
+
-- ============================================
|
|
252
|
+
|
|
253
|
+
INSERT INTO public."billing_events" (
|
|
254
|
+
id,
|
|
255
|
+
"subscriptionId",
|
|
256
|
+
type,
|
|
257
|
+
status,
|
|
258
|
+
amount,
|
|
259
|
+
currency,
|
|
260
|
+
"externalPaymentId",
|
|
261
|
+
"createdAt"
|
|
262
|
+
) VALUES
|
|
263
|
+
-- Everpoint Labs payments (2 months history)
|
|
264
|
+
('be-ever-001', 'sub-everpoint-001', 'payment', 'succeeded', 2900, 'usd', 'pi_ever_001', NOW() - INTERVAL '60 days'),
|
|
265
|
+
('be-ever-002', 'sub-everpoint-001', 'payment', 'succeeded', 2900, 'usd', 'pi_ever_002', NOW() - INTERVAL '30 days'),
|
|
266
|
+
|
|
267
|
+
-- Ironvale Global (enterprise, $499/mo)
|
|
268
|
+
('be-iron-001', 'sub-ironvale-001', 'payment', 'succeeded', 49900, 'usd', 'pi_iron_001', NOW() - INTERVAL '45 days'),
|
|
269
|
+
('be-iron-002', 'sub-ironvale-001', 'payment', 'succeeded', 49900, 'usd', 'pi_iron_002', NOW() - INTERVAL '15 days'),
|
|
270
|
+
|
|
271
|
+
-- NextSpark Team payments (for testing portal)
|
|
272
|
+
('be-nextspark-001', 'sub-nextspark-001', 'payment', 'succeeded', 2900, 'usd', 'pi_nextspark_001', NOW() - INTERVAL '120 days'),
|
|
273
|
+
('be-nextspark-002', 'sub-nextspark-001', 'payment', 'succeeded', 2900, 'usd', 'pi_nextspark_002', NOW() - INTERVAL '90 days'),
|
|
274
|
+
('be-nextspark-003', 'sub-nextspark-001', 'payment', 'succeeded', 2900, 'usd', 'pi_nextspark_003', NOW() - INTERVAL '60 days'),
|
|
275
|
+
('be-nextspark-004', 'sub-nextspark-001', 'payment', 'succeeded', 2900, 'usd', 'pi_nextspark_004', NOW() - INTERVAL '30 days')
|
|
276
|
+
ON CONFLICT (id) DO NOTHING;
|
|
277
|
+
|
|
278
|
+
-- ============================================
|
|
279
|
+
-- SAMPLE USAGE (Aggregate Data)
|
|
280
|
+
-- ============================================
|
|
281
|
+
|
|
282
|
+
INSERT INTO public."usage" (
|
|
283
|
+
id,
|
|
284
|
+
"subscriptionId",
|
|
285
|
+
"limitSlug",
|
|
286
|
+
"periodKey",
|
|
287
|
+
"currentValue",
|
|
288
|
+
"lastIncrementAt",
|
|
289
|
+
"createdAt"
|
|
290
|
+
) VALUES
|
|
291
|
+
-- Everpoint Labs usage
|
|
292
|
+
('usage-ever-members', 'sub-everpoint-001', 'team_members', 'all_time', 4, NOW() - INTERVAL '45 days', NOW() - INTERVAL '60 days'),
|
|
293
|
+
('usage-ever-projects', 'sub-everpoint-001', 'projects', 'all_time', 12, NOW() - INTERVAL '5 days', NOW() - INTERVAL '60 days'),
|
|
294
|
+
('usage-ever-storage', 'sub-everpoint-001', 'storage_gb', 'all_time', 25, NOW() - INTERVAL '2 days', NOW() - INTERVAL '60 days'),
|
|
295
|
+
('usage-ever-api', 'sub-everpoint-001', 'api_calls', '2024-12', 45000, NOW() - INTERVAL '1 hour', NOW() - INTERVAL '30 days'),
|
|
296
|
+
|
|
297
|
+
-- Ironvale Global usage (enterprise - unlimited, but still tracked)
|
|
298
|
+
('usage-iron-members', 'sub-ironvale-001', 'team_members', 'all_time', 4, NOW() - INTERVAL '30 days', NOW() - INTERVAL '45 days'),
|
|
299
|
+
('usage-iron-projects', 'sub-ironvale-001', 'projects', 'all_time', 25, NOW() - INTERVAL '10 days', NOW() - INTERVAL '45 days'),
|
|
300
|
+
('usage-iron-storage', 'sub-ironvale-001', 'storage_gb', 'all_time', 150, NOW() - INTERVAL '2 days', NOW() - INTERVAL '45 days'),
|
|
301
|
+
('usage-iron-api', 'sub-ironvale-001', 'api_calls', '2024-12', 250000, NOW() - INTERVAL '30 minutes', NOW() - INTERVAL '30 days'),
|
|
302
|
+
|
|
303
|
+
-- NextSpark Team usage
|
|
304
|
+
('usage-nextspark-members', 'sub-nextspark-001', 'team_members', 'all_time', 2, NOW() - INTERVAL '120 days', NOW() - INTERVAL '120 days'),
|
|
305
|
+
('usage-nextspark-projects', 'sub-nextspark-001', 'projects', 'all_time', 3, NOW() - INTERVAL '30 days', NOW() - INTERVAL '120 days'),
|
|
306
|
+
('usage-nextspark-api', 'sub-nextspark-001', 'api_calls', '2024-12', 5000, NOW() - INTERVAL '1 day', NOW() - INTERVAL '30 days'),
|
|
307
|
+
|
|
308
|
+
-- Carlos personal team (free plan)
|
|
309
|
+
('usage-carlos-projects', 'sub-personal-carlos-001', 'projects', 'all_time', 4, NOW() - INTERVAL '15 days', NOW() - INTERVAL '45 days')
|
|
310
|
+
ON CONFLICT (id) DO NOTHING;
|
|
311
|
+
|
|
312
|
+
-- ============================================
|
|
313
|
+
-- SAMPLE USAGE EVENTS (Audit Trail)
|
|
314
|
+
-- ============================================
|
|
315
|
+
|
|
316
|
+
INSERT INTO public."usage_events" (
|
|
317
|
+
id,
|
|
318
|
+
"subscriptionId",
|
|
319
|
+
"userId",
|
|
320
|
+
"teamId",
|
|
321
|
+
"limitSlug",
|
|
322
|
+
delta,
|
|
323
|
+
action,
|
|
324
|
+
"resourceType",
|
|
325
|
+
"resourceId",
|
|
326
|
+
"periodKey",
|
|
327
|
+
"createdAt"
|
|
328
|
+
) VALUES
|
|
329
|
+
-- Everpoint recent activity
|
|
330
|
+
('ue-ever-001', 'sub-everpoint-001', 'usr-carlos-001', 'team-everpoint-001', 'projects', 1, 'create_project', 'project', 'proj-ever-001', 'all_time', NOW() - INTERVAL '5 days'),
|
|
331
|
+
('ue-ever-002', 'sub-everpoint-001', 'usr-james-002', 'team-everpoint-001', 'api_calls', 500, 'api_batch', 'api_request', NULL, '2024-12', NOW() - INTERVAL '1 hour'),
|
|
332
|
+
|
|
333
|
+
-- Ironvale recent activity
|
|
334
|
+
('ue-iron-001', 'sub-ironvale-001', 'usr-ana-005', 'team-ironvale-002', 'projects', 1, 'create_project', 'project', 'proj-iron-001', 'all_time', NOW() - INTERVAL '10 days'),
|
|
335
|
+
('ue-iron-002', 'sub-ironvale-001', 'usr-ana-005', 'team-ironvale-002', 'api_calls', 1000, 'api_batch', 'api_request', NULL, '2024-12', NOW() - INTERVAL '30 minutes'),
|
|
336
|
+
|
|
337
|
+
-- NextSpark Team activity
|
|
338
|
+
('ue-nextspark-001', 'sub-nextspark-001', 'test-superadmin-001', 'team-nextspark-001', 'projects', 1, 'create_project', 'project', 'proj-nextspark-001', 'all_time', NOW() - INTERVAL '30 days'),
|
|
339
|
+
('ue-nextspark-002', 'sub-nextspark-001', 'test-superadmin-001', 'team-nextspark-001', 'api_calls', 200, 'api_batch', 'api_request', NULL, '2024-12', NOW() - INTERVAL '1 day')
|
|
340
|
+
ON CONFLICT (id) DO NOTHING;
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
-- ============================================
|
|
344
|
+
-- NEW TEAMS SUBSCRIPTIONS (10 teams from 090_sample_data.sql)
|
|
345
|
+
-- ============================================
|
|
346
|
+
-- Teams 1-8: Active subscriptions with 6 months payment history
|
|
347
|
+
-- Team 9 (Iota): Voluntary cancellation
|
|
348
|
+
-- Team 10 (Kappa): Payment failure cancellation
|
|
349
|
+
|
|
350
|
+
INSERT INTO public."subscriptions" (
|
|
351
|
+
id,
|
|
352
|
+
"teamId",
|
|
353
|
+
"planId",
|
|
354
|
+
status,
|
|
355
|
+
"currentPeriodStart",
|
|
356
|
+
"currentPeriodEnd",
|
|
357
|
+
"billingInterval",
|
|
358
|
+
"paymentProvider",
|
|
359
|
+
"externalSubscriptionId",
|
|
360
|
+
"externalCustomerId",
|
|
361
|
+
"createdAt",
|
|
362
|
+
"canceledAt",
|
|
363
|
+
metadata
|
|
364
|
+
) VALUES
|
|
365
|
+
-- Alpha Tech → Pro Plan (active, $29/mo)
|
|
366
|
+
(
|
|
367
|
+
'sub-alpha-001',
|
|
368
|
+
'team-alpha-001',
|
|
369
|
+
'plan_pro',
|
|
370
|
+
'active',
|
|
371
|
+
NOW() - INTERVAL '30 days',
|
|
372
|
+
NOW() + INTERVAL '30 days',
|
|
373
|
+
'monthly',
|
|
374
|
+
'stripe',
|
|
375
|
+
'sub_alpha_stripe_001',
|
|
376
|
+
'cus_alpha_001',
|
|
377
|
+
NOW() - INTERVAL '180 days',
|
|
378
|
+
NULL,
|
|
379
|
+
'{}'::jsonb
|
|
380
|
+
),
|
|
381
|
+
-- Beta Solutions → Pro Plan (active, $29/mo)
|
|
382
|
+
(
|
|
383
|
+
'sub-beta-001',
|
|
384
|
+
'team-beta-002',
|
|
385
|
+
'plan_pro',
|
|
386
|
+
'active',
|
|
387
|
+
NOW() - INTERVAL '25 days',
|
|
388
|
+
NOW() + INTERVAL '5 days',
|
|
389
|
+
'monthly',
|
|
390
|
+
'stripe',
|
|
391
|
+
'sub_beta_stripe_001',
|
|
392
|
+
'cus_beta_001',
|
|
393
|
+
NOW() - INTERVAL '180 days',
|
|
394
|
+
NULL,
|
|
395
|
+
'{}'::jsonb
|
|
396
|
+
),
|
|
397
|
+
-- Gamma Industries → Pro Plan (active, $29/mo)
|
|
398
|
+
(
|
|
399
|
+
'sub-gamma-001',
|
|
400
|
+
'team-gamma-003',
|
|
401
|
+
'plan_pro',
|
|
402
|
+
'active',
|
|
403
|
+
NOW() - INTERVAL '20 days',
|
|
404
|
+
NOW() + INTERVAL '10 days',
|
|
405
|
+
'monthly',
|
|
406
|
+
'stripe',
|
|
407
|
+
'sub_gamma_stripe_001',
|
|
408
|
+
'cus_gamma_001',
|
|
409
|
+
NOW() - INTERVAL '180 days',
|
|
410
|
+
NULL,
|
|
411
|
+
'{}'::jsonb
|
|
412
|
+
),
|
|
413
|
+
-- Delta Dynamics → Pro Plan (active, $29/mo)
|
|
414
|
+
(
|
|
415
|
+
'sub-delta-001',
|
|
416
|
+
'team-delta-004',
|
|
417
|
+
'plan_pro',
|
|
418
|
+
'active',
|
|
419
|
+
NOW() - INTERVAL '15 days',
|
|
420
|
+
NOW() + INTERVAL '15 days',
|
|
421
|
+
'monthly',
|
|
422
|
+
'stripe',
|
|
423
|
+
'sub_delta_stripe_001',
|
|
424
|
+
'cus_delta_001',
|
|
425
|
+
NOW() - INTERVAL '180 days',
|
|
426
|
+
NULL,
|
|
427
|
+
'{}'::jsonb
|
|
428
|
+
),
|
|
429
|
+
-- Epsilon Media → Pro Plan (active, $29/mo)
|
|
430
|
+
(
|
|
431
|
+
'sub-epsilon-001',
|
|
432
|
+
'team-epsilon-005',
|
|
433
|
+
'plan_pro',
|
|
434
|
+
'active',
|
|
435
|
+
NOW() - INTERVAL '10 days',
|
|
436
|
+
NOW() + INTERVAL '20 days',
|
|
437
|
+
'monthly',
|
|
438
|
+
'stripe',
|
|
439
|
+
'sub_epsilon_stripe_001',
|
|
440
|
+
'cus_epsilon_001',
|
|
441
|
+
NOW() - INTERVAL '180 days',
|
|
442
|
+
NULL,
|
|
443
|
+
'{}'::jsonb
|
|
444
|
+
),
|
|
445
|
+
-- Zeta Finance → Pro Plan (active, $29/mo)
|
|
446
|
+
(
|
|
447
|
+
'sub-zeta-001',
|
|
448
|
+
'team-zeta-006',
|
|
449
|
+
'plan_pro',
|
|
450
|
+
'active',
|
|
451
|
+
NOW() - INTERVAL '5 days',
|
|
452
|
+
NOW() + INTERVAL '25 days',
|
|
453
|
+
'monthly',
|
|
454
|
+
'stripe',
|
|
455
|
+
'sub_zeta_stripe_001',
|
|
456
|
+
'cus_zeta_001',
|
|
457
|
+
NOW() - INTERVAL '180 days',
|
|
458
|
+
NULL,
|
|
459
|
+
'{}'::jsonb
|
|
460
|
+
),
|
|
461
|
+
-- Eta Healthcare → Pro Plan (active, $29/mo)
|
|
462
|
+
(
|
|
463
|
+
'sub-eta-001',
|
|
464
|
+
'team-eta-007',
|
|
465
|
+
'plan_pro',
|
|
466
|
+
'active',
|
|
467
|
+
NOW() - INTERVAL '28 days',
|
|
468
|
+
NOW() + INTERVAL '2 days',
|
|
469
|
+
'monthly',
|
|
470
|
+
'stripe',
|
|
471
|
+
'sub_eta_stripe_001',
|
|
472
|
+
'cus_eta_001',
|
|
473
|
+
NOW() - INTERVAL '180 days',
|
|
474
|
+
NULL,
|
|
475
|
+
'{}'::jsonb
|
|
476
|
+
),
|
|
477
|
+
-- Theta Enterprises → Enterprise Plan (active, $499/mo)
|
|
478
|
+
(
|
|
479
|
+
'sub-theta-001',
|
|
480
|
+
'team-theta-008',
|
|
481
|
+
'plan_enterprise',
|
|
482
|
+
'active',
|
|
483
|
+
NOW() - INTERVAL '22 days',
|
|
484
|
+
NOW() + INTERVAL '8 days',
|
|
485
|
+
'monthly',
|
|
486
|
+
'stripe',
|
|
487
|
+
'sub_theta_stripe_001',
|
|
488
|
+
'cus_theta_001',
|
|
489
|
+
NOW() - INTERVAL '180 days',
|
|
490
|
+
NULL,
|
|
491
|
+
'{}'::jsonb
|
|
492
|
+
),
|
|
493
|
+
-- Iota Consulting → Pro Plan (CANCELED - voluntary)
|
|
494
|
+
(
|
|
495
|
+
'sub-iota-001',
|
|
496
|
+
'team-iota-009',
|
|
497
|
+
'plan_pro',
|
|
498
|
+
'canceled',
|
|
499
|
+
NOW() - INTERVAL '45 days',
|
|
500
|
+
NOW() - INTERVAL '15 days',
|
|
501
|
+
'monthly',
|
|
502
|
+
'stripe',
|
|
503
|
+
'sub_iota_stripe_001',
|
|
504
|
+
'cus_iota_001',
|
|
505
|
+
NOW() - INTERVAL '180 days',
|
|
506
|
+
NOW() - INTERVAL '15 days',
|
|
507
|
+
'{"cancelReason": "voluntary", "canceledBy": "user"}'::jsonb
|
|
508
|
+
),
|
|
509
|
+
-- Kappa Labs → Pro Plan (CANCELED - payment failure)
|
|
510
|
+
(
|
|
511
|
+
'sub-kappa-001',
|
|
512
|
+
'team-kappa-010',
|
|
513
|
+
'plan_pro',
|
|
514
|
+
'canceled',
|
|
515
|
+
NOW() - INTERVAL '40 days',
|
|
516
|
+
NOW() - INTERVAL '10 days',
|
|
517
|
+
'monthly',
|
|
518
|
+
'stripe',
|
|
519
|
+
'sub_kappa_stripe_001',
|
|
520
|
+
'cus_kappa_001',
|
|
521
|
+
NOW() - INTERVAL '180 days',
|
|
522
|
+
NOW() - INTERVAL '10 days',
|
|
523
|
+
'{"cancelReason": "payment_failed", "failedAttempts": 4}'::jsonb
|
|
524
|
+
)
|
|
525
|
+
ON CONFLICT (id) DO NOTHING;
|
|
526
|
+
|
|
527
|
+
-- ============================================
|
|
528
|
+
-- NEW TEAMS BILLING EVENTS (6 months history each)
|
|
529
|
+
-- ============================================
|
|
530
|
+
-- All amounts in cents (2900 = $29, 49900 = $499)
|
|
531
|
+
|
|
532
|
+
INSERT INTO public."billing_events" (
|
|
533
|
+
id,
|
|
534
|
+
"subscriptionId",
|
|
535
|
+
type,
|
|
536
|
+
status,
|
|
537
|
+
amount,
|
|
538
|
+
currency,
|
|
539
|
+
"externalPaymentId",
|
|
540
|
+
"createdAt"
|
|
541
|
+
) VALUES
|
|
542
|
+
-- ========================================
|
|
543
|
+
-- ALPHA TECH - 6 months payment history
|
|
544
|
+
-- ========================================
|
|
545
|
+
('be-alpha-m1', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m1', NOW() - INTERVAL '180 days'),
|
|
546
|
+
('be-alpha-m2', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m2', NOW() - INTERVAL '150 days'),
|
|
547
|
+
('be-alpha-m3', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m3', NOW() - INTERVAL '120 days'),
|
|
548
|
+
('be-alpha-m4', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m4', NOW() - INTERVAL '90 days'),
|
|
549
|
+
('be-alpha-m5', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m5', NOW() - INTERVAL '60 days'),
|
|
550
|
+
('be-alpha-m6', 'sub-alpha-001', 'payment', 'succeeded', 2900, 'usd', 'pi_alpha_m6', NOW() - INTERVAL '30 days'),
|
|
551
|
+
|
|
552
|
+
-- ========================================
|
|
553
|
+
-- BETA SOLUTIONS - 6 months payment history
|
|
554
|
+
-- ========================================
|
|
555
|
+
('be-beta-m1', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m1', NOW() - INTERVAL '180 days'),
|
|
556
|
+
('be-beta-m2', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m2', NOW() - INTERVAL '150 days'),
|
|
557
|
+
('be-beta-m3', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m3', NOW() - INTERVAL '120 days'),
|
|
558
|
+
('be-beta-m4', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m4', NOW() - INTERVAL '90 days'),
|
|
559
|
+
('be-beta-m5', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m5', NOW() - INTERVAL '60 days'),
|
|
560
|
+
('be-beta-m6', 'sub-beta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_beta_m6', NOW() - INTERVAL '30 days'),
|
|
561
|
+
|
|
562
|
+
-- ========================================
|
|
563
|
+
-- GAMMA INDUSTRIES - 6 months payment history
|
|
564
|
+
-- ========================================
|
|
565
|
+
('be-gamma-m1', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m1', NOW() - INTERVAL '180 days'),
|
|
566
|
+
('be-gamma-m2', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m2', NOW() - INTERVAL '150 days'),
|
|
567
|
+
('be-gamma-m3', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m3', NOW() - INTERVAL '120 days'),
|
|
568
|
+
('be-gamma-m4', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m4', NOW() - INTERVAL '90 days'),
|
|
569
|
+
('be-gamma-m5', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m5', NOW() - INTERVAL '60 days'),
|
|
570
|
+
('be-gamma-m6', 'sub-gamma-001', 'payment', 'succeeded', 2900, 'usd', 'pi_gamma_m6', NOW() - INTERVAL '30 days'),
|
|
571
|
+
|
|
572
|
+
-- ========================================
|
|
573
|
+
-- DELTA DYNAMICS - 6 months payment history
|
|
574
|
+
-- ========================================
|
|
575
|
+
('be-delta-m1', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m1', NOW() - INTERVAL '180 days'),
|
|
576
|
+
('be-delta-m2', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m2', NOW() - INTERVAL '150 days'),
|
|
577
|
+
('be-delta-m3', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m3', NOW() - INTERVAL '120 days'),
|
|
578
|
+
('be-delta-m4', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m4', NOW() - INTERVAL '90 days'),
|
|
579
|
+
('be-delta-m5', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m5', NOW() - INTERVAL '60 days'),
|
|
580
|
+
('be-delta-m6', 'sub-delta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_delta_m6', NOW() - INTERVAL '30 days'),
|
|
581
|
+
|
|
582
|
+
-- ========================================
|
|
583
|
+
-- EPSILON MEDIA - 6 months payment history
|
|
584
|
+
-- ========================================
|
|
585
|
+
('be-epsilon-m1', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m1', NOW() - INTERVAL '180 days'),
|
|
586
|
+
('be-epsilon-m2', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m2', NOW() - INTERVAL '150 days'),
|
|
587
|
+
('be-epsilon-m3', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m3', NOW() - INTERVAL '120 days'),
|
|
588
|
+
('be-epsilon-m4', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m4', NOW() - INTERVAL '90 days'),
|
|
589
|
+
('be-epsilon-m5', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m5', NOW() - INTERVAL '60 days'),
|
|
590
|
+
('be-epsilon-m6', 'sub-epsilon-001', 'payment', 'succeeded', 2900, 'usd', 'pi_epsilon_m6', NOW() - INTERVAL '30 days'),
|
|
591
|
+
|
|
592
|
+
-- ========================================
|
|
593
|
+
-- ZETA FINANCE - 6 months payment history
|
|
594
|
+
-- ========================================
|
|
595
|
+
('be-zeta-m1', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m1', NOW() - INTERVAL '180 days'),
|
|
596
|
+
('be-zeta-m2', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m2', NOW() - INTERVAL '150 days'),
|
|
597
|
+
('be-zeta-m3', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m3', NOW() - INTERVAL '120 days'),
|
|
598
|
+
('be-zeta-m4', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m4', NOW() - INTERVAL '90 days'),
|
|
599
|
+
('be-zeta-m5', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m5', NOW() - INTERVAL '60 days'),
|
|
600
|
+
('be-zeta-m6', 'sub-zeta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_zeta_m6', NOW() - INTERVAL '30 days'),
|
|
601
|
+
|
|
602
|
+
-- ========================================
|
|
603
|
+
-- ETA HEALTHCARE - 6 months payment history
|
|
604
|
+
-- ========================================
|
|
605
|
+
('be-eta-m1', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m1', NOW() - INTERVAL '180 days'),
|
|
606
|
+
('be-eta-m2', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m2', NOW() - INTERVAL '150 days'),
|
|
607
|
+
('be-eta-m3', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m3', NOW() - INTERVAL '120 days'),
|
|
608
|
+
('be-eta-m4', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m4', NOW() - INTERVAL '90 days'),
|
|
609
|
+
('be-eta-m5', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m5', NOW() - INTERVAL '60 days'),
|
|
610
|
+
('be-eta-m6', 'sub-eta-001', 'payment', 'succeeded', 2900, 'usd', 'pi_eta_m6', NOW() - INTERVAL '30 days'),
|
|
611
|
+
|
|
612
|
+
-- ========================================
|
|
613
|
+
-- THETA ENTERPRISES - 6 months Enterprise @ $499/mo
|
|
614
|
+
-- ========================================
|
|
615
|
+
('be-theta-m1', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m1', NOW() - INTERVAL '180 days'),
|
|
616
|
+
('be-theta-m2', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m2', NOW() - INTERVAL '150 days'),
|
|
617
|
+
('be-theta-m3', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m3', NOW() - INTERVAL '120 days'),
|
|
618
|
+
('be-theta-m4', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m4', NOW() - INTERVAL '90 days'),
|
|
619
|
+
('be-theta-m5', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m5', NOW() - INTERVAL '60 days'),
|
|
620
|
+
('be-theta-m6', 'sub-theta-001', 'payment', 'succeeded', 49900, 'usd', 'pi_theta_m6', NOW() - INTERVAL '30 days'),
|
|
621
|
+
|
|
622
|
+
-- ========================================
|
|
623
|
+
-- IOTA CONSULTING - 5 months paid, then VOLUNTARY CANCELLATION
|
|
624
|
+
-- ========================================
|
|
625
|
+
('be-iota-m1', 'sub-iota-001', 'payment', 'succeeded', 2900, 'usd', 'pi_iota_m1', NOW() - INTERVAL '180 days'),
|
|
626
|
+
('be-iota-m2', 'sub-iota-001', 'payment', 'succeeded', 2900, 'usd', 'pi_iota_m2', NOW() - INTERVAL '150 days'),
|
|
627
|
+
('be-iota-m3', 'sub-iota-001', 'payment', 'succeeded', 2900, 'usd', 'pi_iota_m3', NOW() - INTERVAL '120 days'),
|
|
628
|
+
('be-iota-m4', 'sub-iota-001', 'payment', 'succeeded', 2900, 'usd', 'pi_iota_m4', NOW() - INTERVAL '90 days'),
|
|
629
|
+
('be-iota-m5', 'sub-iota-001', 'payment', 'succeeded', 2900, 'usd', 'pi_iota_m5', NOW() - INTERVAL '60 days'),
|
|
630
|
+
-- Last invoice before voluntary cancellation
|
|
631
|
+
('be-iota-inv-last', 'sub-iota-001', 'invoice', 'succeeded', 2900, 'usd', 'in_iota_last', NOW() - INTERVAL '30 days'),
|
|
632
|
+
|
|
633
|
+
-- ========================================
|
|
634
|
+
-- KAPPA LABS - 4 months paid, 2 failed payments, then CANCELED
|
|
635
|
+
-- ========================================
|
|
636
|
+
('be-kappa-m1', 'sub-kappa-001', 'payment', 'succeeded', 2900, 'usd', 'pi_kappa_m1', NOW() - INTERVAL '180 days'),
|
|
637
|
+
('be-kappa-m2', 'sub-kappa-001', 'payment', 'succeeded', 2900, 'usd', 'pi_kappa_m2', NOW() - INTERVAL '150 days'),
|
|
638
|
+
('be-kappa-m3', 'sub-kappa-001', 'payment', 'succeeded', 2900, 'usd', 'pi_kappa_m3', NOW() - INTERVAL '120 days'),
|
|
639
|
+
('be-kappa-m4', 'sub-kappa-001', 'payment', 'succeeded', 2900, 'usd', 'pi_kappa_m4', NOW() - INTERVAL '90 days'),
|
|
640
|
+
-- First failed payment attempt
|
|
641
|
+
('be-kappa-fail1', 'sub-kappa-001', 'payment', 'failed', 2900, 'usd', 'pi_kappa_fail1', NOW() - INTERVAL '60 days'),
|
|
642
|
+
-- Retry failed payment
|
|
643
|
+
('be-kappa-fail2', 'sub-kappa-001', 'payment', 'failed', 2900, 'usd', 'pi_kappa_fail2', NOW() - INTERVAL '50 days'),
|
|
644
|
+
-- Second failed payment (next month)
|
|
645
|
+
('be-kappa-fail3', 'sub-kappa-001', 'payment', 'failed', 2900, 'usd', 'pi_kappa_fail3', NOW() - INTERVAL '30 days'),
|
|
646
|
+
-- Final attempt failed, subscription canceled
|
|
647
|
+
('be-kappa-fail4', 'sub-kappa-001', 'payment', 'failed', 2900, 'usd', 'pi_kappa_fail4', NOW() - INTERVAL '20 days')
|
|
648
|
+
ON CONFLICT (id) DO NOTHING;
|
|
649
|
+
|
|
650
|
+
-- ============================================
|
|
651
|
+
-- ANNUAL SUBSCRIPTION TEAMS (5 teams)
|
|
652
|
+
-- ============================================
|
|
653
|
+
-- Teams 11-13: Enterprise Yearly ($4,990/yr = 499000 cents)
|
|
654
|
+
-- Teams 14-15: Pro Yearly ($290/yr = 29000 cents)
|
|
655
|
+
|
|
656
|
+
INSERT INTO public."subscriptions" (
|
|
657
|
+
id,
|
|
658
|
+
"teamId",
|
|
659
|
+
"planId",
|
|
660
|
+
status,
|
|
661
|
+
"currentPeriodStart",
|
|
662
|
+
"currentPeriodEnd",
|
|
663
|
+
"billingInterval",
|
|
664
|
+
"paymentProvider",
|
|
665
|
+
"externalSubscriptionId",
|
|
666
|
+
"externalCustomerId",
|
|
667
|
+
"createdAt",
|
|
668
|
+
metadata
|
|
669
|
+
) VALUES
|
|
670
|
+
-- Lambda Corp → Enterprise Plan (active, yearly $4,990/yr)
|
|
671
|
+
(
|
|
672
|
+
'sub-lambda-001',
|
|
673
|
+
'team-lambda-011',
|
|
674
|
+
'plan_enterprise',
|
|
675
|
+
'active',
|
|
676
|
+
NOW() - INTERVAL '60 days',
|
|
677
|
+
NOW() + INTERVAL '305 days',
|
|
678
|
+
'yearly',
|
|
679
|
+
'stripe',
|
|
680
|
+
'sub_lambda_stripe_001',
|
|
681
|
+
'cus_lambda_001',
|
|
682
|
+
NOW() - INTERVAL '365 days',
|
|
683
|
+
'{}'::jsonb
|
|
684
|
+
),
|
|
685
|
+
-- Mu Industries → Enterprise Plan (active, yearly $4,990/yr)
|
|
686
|
+
(
|
|
687
|
+
'sub-mu-001',
|
|
688
|
+
'team-mu-012',
|
|
689
|
+
'plan_enterprise',
|
|
690
|
+
'active',
|
|
691
|
+
NOW() - INTERVAL '90 days',
|
|
692
|
+
NOW() + INTERVAL '275 days',
|
|
693
|
+
'yearly',
|
|
694
|
+
'stripe',
|
|
695
|
+
'sub_mu_stripe_001',
|
|
696
|
+
'cus_mu_001',
|
|
697
|
+
NOW() - INTERVAL '365 days',
|
|
698
|
+
'{}'::jsonb
|
|
699
|
+
),
|
|
700
|
+
-- Nu Dynamics → Enterprise Plan (active, yearly $4,990/yr)
|
|
701
|
+
(
|
|
702
|
+
'sub-nu-001',
|
|
703
|
+
'team-nu-013',
|
|
704
|
+
'plan_enterprise',
|
|
705
|
+
'active',
|
|
706
|
+
NOW() - INTERVAL '120 days',
|
|
707
|
+
NOW() + INTERVAL '245 days',
|
|
708
|
+
'yearly',
|
|
709
|
+
'stripe',
|
|
710
|
+
'sub_nu_stripe_001',
|
|
711
|
+
'cus_nu_001',
|
|
712
|
+
NOW() - INTERVAL '365 days',
|
|
713
|
+
'{}'::jsonb
|
|
714
|
+
),
|
|
715
|
+
-- Xi Solutions → Pro Plan (active, yearly $290/yr)
|
|
716
|
+
(
|
|
717
|
+
'sub-xi-001',
|
|
718
|
+
'team-xi-014',
|
|
719
|
+
'plan_pro',
|
|
720
|
+
'active',
|
|
721
|
+
NOW() - INTERVAL '45 days',
|
|
722
|
+
NOW() + INTERVAL '320 days',
|
|
723
|
+
'yearly',
|
|
724
|
+
'stripe',
|
|
725
|
+
'sub_xi_stripe_001',
|
|
726
|
+
'cus_xi_001',
|
|
727
|
+
NOW() - INTERVAL '365 days',
|
|
728
|
+
'{}'::jsonb
|
|
729
|
+
),
|
|
730
|
+
-- Omicron Labs → Pro Plan (active, yearly $290/yr)
|
|
731
|
+
(
|
|
732
|
+
'sub-omicron-001',
|
|
733
|
+
'team-omicron-015',
|
|
734
|
+
'plan_pro',
|
|
735
|
+
'active',
|
|
736
|
+
NOW() - INTERVAL '30 days',
|
|
737
|
+
NOW() + INTERVAL '335 days',
|
|
738
|
+
'yearly',
|
|
739
|
+
'stripe',
|
|
740
|
+
'sub_omicron_stripe_001',
|
|
741
|
+
'cus_omicron_001',
|
|
742
|
+
NOW() - INTERVAL '365 days',
|
|
743
|
+
'{}'::jsonb
|
|
744
|
+
)
|
|
745
|
+
ON CONFLICT (id) DO NOTHING;
|
|
746
|
+
|
|
747
|
+
-- ============================================
|
|
748
|
+
-- ANNUAL BILLING EVENTS (1 year payment each)
|
|
749
|
+
-- ============================================
|
|
750
|
+
INSERT INTO public."billing_events" (
|
|
751
|
+
id,
|
|
752
|
+
"subscriptionId",
|
|
753
|
+
type,
|
|
754
|
+
status,
|
|
755
|
+
amount,
|
|
756
|
+
currency,
|
|
757
|
+
"externalPaymentId",
|
|
758
|
+
"createdAt"
|
|
759
|
+
) VALUES
|
|
760
|
+
-- Lambda Corp - 1 yearly payment
|
|
761
|
+
('be-lambda-y1', 'sub-lambda-001', 'payment', 'succeeded', 499000, 'usd', 'pi_lambda_y1', NOW() - INTERVAL '60 days'),
|
|
762
|
+
|
|
763
|
+
-- Mu Industries - 1 yearly payment
|
|
764
|
+
('be-mu-y1', 'sub-mu-001', 'payment', 'succeeded', 499000, 'usd', 'pi_mu_y1', NOW() - INTERVAL '90 days'),
|
|
765
|
+
|
|
766
|
+
-- Nu Dynamics - 1 yearly payment
|
|
767
|
+
('be-nu-y1', 'sub-nu-001', 'payment', 'succeeded', 499000, 'usd', 'pi_nu_y1', NOW() - INTERVAL '120 days'),
|
|
768
|
+
|
|
769
|
+
-- Xi Solutions - 1 yearly payment (Pro)
|
|
770
|
+
('be-xi-y1', 'sub-xi-001', 'payment', 'succeeded', 29000, 'usd', 'pi_xi_y1', NOW() - INTERVAL '45 days'),
|
|
771
|
+
|
|
772
|
+
-- Omicron Labs - 1 yearly payment (Pro)
|
|
773
|
+
('be-omicron-y1', 'sub-omicron-001', 'payment', 'succeeded', 29000, 'usd', 'pi_omicron_y1', NOW() - INTERVAL '30 days')
|
|
774
|
+
ON CONFLICT (id) DO NOTHING;
|