diff --git a/frontend/src/app/(dashboard)/model-pricing/page.tsx b/frontend/src/app/(dashboard)/model-pricing/page.tsx index 76cef25a..6d57383b 100644 --- a/frontend/src/app/(dashboard)/model-pricing/page.tsx +++ b/frontend/src/app/(dashboard)/model-pricing/page.tsx @@ -18,9 +18,75 @@ import { CardTitle, } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; import { useAvailableModels } from '@/hooks/react-query/subscriptions/use-billing'; import type { Model } from '@/lib/api'; import { Loader2 } from 'lucide-react'; +import { useState } from 'react'; + +// Example task data with token usage +const exampleTasks = [ + { + name: 'Social Automation System', + complexity: 'Complex', + complexityVariant: 'destructive' as const, + inputTokens: 3410337, + outputTokens: 93616, + duration: '35 minutes', + originalModel: 'claude-sonnet-4', + }, + { + name: 'Content Marketing Strategy', + complexity: 'Standard Complexity', + complexityVariant: 'secondary' as const, + inputTokens: 212312, + outputTokens: 3378, + duration: '11 minutes', + originalModel: 'claude-sonnet-4', + }, + { + name: 'Go-to-Market Strategy', + complexity: 'Standard Complexity', + complexityVariant: 'secondary' as const, + inputTokens: 307719, + outputTokens: 24033, + duration: '16 minutes', + originalModel: 'claude-sonnet-4', + }, + { + name: 'Learning Path Generator', + complexity: 'Standard Complexity', + complexityVariant: 'secondary' as const, + inputTokens: 90953, + outputTokens: 17472, + duration: '5 minutes', + originalModel: 'claude-sonnet-4', + }, + { + name: 'Customer Journey Mapping', + complexity: 'Complex', + complexityVariant: 'destructive' as const, + inputTokens: 360013, + outputTokens: 17287, + duration: '20 minutes', + originalModel: 'claude-sonnet-4', + }, + { + name: 'Sales Funnel Optimization', + complexity: 'Complex', + complexityVariant: 'destructive' as const, + inputTokens: 559918, + outputTokens: 33392, + duration: '14 minutes', + originalModel: 'claude-sonnet-4', + }, +]; export default function PricingPage() { const { @@ -30,6 +96,10 @@ export default function PricingPage() { refetch, } = useAvailableModels(); + const [selectedModelId, setSelectedModelId] = useState( + 'anthropic/claude-sonnet-4-20250514', + ); + // Filter to only show models that have pricing information available const models = modelsResponse?.models?.filter((model: Model) => { @@ -41,6 +111,30 @@ export default function PricingPage() { ); }) || []; + // Find the selected model + const selectedModel = models.find((model) => model.id === selectedModelId); + + // Function to calculate cost based on tokens and model pricing + const calculateCost = ( + inputTokens: number, + outputTokens: number, + model: Model, + ) => { + if ( + !model.input_cost_per_million_tokens || + !model.output_cost_per_million_tokens + ) { + return 0; + } + + const inputCost = + (inputTokens / 1000000) * model.input_cost_per_million_tokens; + const outputCost = + (outputTokens / 1000000) * model.output_cost_per_million_tokens; + + return inputCost + outputCost; + }; + if (loading) { return (
@@ -139,106 +233,90 @@ export default function PricingPage() { -
- {/* Example 4 */} -
-
-

- Social Automation System -

- Complex -
-
-
- Model: - claude-sonnet-4 -
-
- Duration: - 35 minutes -
-
- Cost: - $17.45 -
-
+
+ {/* Model Selection */} +
+ +
- {/* Example 6 */} -
-
-

- Content Marketing Strategy -

- Standard Complexity -
-
-
- Model: - claude-sonnet-4 -
-
- Duration: - 11 minutes -
-
- Cost: - $1.93 -
-
-
+ {/* Example Tasks Grid */} +
+ {exampleTasks.map((task, index) => { + const calculatedCost = selectedModel + ? calculateCost( + task.inputTokens, + task.outputTokens, + selectedModel, + ) + : null; - {/* Example 5 */} -
-
-

- Go-to-Market Strategy -

- Standard Complexity -
-
-
- Model: - deepseek-chat -
-
- Duration: - 3 minutes -
-
- Cost: - $0.13 -
-
+ return ( +
+
+

+ {task.name} +

+
+
+
+ Model: + + {selectedModel?.display_name || task.originalModel} + +
+
+ + Input Tokens: + + {task.inputTokens.toLocaleString()} +
+
+ + Output Tokens: + + {task.outputTokens.toLocaleString()} +
+ {/*
+ Duration: + {task.duration} +
*/} +
+ Cost: + {calculatedCost !== null ? ( + + ${calculatedCost.toFixed(2)} + + ) : ( + + Select model above + + )} +
+
+
+ ); + })}
- - {/* Example 7 */} - {/*
-
-

- 6-Month Content Marketing Strategy -

- Standard Complexity -
-
-
- Task type: - Marketing • SEO • Content -
-
- Model: - deepseek-chat -
-
- Duration: - 4 minutes -
-
- Cost: - $0.20 -
-
-
*/}
@@ -267,7 +345,11 @@ export default function PricingPage() { {models.map((model, index) => (
{/* Model Name */}