feat(frontend): 全部页面接入后端API并同步全局企业选择

- ai-plus: Class组件→函数组件,接入 listHealthScores + listAgentExecutions API
- ooda: 硬编码→接入 risks/weak-signals/sentinels/tasks API 构建OODA各阶段
- threads: 硬编码→接入 risks/tasks/events API 组合决策线程
- today: 硬编码→接入 risks/weak-signals/synergies/reports API 构建行动项
- compare: 硬编码企业名→使用全局企业列表 + listHealthScores + listRisks API
- innovation/knowledge-graph/portfolio: 加 useCompanyScope 标题显示企业名
- 所有页面标题在单企业选择时显示企业名
- 编译验证通过
This commit is contained in:
selfrelease
2026-07-20 08:40:54 +08:00
parent 006fd7de7e
commit af91d843d8
8 changed files with 654 additions and 185 deletions
@@ -3,6 +3,7 @@
import { useState } from "react";
import {Sparkles } from "lucide-react";
import { discoverInnovation } from "@/lib/api-v2";
import { useCompanyScope } from "@/lib/company-scope";
import { PageContainer, Card } from "@/components/shared/PageContainer";
import { EmptyState } from "@/components/shared/EmptyState";
import { toast } from "sonner";
@@ -15,6 +16,7 @@ interface InnovationResult {
}
export default function InnovationPage() {
const { companyName } = useCompanyScope();
const [capabilities, setCapabilities] = useState("");
const [results, setResults] = useState<InnovationResult[]>([]);
const [isLoading, setIsLoading] = useState(false);
@@ -36,7 +38,10 @@ export default function InnovationPage() {
};
return (
<PageContainer title="组合创新实验室" description="AI 分析企业能力组合 → 发现联合产品方案">
<PageContainer
title="组合创新实验室"
description={companyName ? `${companyName} — AI 分析企业能力组合 → 发现联合产品方案` : "AI 分析企业能力组合 → 发现联合产品方案"}
>
<Card>
<textarea
value={capabilities}