SaadSiddiquix1/CrisisSync
GitHub: SaadSiddiquix1/CrisisSync
面向酒店业打造的 AI 原生应急协调平台,利用 Gemini 多模态分诊和 Supabase 实时推送实现从客人报告到员工响应的秒级闭环管理。
Stars: 0 | Forks: 0
# CrisisSync
为酒店业打造的 AI 原生应急协调平台。
CrisisSync 帮助酒店、度假村及场馆团队在数秒内,从客人报告的事件迅速转入协调一致的员工响应状态。它结合了便于客人操作的报告流程、实时的员工/管理员仪表板,以及由 Gemini 驱动的分诊系统,使运营人员能够在压力下做出更快速、更清晰的决策。
## 目录
- [为什么这很重要](#why-this-matters)
- [核心功能](#key-features)
- [产品界面](#product-surfaces)
- [架构](#architecture)
- [仓库结构](#repository-structure)
- [技术栈](#tech-stack)
- [本地设置](#local-setup)
- [Supabase](#supabase)
- [演示 Runbook](#demo-runbook)
- [脚本](#scripts)
- [文档](#docs)
## 为什么这很重要
对于所有涉及的人员来说,酒店业的事件往往是一片混乱:
- 客人不知道该向哪里报告,或者哪些细节至关重要。
- 员工需要即时、结构化的响应指导。
- 管理者需要实时的运营全局视图,而不是碎片化的更新。
CrisisSync 将这些转化为一个统一的流程:
- 客人提交报告,可选择附带照片证据。
- Gemini 分析情况并生成严重程度、推理分析、操作指导和响应协议。
- 员工即时看到事件并可以主动接管处理。
- 管理员进行监控、重新分配任务,并查看由 AI 支持的运营上下文。
- 事件结案后生成结构化的事件后报告。
## 核心功能
- 具备面向客户网站助手的优质公开体验
- 适配移动端的访客危机报告流程
- Gemini 多模态分诊,结合文本和可选的照片证据进行分析
- AI 输出包含严重程度、推理分析、置信度、响应者关注点和预防建议
- 用于主动响应协调的实时员工仪表板
- 具备分析、人员可见性和事件详情的管理员指挥中心
- 演示安全回退数据,确保产品在现场黑客马拉松环境中依然呈现良好
- 即使在危机中某个 AI 出现故障,系统也绝不会宕机。
## 产品界面
- `/`
营销落地页
- `/report`
访客报告流程
- `/report/[id]/status`
访客状态追踪
- `/login`
员工/管理员登录及演示入口
- `/staff/dashboard`
响应人员工作区
- `/admin/dashboard`
指挥中心
- `/admin/analytics`
事件分析
## AI 功能
Gemini 支持:
- 事件严重程度分类
- 类别确认
- 客人安全指导
- 员工响应清单
- 基于上传照片的视觉场景分析
- 置信度和推理分析输出
- 响应者关注点指导
- 预防建议
- 事件后报告生成
- 面向客户的网站礼宾助手
## 架构
```
flowchart TD
A["Guest / Visitor"] --> B["Next.js App Router UI"]
B --> C["API Routes"]
C --> D["Gemini 2.0 Flash"]
C --> E["Supabase"]
E --> F["Crises"]
E --> G["Crisis Updates"]
E --> H["Checklist Items"]
E --> I["Incident Reports"]
E --> J["Profiles / Staff Availability"]
F --> K["Staff Dashboard"]
F --> L["Admin Command Center"]
G --> L
H --> K
I --> L
D --> C
E --> M["Realtime Channels"]
M --> K
M --> L
```
### 主要流程
客人 → 员工/管理员协调:
```
sequenceDiagram
autonumber
actor Guest
participant Web as Next.js UI
participant API as Next.js API Routes
participant AI as Gemini
participant DB as Supabase
participant RT as Realtime
actor Staff
actor Admin
Guest->>Web: Create incident report (+ optional photo)
Web->>API: POST /api/crisis (report payload)
API->>AI: Multimodal triage (text + image)
AI-->>API: Severity + instructions + checklist + reasoning
API->>DB: Persist crisis + triage result
DB-->>RT: Broadcast incident update
RT-->>Staff: Staff dashboard updates in realtime
RT-->>Admin: Admin dashboard updates in realtime
Staff->>Web: Claim incident + update checklist/status
Web->>API: PATCH/POST updates
API->>DB: Persist updates
DB-->>RT: Broadcast progress updates
RT-->>Guest: Status page reflects live progress
```
### 数据模型(概念性)
这是 UI 和实时更新围绕的运营核心:
```
erDiagram
CRISES ||--o{ CRISIS_UPDATES : has
CRISES ||--o{ CHECKLIST_ITEMS : has
CRISES ||--o{ INCIDENT_REPORTS : generates
PROFILES ||--o{ CRISES : "assigned_to"
CRISES {
uuid id
text venue_slug
text category
text severity
text status
jsonb ai_triage_result
timestamptz created_at
}
```
## 仓库结构
```
.
├─ docs/ # Demo + product docs (hackathon kit, runbook, SaaS direction)
├─ public/ # Static assets
├─ src/
│ ├─ app/ # Next.js App Router routes (UI + API)
│ │ ├─ api/ # Server routes (Gemini, Supabase orchestration)
│ │ ├─ admin/ # Admin command center + analytics
│ │ ├─ staff/ # Staff responder dashboard
│ │ ├─ report/ # Guest reporting + status tracking
│ │ ├─ status/ # Health page (Supabase/Gemini/Groq)
│ │ └─ v/ # Public venue entry (seeded demo slug lives here)
│ ├─ components/ # Shared UI building blocks
│ ├─ hooks/ # Reusable React hooks
│ ├─ lib/ # Supabase clients, AI helpers, demo data, utilities
│ ├─ types/ # Shared TypeScript types
│ └─ middleware.ts # Route protection + auth routing
├─ supabase/
│ ├─ migrations/ # Supabase migration history
│ └─ migration.sql # Reference schema + policies snapshot
├─ .env.local.example # Environment variable template (safe to commit)
├─ SETUP.md # Step-by-step setup + demo instructions
└─ package.json
```
## 技术栈
- Next.js 14
- React 18
- TypeScript
- Tailwind CSS v4
- Framer Motion
- Supabase
- Google Gemini(通过 `@google/generative-ai`)
- Recharts
## 本地设置
1. 安装依赖:
```
npm install
```
2. 创建 `.env.local` 并填入以下内容:
```
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
GEMINI_API_KEY=...
GROQ_API_KEY=...
NEXT_PUBLIC_APP_URL=...
DEMO_SEED_SECRET=...
```
3. 运行应用:
```
npm run dev
```
4. 打开:
```
http://localhost:3000
```
## Supabase
Schema 设置位于 [`supabase/migrations/001_saas_schema.sql`](supabase/migrations/001_saas_schema.sql)(推荐使用),参考快照位于 [`supabase/migration.sql`](supabase/migration.sql)。
应用在 [`src/lib/demo-data.ts`](src/lib/demo-data.ts) 中包含了演示安全的回退数据,这有助于在现场演示期间即使数据库为空也能保持仪表板和流程的良好展示效果。
## 演示故事
最具说服力的演示路径是:
1. 打开落地页并解释酒店业面临的痛点。
2. 展示面向客户的助手。
3. 打开 `/v/grand-meridian` 或扫描预设的 QR 码路径,提交一份带有可选照片证据的客人危机报告。
4. 让应用路由到 `/report/[id]/status` 并突出显示 Gemini 提供的严重程度、指导和实时进度。
5. 打开员工仪表板并接管该事件的处理权。
6. 打开管理员仪表板,展示指挥级别的全局可见性、重新分诊和事件解决。
7. 打开生成的事件报告,并以预防性见解作为总结。
## 演示运维
在任何现场演示之前:
1. 打开 `/status` 并确认 Supabase + Gemini + Groq 在线。
2. 使用以下命令预设标准的演示场馆:
```
curl -X POST http://localhost:3000/api/demo/seed -H "x-demo-seed-secret: "
```
3. 使用预设的公开入口:
```
/v/grand-meridian
```
4. 将黄金流程限制为:
```
/ -> /v/grand-meridian -> /report/[id]/status -> /staff/dashboard -> /admin/dashboard -> /admin/reports/[reportId]
```
如果预设不可用,应用仍包含用于展示的回退演示安全 UI 数据,但最佳的评委体验是上述预设的实时流程。
## 亮点!
- 清晰的现实世界痛点
- 强大的端到端叙事
- 真正的 AI 实用性,绝非虚饰
- 实时协调的故事
- 优质的 UI 打磨
- 适合演示的安全回退行为
## 脚本
```
npm run dev
npm run build
npm run start
npm run lint
```
## 演示 Runbook
有关适合评委的流程及在任何依赖项不稳定时的恢复选项,请参阅 [`docs/demo-runbook.md`](docs/demo-runbook.md)。
## 文档
- [`docs/hackathon-kit.md`](docs/hackathon-kit.md):推介、演示脚本、评委谈话要点
- [`docs/demo-runbook.md`](docs/demo-runbook.md):演示前检查清单、凭据、黄金流程
- [`docs/saas-architecture.md`](docs/saas-architecture.md):建议的多租户 SaaS 方向
## 状态
当前状态:
- 产品重新设计已完成
- Gemini 网站助手已添加
- 演示可靠性检查已完成
- 多模态图像分诊已完成
- AI 推理和预防建议已完成
- 部分页面尚未完全发布,但所有主要部分均正常运行
## 感谢您的关注,我由衷地表示感谢。
无任何许可协议,个人项目,大量使用了 gemini 3.1 pro。
标签:AI原生应用, AI辅助决策, Gemini 2.0 Flash, SaaS平台, Supabase, 事件报告, 人工智能, 代码示例, 仪表盘, 危机管理, 多模态分析, 安全事故处理, 实时协调, 实时数据同步, 客户服务, 库, 应急响应, 应急管理, 度假村管理, 数据分析, 智能调度, 用户模式Hook绕过, 自动化攻击, 运营管理, 酒店管理