feat(assets): 优化移动端分析体验并记录 AI 提问日志
This commit is contained in:
@@ -34,7 +34,9 @@ import { useAuth } from "../../../auth/useAuth";
|
||||
import { ThinkingState } from "./ThinkingState";
|
||||
import { CompoundResultView } from "./CompoundResultView";
|
||||
import { BUSINESS_QUESTIONS, conversationTitle, findConversationResult, replaceAnalysisResult } from "./conversation-presentation";
|
||||
import { useMobileLayout } from "../useMobileLayout";
|
||||
import "./assistant.css";
|
||||
import "./mobile-assistant.css";
|
||||
|
||||
type Turn = {
|
||||
id: number;
|
||||
@@ -55,24 +57,28 @@ const PROMPTS = [
|
||||
{
|
||||
icon: BarChart3,
|
||||
title: "现在多少车在运营、多少车在库存?",
|
||||
mobileTitle: "运营与库存",
|
||||
text: BUSINESS_QUESTIONS[0],
|
||||
detail: "总资产 · 运营 · 库存 · 运营率",
|
||||
},
|
||||
{
|
||||
icon: Truck,
|
||||
title: "库存集中在哪些车型和区域?",
|
||||
mobileTitle: "库存分布",
|
||||
text: BUSINESS_QUESTIONS[1],
|
||||
detail: "库存分布 · 继续查看车辆",
|
||||
},
|
||||
{
|
||||
icon: History,
|
||||
title: "最近7天交车、还车分别多少?",
|
||||
mobileTitle: "近 7 天交还车",
|
||||
text: BUSINESS_QUESTIONS[2],
|
||||
detail: "按日趋势 · 业务明细",
|
||||
},
|
||||
{
|
||||
icon: ListIcon,
|
||||
title: "有哪些车辆需要跟进?",
|
||||
mobileTitle: "待跟进车辆",
|
||||
text: BUSINESS_QUESTIONS[3],
|
||||
detail: "异动详情 · 预计完成时间",
|
||||
},
|
||||
@@ -94,6 +100,8 @@ export default function AssetAssistant({
|
||||
const dataScopeLabel = !user ? "正在确认数据范围"
|
||||
: user.permissionLevel === "full" ? "全量数据"
|
||||
: user.permissionLevel === "department" ? "部门数据" : "本人数据";
|
||||
const mobile = useMobileLayout();
|
||||
const [contextExpanded, setContextExpanded] = useState(false);
|
||||
const page = useRef<HTMLElement>(null);
|
||||
useLayoutEffect(() => {
|
||||
const viewport = window.visualViewport;
|
||||
@@ -557,7 +565,7 @@ export default function AssetAssistant({
|
||||
<p.icon size={18} aria-hidden="true" />
|
||||
<ArrowUpRight size={14} aria-hidden="true" />
|
||||
</div>
|
||||
<strong>{p.title}</strong>
|
||||
<strong>{mobile ? p.mobileTitle : p.title}</strong>
|
||||
<span>{p.detail}</span>
|
||||
</button>
|
||||
))}
|
||||
@@ -745,7 +753,7 @@ export default function AssetAssistant({
|
||||
)}
|
||||
</div>
|
||||
<div className="aq-composer-area">
|
||||
{turns.length > 0 && (
|
||||
{turns.length > 0 && (!mobile || (viewedTurn !== undefined && viewedTurn !== turns.at(-1)?.id)) && (
|
||||
<button
|
||||
className="aq-latest-answer"
|
||||
onClick={() => revealTurn(turns[turns.length - 1].id)}
|
||||
@@ -754,8 +762,8 @@ export default function AssetAssistant({
|
||||
</button>
|
||||
)}
|
||||
{lastPlan && (
|
||||
<div className="aq-context">
|
||||
<span>正在分析</span>
|
||||
<details className="aq-context-disclosure" open={!mobile || contextExpanded} onToggle={event => { if (mobile) setContextExpanded(event.currentTarget.open); }}><summary><span>追问范围:{lastPlan.kind === 'flow' ? '交还车' : CATEGORY_LABELS[lastPlan.category]}{Object.keys(lastPlan.filters).length ? ` · ${Object.entries(lastPlan.filters).map(([dimension,values]) => `${GROUP_LABELS[dimension as Dimension]} ${values.length === 1 ? values[0] : `${values.length}项`}`).join(' · ')}` : ''}</span><ChevronDown size={15} /></summary><div className="aq-context">
|
||||
<span className="aq-context-heading">当前条件</span>
|
||||
<span>
|
||||
{lastPlan.kind === "flow"
|
||||
? "交退换车"
|
||||
@@ -847,7 +855,7 @@ export default function AssetAssistant({
|
||||
<Plus size={12} />
|
||||
换个话题
|
||||
</button>
|
||||
</div>
|
||||
</div></details>
|
||||
)}
|
||||
{independent && (
|
||||
<p className="aq-topic-notice">
|
||||
|
||||
Reference in New Issue
Block a user