Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
객실 상태 중심의 청소 작업·운영 이슈 통합 대시보드
Translation pending
BusinessTypeScript · CSSGitHub @lalalalala00OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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
현재 버전은 기능의 수보다 오늘의 운영 판단과 실행 흐름이 자연스럽게 이어지는가를 검증하는 데 집중했습니다.