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
현재 버전은 기능의 수보다 오늘의 운영 판단과 실행 흐름이 자연스럽게 이어지는가를 검증하는 데 집중했습니다.