feat(frontend): P0 导航架构重构 — 6 业务域 + 角色化排序 + 新路由

- 投资人 Sidebar: 5 扁平分组 → 6 业务域(今日/组合/工作/增长/洞察/报告)
- 角色化导航: GP→组合优先, 投后负责人→今日优先, 投资经理→今日+组合
- 新增路由: /today /compare /threads /threads/[id] /workspace
- Admin: 单页标签 → 6 管理域 Sidebar(租户/用户/审计/数据源/安全/设置)
- 创始人: 3 底部导航 → 6 域(今日/经营/月报/Copilot/通知/我的)
- 新增 navConfig.ts 统一管理导航配置
This commit is contained in:
selfrelease
2026-07-19 18:51:38 +08:00
parent 947642919b
commit 956270d14d
9 changed files with 575 additions and 82 deletions
@@ -0,0 +1,52 @@
/** 决策线程详情页 — 状态机时间线 + 关联事件 + AAR 链接。 */
import { GitBranch, ArrowLeft } from "lucide-react";
import Link from "next/link";
/** 决策线程详情页面。 */
export default function ThreadDetailPage({ params }: { params: { id: string } }) {
return (
<div className="space-y-6">
<Link href="/threads" className="flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground">
<ArrowLeft size={16} />
线
</Link>
<div className="flex items-center gap-2">
<GitBranch className="text-[var(--investor-primary)]" size={24} />
<h1 className="text-2xl font-bold">线</h1>
</div>
<div className="rounded-lg border bg-white p-4 shadow-sm">
<div className="mb-4 flex items-center justify-between">
<h2 className="text-lg font-medium">线 #{params.id}</h2>
<span className="rounded-full bg-indigo-50 px-3 py-1 text-xs text-indigo-600"></span>
</div>
<p className="text-sm text-muted-foreground">
线 AAR P1 #17
</p>
</div>
{/* 时间线占位 */}
<div className="rounded-lg border bg-white p-4 shadow-sm">
<h3 className="mb-4 font-medium">线</h3>
<div className="space-y-4">
{[
{ label: "已识别", date: "2026-07-09", active: true },
{ label: "分析中", date: "2026-07-12", active: true },
{ label: "已行动", date: "—", active: false },
{ label: "已关闭", date: "—", active: false },
].map((step, i) => (
<div key={i} className="flex items-center gap-3">
<div className={`h-3 w-3 rounded-full ${step.active ? "bg-indigo-500" : "bg-gray-300"}`} />
<span className={`text-sm ${step.active ? "font-medium" : "text-muted-foreground"}`}>
{step.label}
</span>
<span className="text-xs text-muted-foreground">{step.date}</span>
</div>
))}
</div>
</div>
</div>
);
}