版本: v2.0 | 日期: 2026-03-26 | 分類: 產品策略
| 說明 | |
|---|---|
| Arova Nexus | Arova 公司的中長期產品計劃,PRD v1.3 定義了完整的模組架構(Core + 7 個可選模組、233+ User Stories) |
| 客戶泰國廠 MVP/PoC | 約 1 個月內部署到客戶現場的最小可用版本。這就是 Nexus 的第一個版本,後續會持續發展成完整產品 |
客戶 MVP ──→ Nexus v0.1 ──→ v0.2 ──→ ... ──→ v1.0(完整產品)
(1 個月) (部署) (迭代) (PRD 全實現)
核心原則:我們為客戶做的每一件事,都是在蓋 Nexus 產品本身。
根據客戶的即時需求和 1 個月時間限制:
| PRD 模組 | MVP 納入? | 範圍 | 理由 |
|---|---|---|---|
| Nexus Core | ✅ | AI Copilot Chat + 基礎 Dashboard | 必備 |
| Incident | ✅ | Webhook 接收 + AI 摘要 + 佇列 + 狀態管理 | 客戶核心需求 |
| Integration | ✅ | LibreNMS + Graylog Connector | 資料來源 |
| Analytics Pro | ✅ 部分 | 排程報表(每日/週/月)+ PDF 產出 | 客戶核心需求 |
| Service Desk | ❌ Phase 2 | — | 客戶暫不需要工單系統 |
| Automation | ❌ Phase 2 | — | 排程功能先用 BullMQ 簡化實作 |
| Knowledge | ❌ Phase 2 | — | 後續加 RAG |
| CMDB | ❌ Phase 2 | — | 規格已就緒(IG-012),Phase 2 加入 |
| PRD Story | MVP 實作方式 | 完整度 |
|---|---|---|
| AI Copilot AIC-001 — Chat 介面 | Next.js + useChat() | 80%(缺嵌入式面板,先做獨立頁面) |
| AI Copilot AIC-002 — 自然語言查系統狀態 | Mastra Agent + LibreNMS/Graylog Tools | 90% |
| Dashboard DB-006 — 設備健康狀態 | Agent 查詢 + Chat 回覆 / 簡易 Dashboard 頁面 | 60%(先 Chat,後 UI) |
| Incident IN-001 — Webhook 自動建立 Incident | Graylog/LibreNMS Webhook → Incident | 100% |
| Incident IN-011 — AI 自動摘要 | Agent analyzeIncident() | 100% |
| Incident IN-004 — Incident 佇列 | 簡易列表頁面 | 70% |
| Incident IN-009 — 告警合併 | 5 分鐘窗口合併 | 100% |
| Incident IN-010 — 自動升級 | 依嚴重度通知(Email) | 80%(缺 UI 設定) |
| Integration IG-001 — Connector 管理 | Agent Tool + 環境變數 | 50%(缺 UI,用 YAML 設定) |
| Integration IG-007 — Payload Mapping | 寫死 LibreNMS/Graylog 格式 | 70%(缺自訂 UI) |
| Integration IG-011~018 — LibreNMS/Graylog API | Agent Tools 全部實作 | 100% |
| Analytics AN-009 — 排程報表 | BullMQ + Handlebars + PDF | 90%(缺 UI 管理) |
┌─────────────────────────────────────────────────────────┐
│ Nexus Web UI │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ AI Copilot │ Incident Queue │ Dashboard │ │
│ │ (Chat Page) │ (List Page) │ (Summary) │ │
│ │ │ │ │ │
│ │ Next.js + @ai-sdk/react │ │
│ └──────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌───────────────────────┴──────────────────────────┐ │
│ │ Nexus API Layer │ │
│ │ /api/chat /api/incidents /api/reports │ │
│ │ /api/devices /api/alerts /api/dashboard │ │
│ └───────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌───────────────────────┴──────────────────────────┐ │
│ │ AI Engine (Mastra) │ │
│ │ │ │
│ │ Supervisor Agent │ │
│ │ ├── LibreNMS Agent (= Integration IG-011~014) │ │
│ │ ├── Graylog Agent (= Integration IG-015~018) │ │
│ │ ├── Incident Agent (= Incident IN-011 AI 摘要) │ │
│ │ └── Report Agent (= Analytics AN-009 報表) │ │
│ └───────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌───────────────────────┴──────────────────────────┐ │
│ │ Data Layer │ │
│ │ PostgreSQL │ Redis │ ./reports/ │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Scheduler (BullMQ) │ │
│ │ 每日簡報 08:00 │ 週報 週一 │ 月報 3日 │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
│ │
GX10 Ollama LibreNMS / Graylog
(Qwen3.5) (10.20.92.x 內網)
| PRD 架構層 | MVP 實作 | 備註 |
|---|---|---|
| API Gateway | Next.js API Routes | Phase 2 加 JWT + Rate Limiting |
| AI Native Foundation(Ch6.8) | Mastra Supervisor + Agents | 直接映射 |
| AI Context Service | Redis 快取(對話歷史 + 指標快取) | Phase 2 完善 |
| Event Bus | BullMQ(排程 + 事件通知) | Phase 2 加 Kafka |
| Auth Service | 環境變數 / 基礎 session | Phase 2 加 JWT + RBAC |
| Notification Service | Nodemailer + Line Notify | Phase 2 加站內通知 |
| 各模組 Service | Agent 內的 Specialist Agents | Phase 2 逐步獨立為微服務 |
-- MVP 只需要 4 張表
-- 1. Incidents(IN-001~008 的核心)
CREATE TABLE incidents (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title TEXT NOT NULL,
description TEXT,
severity VARCHAR(10) NOT NULL, -- SEV1/SEV2/SEV3/SEV4
status VARCHAR(20) NOT NULL DEFAULT 'triggered', -- triggered/acknowledged/investigating/resolved/closed
source TEXT, -- 來源設備 hostname
source_type VARCHAR(20), -- graylog/librenms/manual
assignee TEXT,
ai_summary TEXT, -- IN-011 AI 摘要
raw_payload JSONB, -- 原始 Webhook payload
triggered_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
acknowledged_at TIMESTAMPTZ,
resolved_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 2. Incident Timeline(IN-006 狀態變更紀錄)
CREATE TABLE incident_timeline (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
incident_id UUID REFERENCES incidents(id),
action VARCHAR(50) NOT NULL, -- status_change/comment/escalation/ai_analysis
actor TEXT, -- 操作者或 'system'
content TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 3. Scheduled Reports(AN-009 排程報表設定)
CREATE TABLE scheduled_reports (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
config JSONB NOT NULL, -- 報表設定(模板、查詢、閾值)
cron_expression VARCHAR(50),
notify_email TEXT[],
last_run_at TIMESTAMPTZ,
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 4. Report Results(報表產出紀錄)
CREATE TABLE report_results (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
report_id UUID REFERENCES scheduled_reports(id),
title TEXT NOT NULL,
html_path TEXT,
pdf_path TEXT,
summary TEXT, -- AI 產出的摘要
created_at TIMESTAMPTZ DEFAULT NOW()
);
目標:Agent 能透過 CLI 查設備、查 log、產報告
npx tsx src/cli.ts "產出每日資安簡報" → PDFPOST /api/v1/incidents/webhook/generic)目標:使用者可以透過瀏覽器對話、看到 Incident 列表
@ai-sdk/react useChat + @mastra/ai-sdk)目標:每日 08:00 自動產報告寄 Email;GX10 地端模型上線
OFFLINE_MODE=true)目標:部署到客戶 EWAI OMNI,試運行調校
即使 MVP 很小,Incident 和報表設定也要存 PostgreSQL。原因:
MVP 的 Next.js API Routes(/api/v1/incidents/...)就是 PRD 定義的 REST API(Ch6.57)。從第一天就用正確的路徑:
/api/v1/incidents/webhook/generic ← IN-001
/api/v1/incidents ← IN-004 列表
/api/v1/incidents/:id ← IN-007 詳情
/api/v1/chat ← AIC-001
/api/v1/reports ← AN-009
/api/v1/dashboard/summary ← DB-003
Agent 的 Tool 定義(Zod schema + 實作)在 Phase 2 直接包裝成 Nexus Connector,不用重寫:
Phase 1: Agent Tool (list_devices)
↓ 加 UI 設定頁面
Phase 2: Nexus Connector (LibreNMS Connector → list_devices)
templates/ 目錄的 5 份模板在 Phase 2 直接變成 Analytics Pro 的報表模板庫。
不是「先做 Chat UI 再做 AI Copilot」,而是「Chat UI 就是 AI Copilot Phase 1」。同一個 useChat() hook,同一個 /api/chat 端點,Phase 2 只是從獨立頁面變成嵌入式側面板。
| 不做 | 原因 | 何時做 |
|---|---|---|
| Service Desk 工單系統 | 客戶不需要(他們用 Incident,不用 Request) | v0.4+ |
| 完整 RBAC | MVP 單一角色(IT 管理員) | v0.3 |
| SSO / OIDC | 客戶內網不需要 | v0.4 |
| Workflow 視覺化編輯器 | 排程用 BullMQ 夠了 | v0.4 |
| Knowledge RAG | 暫不需要知識庫搜尋 | v0.4 |
| CMDB 拓撲圖 | 設備同步 Phase 2 加入 | v0.3 |
| 多語系切換 | 固定繁體中文 | v0.3 |
| 深色模式 | 固定淺色 | v0.3 |
| 行動版 RWD | 先做桌面版 | v0.3 |
| 問題 | 回答 |
|---|---|
| 客戶 MVP 是什麼? | Nexus v0.1 — 產品的第一個版本 |
| 它和完整 Nexus 的關係? | 同一個 codebase,持續迭代,不是另一個系統 |
| 現在設計的 Agent 架構會浪費嗎? | 不會,它就是 PRD Ch6.8 AI Native Foundation |
| 現在做的 Chat UI 會被丟掉嗎? | 不會,它就是 AI Copilot v1 |
| 1 個月能做到什麼? | Chat 對話 + Incident 管理 + 排程報表 + GX10 地端模型 |
| 之後怎麼演進? | v0.2 CMDB → v0.3 Integration UI → v0.4 Automation → v1.0 完整產品 |