- Replaced the basic session list with a dedicated, card-based Session Browser page. - Each session card now displays product name, category, description, and a thumbnail placeholder for better usability. - Updated the backend DB manager to extract this rich information from the existing JSON data store. - Refactored the frontend (App.tsx, types.ts) to support the new UI and data structure. - Added new component SessionBrowser.tsx and its corresponding CSS. - Updated documentation to reflect the v2.6 changes.
172 lines
3.7 KiB
TypeScript
172 lines
3.7 KiB
TypeScript
export enum Phase {
|
|
Input = 0,
|
|
ProductAnalysis = 1,
|
|
ICPDiscovery = 2,
|
|
WhaleHunting = 3,
|
|
Strategy = 4,
|
|
AssetGeneration = 5,
|
|
SalesEnablement = 6,
|
|
LandingPage = 7,
|
|
BusinessCase = 8,
|
|
TechTranslator = 9,
|
|
}
|
|
|
|
export type Language = 'en' | 'de';
|
|
export type Theme = 'light' | 'dark';
|
|
|
|
export interface Message {
|
|
role: 'user' | 'model';
|
|
content: string;
|
|
}
|
|
|
|
export interface Phase1Data {
|
|
features: string[];
|
|
constraints: string[];
|
|
conflictCheck: {
|
|
hasConflict: boolean;
|
|
details: string;
|
|
relatedProduct?: string;
|
|
};
|
|
rawAnalysis: string;
|
|
specs?: {
|
|
metadata: {
|
|
product_id: string;
|
|
brand: string;
|
|
model_name: string;
|
|
category: string;
|
|
manufacturer_url: string;
|
|
};
|
|
core_specs: {
|
|
battery_runtime_min: number | null;
|
|
charge_time_min: number | null;
|
|
weight_kg: number | null;
|
|
dimensions_cm: { l: number | null; w: number | null; h: number | null };
|
|
max_slope_deg: number | null;
|
|
ip_rating: string | null;
|
|
climb_height_cm: number | null;
|
|
navigation_type: string | null;
|
|
connectivity: string[];
|
|
};
|
|
layers: {
|
|
cleaning?: {
|
|
fresh_water_l: number | null;
|
|
dirty_water_l: number | null;
|
|
area_performance_sqm_h: number | null;
|
|
mop_pressure_kg: number | null;
|
|
};
|
|
service?: {
|
|
max_payload_kg: number | null;
|
|
number_of_trays: number | null;
|
|
display_size_inch: number | null;
|
|
ads_capable: boolean | null;
|
|
};
|
|
security?: {
|
|
camera_types: string[];
|
|
night_vision: boolean | null;
|
|
gas_detection: string[];
|
|
at_interface: boolean | null;
|
|
};
|
|
};
|
|
extended_features: { feature: string; value: string; unit: string }[];
|
|
};
|
|
}
|
|
|
|
export interface Phase2Data {
|
|
icps: {
|
|
name: string;
|
|
rationale: string;
|
|
}[];
|
|
dataProxies: {
|
|
target: string;
|
|
method: string;
|
|
}[];
|
|
}
|
|
|
|
export interface Phase3Data {
|
|
whales: {
|
|
industry: string;
|
|
accounts: string[];
|
|
}[];
|
|
roles: string[];
|
|
}
|
|
|
|
export interface Phase4Data {
|
|
strategyMatrix: {
|
|
segment: string;
|
|
painPoint: string;
|
|
angle: string;
|
|
differentiation: string;
|
|
}[];
|
|
}
|
|
|
|
export interface Phase6Data {
|
|
battlecards: {
|
|
persona: string;
|
|
objection: string;
|
|
responseScript: string;
|
|
}[];
|
|
visualPrompts: {
|
|
title: string;
|
|
context: string;
|
|
prompt: string;
|
|
}[];
|
|
}
|
|
|
|
export interface Phase7Data {
|
|
landingPages: {
|
|
industry: string;
|
|
headline: string;
|
|
subline: string;
|
|
bullets: string[];
|
|
cta: string;
|
|
}[];
|
|
}
|
|
|
|
export interface Phase8Data {
|
|
businessCases: {
|
|
industry: string;
|
|
costDriver: string;
|
|
efficiencyGain: string;
|
|
riskArgument: string;
|
|
}[];
|
|
}
|
|
|
|
export interface Phase9Data {
|
|
techTranslations: {
|
|
feature: string;
|
|
story: string;
|
|
headline: string;
|
|
}[];
|
|
}
|
|
|
|
export interface AppState {
|
|
currentPhase: Phase;
|
|
isLoading: boolean;
|
|
history: Message[];
|
|
productInput: string;
|
|
productImages: string[]; // Array of Base64 strings
|
|
phase1Result?: Phase1Data;
|
|
phase2Result?: Phase2Data;
|
|
phase3Result?: Phase3Data;
|
|
phase4Result?: Phase4Data;
|
|
phase5Result?: { report: string }; // Markdown content wrapped in object
|
|
phase6Result?: Phase6Data;
|
|
phase7Result?: Phase7Data;
|
|
phase8Result?: Phase8Data;
|
|
phase9Result?: Phase9Data;
|
|
translatedReport?: string; // New field for the English translation
|
|
language: Language;
|
|
theme: Theme;
|
|
projectId?: string; // Current Project ID
|
|
}
|
|
|
|
export interface ProjectHistoryItem {
|
|
id: string;
|
|
name: string;
|
|
created_at: string;
|
|
updated_at: string;
|
|
productName: string;
|
|
productCategory: string;
|
|
productDescription: string;
|
|
productThumbnail?: string; // Optional for now
|
|
} |