feat(market-intel): implement role-based campaign engine and gritty reporting

- Implementierung der rollenbasierten Campaign-Engine mit operativem Fokus (Grit).
- Integration von Social Proof (Referenzkunden) in die E-Mail-Generierung.
- Erweiterung des Deep Tech Audits um gezielte Wettbewerber-Recherche (Technographic Search).
- Fix des Lösch-Bugs in der Target-Liste und Optimierung des Frontend-States.
- Erweiterung des Markdown-Exports um transparente Proof-Links und Evidenz.
- Aktualisierung der Dokumentation in readme.md und market_intel_backend_plan.md.
This commit is contained in:
2025-12-22 15:54:06 +00:00
parent e4aad40344
commit a077c48573
9 changed files with 545 additions and 76 deletions

View File

@@ -9,17 +9,26 @@ interface StepOutreachProps {
language: Language;
referenceUrl: string;
onBack: () => void;
knowledgeBase?: string; // New prop for pre-loaded context
}
export const StepOutreach: React.FC<StepOutreachProps> = ({ company, language, referenceUrl, onBack }) => {
const [fileContent, setFileContent] = useState<string>('');
const [fileName, setFileName] = useState<string>('');
export const StepOutreach: React.FC<StepOutreachProps> = ({ company, language, referenceUrl, onBack, knowledgeBase }) => {
const [fileContent, setFileContent] = useState<string>(knowledgeBase || '');
const [fileName, setFileName] = useState<string>(knowledgeBase ? 'Knowledge Base from Strategy Step' : '');
const [isProcessing, setIsProcessing] = useState(false);
const [isTranslating, setIsTranslating] = useState(false);
const [emails, setEmails] = useState<EmailDraft[]>([]);
const [activeTab, setActiveTab] = useState(0);
const [copied, setCopied] = useState(false);
// If knowledgeBase prop changes, update state (useful if it loads late)
React.useEffect(() => {
if (knowledgeBase && !fileContent) {
setFileContent(knowledgeBase);
setFileName('Knowledge Base from Strategy Step');
}
}, [knowledgeBase]);
const handleFileUpload = (e: React.ChangeEvent<HTMLInputElement>) => {
const file = e.target.files?.[0];
if (file) {