Files
Brancheneinstufung2/gtm-architect/types.ts
Floke 7a3e397037 feat(gtm): v2.5 - Hard Fact Extraction & UI
- Backend: Implemented secondary extraction phase for structured specs (JSON schema).

- Backend: Added strict normalization rules (min, cm, kg).

- Frontend: Added 'Phase1Data' interface update for specs.

- Frontend: Implemented new UI component for 'Technical Specifications' in Phase 1.

- Frontend: Updated header and sidebar to display 'v2.5' build marker.

- Docs: Updated architectural documentation.
2026-01-06 19:36:42 +00:00

168 lines
3.5 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;
}