import { useState, useCallback } from 'react' import { PageLayout } from '@/components/common/PageLayout' import { ChatPanel } from '@/components/common/ChatPanel' import { Card, CardContent, CardHeader } from '@/components/ui/card' import { TrendingUp, ChevronDown, RefreshCw, Loader2 } from 'lucide-react' import { cn } from '@/lib/utils' import { api } from '@/lib/api' /** 话题类型 */ interface Topic { title: string desc: string samples: string[] } /** 经营决策助手:初始兜底话题,换一批时 AI 动态生成 */ const FALLBACK_TOPICS: Topic[] = [ { title: '扩张收缩', desc: '开店、关店、业务线', samples: ['现在适合扩张开第二家店吗?', '要不要关闭亏损的业务线?', '新业务线该自营还是加盟?', '应该先扩张还是先巩固?'] }, { title: '项目承接', desc: '大单、长期合同', samples: ['是否应该接付款周期90天的大单?', '长期框架合同要不要签?', '预付款比例低的项目能接吗?', '客户要求独家合作利弊?'] }, { title: '定价策略', desc: '涨价、降价、促销', samples: ['该不该降价15%抢竞品客户?', '产品涨价怎么跟客户沟通?', '促销活动会不会损害品牌?', '成本上涨如何调整定价?'] }, { title: '招人裁员', desc: '招聘、解雇、绩效', samples: ['现在该招人还是裁人?', '裁掉绩效差的员工怎么操作?', '关键岗位招人还是培养?', '外包和正式员工怎么选?'] }, { title: '融资合伙', desc: '融资、合伙、股权', samples: ['现在适合融资吗?', '合伙人要退股怎么谈条件?', '出让多少股权合适?', '银行贷款还是股权融资?'] }, { title: '转型外包', desc: '转型、外包、调整', samples: ['业务转型方向怎么选?', '哪些业务可以外包?', '转型期间现金流怎么管理?', '外包质量怎么控?'] }, ] export function Decisions() { const [topics, setTopics] = useState(FALLBACK_TOPICS) const [selectedTopic, setSelectedTopic] = useState(0) const [topicsCollapsed, setTopicsCollapsed] = useState(false) const [loadingTopics, setLoadingTopics] = useState(false) /** 换一批:调用 AI 动态生成话题(避免重复) */ const refreshTopics = useCallback(async () => { setLoadingTopics(true) try { const res = await api.getTopics('decision', topics.map((t) => t.title)) if (res.topics?.length > 0) { setTopics(res.topics) setSelectedTopic(0) } } catch { // AI 不可用时保持当前话题 } finally { setLoadingTopics(false) } }, [topics]) const currentTopic = topics[selectedTopic] return (
{!topicsCollapsed && ( {loadingTopics && (
AI 正在生成新话题…
)}
{topics.map((t, i) => ( ))}
)}
{currentTopic && ( )}
) }