diff --git a/frontend/src/app/(investor)/compare/page.tsx b/frontend/src/app/(investor)/compare/page.tsx new file mode 100644 index 0000000..c8e2c6f --- /dev/null +++ b/frontend/src/app/(investor)/compare/page.tsx @@ -0,0 +1,48 @@ +/** 多企业对比工作区 — 2-5 家企业并排对比。 */ + +import { GitCompareArrows } from "lucide-react"; + +/** 多企业对比页面。 */ +export default function ComparePage() { + return ( +
+
+ +

多企业对比

+
+ +
+

+ 选择 2-5 家企业进行并排对比,支持指标选择、差异高亮和趋势对比。 +

+
+ + {/* 对比卡片占位 */} +
+ {["智链科技", "云栈数据", "深瞳智能"].map((name) => ( +
+

{name}

+
+
+ 健康度 + 78.5 +
+
+ 月营收 + 800万 +
+
+ Runway + 12月 +
+
+ 高风险 + 0 +
+
+
+ ))} +
+
+ ); +} diff --git a/frontend/src/app/(investor)/layout.tsx b/frontend/src/app/(investor)/layout.tsx index a4cd39a..af4d866 100644 --- a/frontend/src/app/(investor)/layout.tsx +++ b/frontend/src/app/(investor)/layout.tsx @@ -1,90 +1,76 @@ /** 投资人端布局 — B 端专业风格:左 Sidebar + 灰色内容区 + AI Copilot。 */ -import { - LayoutDashboard, Building2, FileText, AlertTriangle, Settings, - Receipt, ScrollText, Users, Lightbulb, Target, GitBranch, - TrendingUp, Network, ShieldCheck, Bot, BookOpen, BarChart3, -} from "lucide-react"; +"use client"; + import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { useMemo } from "react"; import { CopilotWidget } from "@/components/shared/CopilotWidget"; import { RiskToastNotifier } from "@/components/shared/RiskToastNotifier"; import { AuthGuard } from "@/components/shared/AuthGuard"; +import { useAuth } from "@/lib/auth-context"; +import { getNavDomains, NAV_FOOTER } from "@/lib/navConfig"; -const navSections = [ - { - title: "核心功能", - items: [ - { href: "/dashboard", label: "驾驶舱", icon: LayoutDashboard }, - { href: "/companies", label: "企业档案", icon: Building2 }, - { href: "/reports", label: "月报管理", icon: FileText }, - { href: "/risks", label: "风险工作台", icon: AlertTriangle }, - ], - }, - { - title: "投后管理", - items: [ - { href: "/financial", label: "财务校验", icon: Receipt }, - { href: "/agreements", label: "协议监控", icon: ScrollText }, - { href: "/board", label: "董事会", icon: Users }, - { href: "/weak-signals", label: "弱信号", icon: Lightbulb }, - { href: "/sentinels", label: "决策前哨", icon: Target }, - { href: "/events", label: "重大事项", icon: AlertTriangle }, - ], - }, - { - title: "增值服务", - items: [ - { href: "/synergies", label: "协同中心", icon: Network }, - { href: "/innovation", label: "组合创新", icon: Lightbulb }, - { href: "/talents", label: "人才引力场", icon: Users }, - { href: "/okrs", label: "OKR", icon: Target }, - { href: "/milestones", label: "里程碑", icon: GitBranch }, - { href: "/tasks", label: "任务看板", icon: BarChart3 }, - ], - }, - { - title: "高级分析", - items: [ - { href: "/alpha", label: "Alpha 归因", icon: TrendingUp }, - { href: "/exit-signals", label: "退出信号", icon: TrendingUp }, - { href: "/portfolio", label: "组合管理", icon: BarChart3 }, - { href: "/digital-twins", label: "数字孪生", icon: Bot }, - { href: "/knowledge-graph", label: "知识图谱", icon: Network }, - { href: "/aars", label: "AAR 复盘", icon: BookOpen }, - { href: "/pre-mortems", label: "Pre-mortem", icon: ShieldCheck }, - { href: "/agents", label: "Agent 监控", icon: Bot }, - ], - }, - { - title: "系统", - items: [ - { href: "/settings", label: "设置", icon: Settings }, - ], - }, -]; - +/** + * 投资人端布局组件。 + * + * 左侧 Sidebar 按 6 业务域分组,域顺序根据用户角色动态排序。 + */ export default function InvestorLayout({ children }: { children: React.ReactNode }) { + const { user } = useAuth(); + const pathname = usePathname(); + + const domains = useMemo(() => getNavDomains(user?.role ?? "investor"), [user?.role]); + return (
{/* 左侧 Sidebar */} diff --git a/frontend/src/app/(investor)/threads/[id]/page.tsx b/frontend/src/app/(investor)/threads/[id]/page.tsx new file mode 100644 index 0000000..5942e13 --- /dev/null +++ b/frontend/src/app/(investor)/threads/[id]/page.tsx @@ -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 ( +
+ + + 返回线程列表 + + +
+ +

决策线程详情

+
+ +
+
+

线程 #{params.id}

+ 分析中 +
+

+ 状态机时间线、关联事件和 AAR 链接将在 P1 #17 组件完成后集成。 +

+
+ + {/* 时间线占位 */} +
+

状态机时间线

+
+ {[ + { 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) => ( +
+
+ + {step.label} + + {step.date} +
+ ))} +
+
+
+ ); +} diff --git a/frontend/src/app/(investor)/threads/page.tsx b/frontend/src/app/(investor)/threads/page.tsx new file mode 100644 index 0000000..535d8d6 --- /dev/null +++ b/frontend/src/app/(investor)/threads/page.tsx @@ -0,0 +1,42 @@ +/** 决策线程列表页 — 按状态/企业筛选 + 线程卡片。 */ + +import { GitBranch } from "lucide-react"; + +/** 决策线程列表页面。 */ +export default function ThreadsPage() { + return ( +
+
+ +

决策线程

+
+ +
+

+ 决策线程将风险、建议、任务串联为可追踪的决策链路,支持状态机驱动的时间线视图。 +

+
+ + {/* 线程卡片占位 */} +
+ {[ + { title: "云栈数据 A+轮融资时机选择", status: "分析中", company: "云栈数据" }, + { title: "深瞳智能 CTO retention 策略", status: "已识别", company: "深瞳智能" }, + { title: "量子芯微 融资策略:天使+ vs Pre-A", status: "已行动", company: "量子芯微" }, + ].map((thread) => ( +
+
+
+

{thread.title}

+

{thread.company}

+
+ + {thread.status} + +
+
+ ))} +
+
+ ); +} diff --git a/frontend/src/app/(investor)/today/page.tsx b/frontend/src/app/(investor)/today/page.tsx new file mode 100644 index 0000000..fd1a52a --- /dev/null +++ b/frontend/src/app/(investor)/today/page.tsx @@ -0,0 +1,110 @@ +/** 今日行动中心 — 投后负责人/投资经理默认首页。 */ + +import { CalendarClock, AlertTriangle, FileText, ListTodo, TrendingUp } from "lucide-react"; + +/** 今日行动中心页面。 */ +export default function TodayPage() { + return ( +
+
+ +

今日行动中心

+
+ + {/* AI 简报 */} +
+

AI 简报

+

+ 今日有 3 条待处理风险、2 份月报待审阅、5 个任务待完成。量子芯微现金 Runway 不足 7 月,需紧急关注。 +

+
+ + {/* 四象限概览 */} +
+
+
+ +

风险队列

+
+
+
+ 量子芯微 — 现金Runway不足7月 + 紧急 +
+
+ 云栈数据 — 营收增长停滞 + +
+
+ 智链科技 — 客户流失率上升 + +
+
+
+ +
+
+ +

月报状态

+
+
+
+ 智链科技 — 已提交 + AI 解析完成 +
+
+ 深瞳智能 — 已审阅 + 完成 +
+
+ 量子芯微 — 草稿中 + 待提交 +
+
+
+ +
+
+ +

任务概览

+
+
+
+ 联系流失客户进行回访 + 进行中 +
+
+ 准备天使+轮 BP + 待办 +
+
+ 审阅智链科技月报 + 已完成 +
+
+
+ +
+
+ +

健康度变化

+
+
+
+ 智链科技 78.5 ↑ + +2.3 +
+
+ 量子芯微 48.0 ↓ + -5.0 +
+
+ 云栈数据 62.0 → + 持平 +
+
+
+
+
+ ); +} diff --git a/frontend/src/app/(investor)/workspace/page.tsx b/frontend/src/app/(investor)/workspace/page.tsx new file mode 100644 index 0000000..528f6cc --- /dev/null +++ b/frontend/src/app/(investor)/workspace/page.tsx @@ -0,0 +1,22 @@ +/** 通用工作区 — URL 参数驱动,支持多 Tab 独立上下文。 */ + +import { Layers } from "lucide-react"; + +/** 通用工作区页面。 */ +export default function WorkspacePage() { + return ( +
+
+ +

工作区

+
+ +
+

+ 通用工作区支持多 Tab 独立上下文,最多 8 个 Tab,由 URL 参数驱动。 + 将在 P1 #18 Multi-Workspace Tab 管理器完成后集成。 +

+
+
+ ); +} diff --git a/frontend/src/app/admin/layout.tsx b/frontend/src/app/admin/layout.tsx index 57d8f0d..3969cb7 100644 --- a/frontend/src/app/admin/layout.tsx +++ b/frontend/src/app/admin/layout.tsx @@ -1,15 +1,109 @@ -/** Admin 端布局 — 警示风格:slate-950 Header + amber 主色。 */ +/** Admin 端布局 — 警示风格:slate-950 Header + amber 主色 + 6 管理域 Sidebar。 */ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { + Building2, Users, ScrollText, Database, ShieldCheck, Settings, +} from "lucide-react"; + +/** Admin 6 管理域导航。 */ +const adminNav = [ + { + title: "租户管理", + items: [ + { href: "/admin", label: "系统概览", icon: Building2 }, + { href: "/admin/tenants", label: "租户列表", icon: Building2 }, + ], + }, + { + title: "用户管理", + items: [ + { href: "/admin/users", label: "用户列表", icon: Users }, + ], + }, + { + title: "审计日志", + items: [ + { href: "/admin/audit", label: "操作日志", icon: ScrollText }, + ], + }, + { + title: "数据源", + items: [ + { href: "/admin/data-sources", label: "数据源管理", icon: Database }, + ], + }, + { + title: "安全配置", + items: [ + { href: "/admin/security", label: "商业秘密保护", icon: ShieldCheck }, + ], + }, + { + title: "系统设置", + items: [ + { href: "/admin/settings", label: "系统参数", icon: Settings }, + ], + }, +]; + +/** + * Admin 端布局组件。 + * + * 左侧 Sidebar 按 6 管理域分组,Header 使用 slate-950 + amber 警示色。 + */ export default function AdminLayout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + return ( -
-
- AIPortPilot - - ADMIN - -
-
{children}
+
+ {/* 左侧 Sidebar */} + + + {/* 内容区 */} +
+ {/* 移动端顶部 Header */} +
+ AIPortPilot + + ADMIN + +
+
{children}
+
); } diff --git a/frontend/src/app/founder/layout.tsx b/frontend/src/app/founder/layout.tsx index a9e00ae..99c45e9 100644 --- a/frontend/src/app/founder/layout.tsx +++ b/frontend/src/app/founder/layout.tsx @@ -1,14 +1,23 @@ -/** 创始人端布局 — C 端温暖风格:顶部 Header + indigo 主色。 */ +/** 创始人端布局 — C 端温暖风格:顶部 Header + indigo 主色 + 6 域底部导航。 */ -import { Home, FileText, Sparkle } from "lucide-react"; +import { CalendarClock, Gauge, FileText, Sparkle, Bell, UserCircle } from "lucide-react"; import Link from "next/link"; +/** 创始人端 6 域导航。 */ const navItems = [ - { href: "/founder", label: "概览", icon: Home }, + { href: "/founder", label: "今日", icon: CalendarClock }, + { href: "/founder/operations", label: "经营", icon: Gauge }, { href: "/founder/reports", label: "月报", icon: FileText }, - { href: "/founder/copilot", label: "AI 副驾驶", icon: Sparkle }, + { href: "/founder/copilot", label: "Copilot", icon: Sparkle }, + { href: "/founder/notifications", label: "通知", icon: Bell }, + { href: "/founder/profile", label: "我的", icon: UserCircle }, ]; +/** + * 创始人端布局组件。 + * + * 顶部 sticky Header + 底部 6 域导航栏,移动优先设计。 + */ export default function FounderLayout({ children }: { children: React.ReactNode }) { return (
@@ -21,8 +30,8 @@ export default function FounderLayout({ children }: { children: React.ReactNode {/* 内容区 */}
{children}
- {/* 移动端底部导航 */} -