Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗여러 숙소의 객실, 청소 작업, 운영 이슈를 하나의 우선순위로 관리하는 호텔 운영 대시보드입니다.
첫 화면의 목표는 데이터를 많이 보여주는 것이 아니라, 출근한 운영자가 **“오늘 무엇부터 처리해야 하는가?”**를 빠르게 판단하도록 돕는 것입니다.
여러 숙소를 동시에 관리하는 운영사 내부 운영 담당자를 주 사용자로 설정했습니다.
운영 담당자는 다음 업무를 반복합니다.
운영사의 전체 서비스는 게스트용 앱과 운영자용 대시보드로 나뉘며, 이 프로젝트는 그중 운영자용 대시보드입니다. 게스트가 게스트 앱에서 문제를 직접 신고하면 이 대시보드에 이슈로 등록되고, 여러 지점을 원격으로 관리하는 운영담당자와 해당 지점의 상주 직원(지점 기본 담당자)이 함께 확인합니다. 이번 MVP에는 게스트 앱과 그 연동은 포함하지 않아, 전화나 프론트 응대처럼 앱 밖에서 들어온 내용은 운영자가 대신 입력합니다.
Guest (게스트 앱 신고 · 전화 · 프론트 응대)
↓
Stay Ops Dashboard
↓ 운영담당자(원격) · 상주 직원(지점 기본 담당자)이 확인
Cleaning Crew / Facility Partner
객실, 청소, 시설 이슈를 각각 따로 확인하면 체크인 임박 객실이나 판매 중지 객실을 늦게 발견할 수 있습니다. 반대로 모든 정보를 한 화면에 나열하면 지금 처리해야 할 일이 무엇인지 판단하기 어렵습니다.
따라서 화면마다 하나의 질문에만 답하도록 역할을 나눴습니다.
| 화면 | 답해야 하는 질문 | 관리 기준 |
|---|---|---|
| 대시보드 | 오늘 무엇부터 해야 하는가? | 통합 우선순위 |
| 객실 현황 | 이 객실을 지금 운영할 수 있는가? | 객실 |
| 청소 작업 | 청소 업무가 어디까지 진행됐는가? | 작업 |
| 운영 이슈 | 해결해야 할 문제가 무엇인가? | 이슈 |
예약
↓
체크아웃
↓ 청소 작업 자동 생성
미배정
↓
크루 배정
↓
청소 중
↓
검수 대기
↓
입실 가능
↓
체크인 → 투숙 중
청소 작업은 운영자가 수동으로 등록하지 않습니다. 객실을 체크아웃 처리하면 미배정 청소 작업이 자동 생성됩니다. 청소 불량이나 재청소 요청처럼 예외적인 문제는 운영 이슈로 접수합니다.
운영 이슈 접수
↓
담당자 배정
↓
판매 중지(필요 시)
↓
조치 및 완료 확인
↓
판매 재개
판매 중지 시 사유 입력을 필수로 받고, 해당 내용으로 긴급 운영 이슈를 함께 생성합니다. 미완료 이슈가 남아 있으면 판매를 재개할 수 없습니다.
대시보드의 긴급 작업은 청소와 이슈를 분리하지 않고 하나의 작업 큐로 합친 뒤 정렬합니다.
청소 버퍼는 다음 기준으로 계산합니다.
청소 버퍼 = 다음 체크인까지 남은 시간 - 남은 예상 청소 시간
청소가 이미 시작됐다면 경과 시간을 예상 소요 시간에서 차감합니다. 복잡한 가중치보다 운영자가 결과를 설명할 수 있는 기준을 우선했습니다.
입실 가능, 투숙 중, 판매 중지는 객실의 운영 가능 여부입니다. 배정 완료, 청소 중, 검수 대기는 청소 작업의 진행 단계입니다.
두 상태를 섞지 않아 객실 현황에서는 운영 가능 여부를, 청소 화면에서는 업무 진행 상태를 바로 판단할 수 있습니다.
대시보드에는 우선순위가 높은 항목만 보여줍니다. 담당자 배정, 상태 변경, 검수처럼 실제 데이터가 바뀌는 작업은 객실·청소·이슈 상세 화면에서 수행합니다.
판매 중지는 단순 상태 변경이 아니라 후속 조치가 필요한 운영 사건입니다. 따라서 사유를 입력하면 운영 이슈를 함께 생성하고, 해결되지 않은 이슈가 있으면 판매 재개를 제한했습니다.
목록의 행을 누르면 현재 맥락을 유지한 채 상세 모달을 엽니다. URL을 직접 방문하거나 새로고침해도 동일한 상세 페이지를 볼 수 있도록 Next.js 병렬·인터셉트 라우트를 사용했습니다.
제외한 메뉴는 전체 제품의 정보 구조를 보여주기 위해 SOON 상태로만 표시했습니다.
주요 도메인 로직은 다음 파일에 분리했습니다.
src/lib/roomDisplayStatus.ts: 객실 표시 상태와 정렬 순서src/lib/priority.ts: 체크인 버퍼와 청소 위험도src/lib/transitions.ts: 청소·이슈 상태 전이 규칙src/lib/queries.ts: 화면별 조회와 통합 작업 큐Node.js 20.9 이상이 필요합니다.
nvm use
npm install
Supabase SQL Editor에서 아래 파일을 순서대로 실행합니다.
supabase/schema.sqlsupabase/seed.sql기존 데이터베이스에 숙소 테이블만 추가할 때는 다음 마이그레이션을 실행할 수 있습니다.
supabase/migrations/202608060001_add_properties.sql
프로젝트 루트의 .env.local에 환경변수를 입력합니다.
NEXT_PUBLIC_SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
ANTHROPIC_API_KEY=
ANTHROPIC_API_KEY는 AI 이슈 분류에만 사용하며, 없어도 나머지 운영 기능은 동작합니다.
npm run dev
시드 데이터는 실행 시점의 now()를 기준으로 생성됩니다. 체크인 임박, 청소 지연, 긴급 이슈 시나리오를 바로 확인할 수 있습니다.
npm run lint
npm run typecheck
npm run build
또는 다음 명령으로 한 번에 확인합니다.
npm run check
현재 버전은 기능의 수보다 오늘의 운영 판단과 실행 흐름이 자연스럽게 이어지는가를 검증하는 데 집중했습니다.