SeatOn 사용자 가이드

SeatOn v1.4.1 기준. 화면을 띄워 놓고 운영하는 사람을 위한 설치·설정·장애 대응은 관리자 가이드에 있습니다.

1. 이 제품이 하는 일

SeatOn은 사무실 도면 위에 “누가 어디에 앉는지”를 보여 줍니다. PNG·JPG·PDF 도면을 올리면 좌석을 자동으로 찾아 주고, 인사 정보와 연결해 이름·사번·조직으로 자리를 검색할 수 있게 합니다. 좌석 이동은 끌어다 놓기만 하면 되고, 누가 언제 어디로 옮겼는지는 자동으로 기록됩니다.

일반 직원은 좌석맵 한 화면만 씁니다. 동료의 자리를 찾고, 팀이 어디에 모여 앉는지 봅니다. 좌석 관리자(총무·시설·인사)는 도면을 올리고, 인식 결과를 검토하고, 배정을 바꾸고, 미배정·퇴직자 점유·조직 구역 불일치 같은 예외를 처리필요 화면에서 처리합니다.

도면과 좌석 좌표는 모두 사내 PostgreSQL에 저장되고, 기본 설정에서는 인터넷으로 나가는 통신이 없습니다. 사내 AI 비서(MCP 클라이언트)에서 좌석을 물어보는 연동도 개인 API 키로 붙일 수 있습니다.

2. 처음 5분 — 로그인해서 동료 자리 찾기

  1. 관리자에게 받은 주소(예: http://seaton.intra:8080)를 브라우저로 엽니다. 로그인 화면이 나옵니다. Keycloak SSO가 켜진 회사라면 사내 SSO로 로그인 단추가 함께 보입니다.

    로그인 — 아이디와 비밀번호를 넣고 로그인을 누른다. 카드 아래에 빌드 버전이 표시된다

  2. 로그인하면 바로 좌석맵이 열립니다. 가운데가 도면, 왼쪽이 검색, 오른쪽이 선택한 좌석의 상세입니다. 도면 위 좌석은 배정된 사람의 이름 또는 좌석 번호 뒷자리로 표시됩니다.

    좌석맵 — 왼쪽 검색, 가운데 도면, 오른쪽 좌석 상세. 아래 범례가 배정·빈 좌석·검토 필요를 구분한다

  3. 왼쪽 검색창에 이름·사번·조직명을 넣고 Enter를 누릅니다. 첫 결과의 좌석으로 도면이 확대되며 테두리가 맥동하고, 오른쪽에 좌석 번호·소속·근무지가 열립니다.

    좌석맵 검색 — "김개발"을 찾자 HQ-3F-001 좌석으로 확대되고 오른쪽에 상세가 열렸다

  4. 도면 좌상단의 전체 보기 단추(가운데 아이콘)를 누르거나 키보드 0을 누르면 다시 층 전체가 보입니다.

여기까지가 일반 직원이 매일 쓰는 전부입니다. 관리 화면은 왼쪽 메뉴에 권한이 있는 사람에게만 나타납니다.

3. 화면별 사용법

3.1 좌석맵

주소 /. 모든 사용자가 봅니다. 상단 오른쪽의 본사·3층 선택기로 사업장과 층을 바꿉니다. 기본값은 각 층의 게시된 도면입니다.

도면 다루기

조작 동작
빈 곳 드래그 화면 이동
마우스 휠 커서 위치를 기준으로 확대·축소
방향키 화면 이동
+ / - 확대 / 축소
0 전체 보기로 되돌리기
좌하단 미니맵 현재 보는 영역 표시. 클릭·드래그로 이동

확대 배율은 도면 좌상단에 %로 표시되며 전체 보기가 100%입니다. 미니맵은 확대했거나 필터·조직 강조가 걸렸을 때 나타납니다. 좌석 번호는 도면 안에서 구분되는 뒷자리만 보여 줍니다. HQ-3F-011 좌석은 도면 위에서 011로 읽히고, 전체 번호는 좌석을 고르면 오른쪽 상세와 툴팁에 나옵니다.

색상 기준과 필터 — 도면 위 툴바에서 고릅니다.

조직 색과 구역 — 개발팀·영업팀·인사팀이 색으로 구분되고 앞줄에 개발팀 구역이 점선 상자로 표시된다

검토 필요 필터 — 인식 신뢰도가 낮은 6석만 남기고 나머지는 흐려진다

좌석에 마우스를 올리면 좌석 번호, 배정자, 소속, 검토 필요 여부, 구역 불일치가 툴팁으로 표시됩니다.

키보드만으로 쓰기

조작 동작
Tab 도면 안 좌석 하나로 들어옵니다. 한 번 더 누르면 도면을 지나 다음 조작으로 갑니다
방향키 그 방향에 있는 이웃 좌석으로 초점을 옮깁니다
Home / End 도면의 첫 좌석 / 마지막 좌석
Enter · Space 그 좌석을 선택해 오른쪽에 상세를 엽니다

초점이 화면 밖 좌석으로 가면 그 좌석이 보이도록 화면이 따라 움직입니다. 좌석마다 좌석 번호·배정자·소속·검토 상태를 읽어 주므로 화면 낭독기로도 쓸 수 있습니다. 검색 결과가 여럿이면 Tab으로 목록을 옮겨 다니며 Enter나 Space로 고릅니다. 상단 직원 빠른 검색(Ctrl/⌘ K)은 어느 화면에서든 사람을 찾아 좌석맵으로 갑니다.

배치 편집 (좌석 관리자 이상) — 오른쪽 위 배치 편집을 누르면 도면 위에 편집 도구가 나타나고, 단추가 좌석 추가·편집 완료로 바뀝니다.

배치 편집 — 도면 격자, 격자 보정, 격자에 정렬, 실행 취소·다시 실행 도구가 도면 위에 뜬다. 선택한 좌석의 상세에 편집·삭제가 나타난다

3.2 처리필요

주소 /admin/actions. 좌석 관리자 이상. 예외를 발견하고 처리하는 화면입니다. 왼쪽 메뉴의 배지 숫자가 처리 필요 건수입니다.

처리필요 — 확인이 필요한 건수, 직원 배정률·좌석 점유율·미배정 직원·AI 검토 대기 집계

작업 큐 — 조직 영역 불일치와 AI 좌석 확인 항목이 줄지어 있고 각 항목에 즉시 조치 단추가 있다. 오른쪽은 운영 준비도와 연동 상태

작업 큐는 전체·미배정·퇴직자·조직 불일치·AI 확인 탭으로 나뉩니다. 각 항목의 단추로 그 자리에서 처리합니다.

항목 단추
미배정 재직 중인데 좌석이 없는 직원 좌석 배정 — 그 직원을 검색해 둔 좌석맵으로 이동
퇴직자 퇴직 처리된 직원이 좌석을 점유 좌석 해제, 또는 위쪽의 퇴직자 n건 일괄 해제
조직 영역 불일치 좌석의 조직 구역과 앉은 사람의 소속이 다름 영역 맞춤 — 좌석의 구역을 앉은 사람의 소속으로 바꿈
AI 좌석 확인 인식 신뢰도가 자동 승인선 아래인 좌석 확인 완료 — 검토를 끝내고 신뢰도를 승인선으로 올림

운영 준비도는 사업장 등록 → 층 구성 → 좌석맵 게시 → 직원 데이터 → Keycloak SSO → 인사 자동 동기화 여섯 단계 중 끝난 것을 보여 줍니다. 마지막 두 단계는 시스템 관리자가 시스템 설정에서 켭니다. 연동 상태는 인사 동기화·Keycloak SSO·게시 좌석맵의 현재 상태입니다. 화면은 자동으로 새로 고쳐지지 않으며 오른쪽 위 새로고침 아이콘으로 다시 읽습니다.

3.3 도면 · 좌석

주소 /admin/maps. 좌석 관리자 이상. 사업장 → 층 → 도면 → AI 분석 → 게시 다섯 단계가 위쪽에 표시되고, 끝난 단계에 체크가 붙습니다.

도면 · 좌석 — 다섯 단계 진행 표시와 층별 도면 카드. 카드에 좌석 수, 검토 건수, AI 분석·좌석 일괄·배치 편집·게시 내림 단추가 있다

오른쪽 위 단추:

사업장 추가 — 사업장명, 코드, 주소를 넣는 창

도면 업로드 — 층을 고르고 버전을 적은 뒤 PNG, JPG, PDF 파일을 고른다

도면 카드의 단추:

단추 동작
AI 분석 좌석 인식을 시작합니다. 백그라운드에서 진행되며 단추가 진행 상태로 바뀌고, 끝나면 결과와 경고가 화면 위에 표시됩니다. 게시 중인 도면은 다시 분석할 수 없습니다
좌석 일괄 행·열·간격을 지정해 좌석 격자를 한 번에 만듭니다(최대 500석). 인식 결과가 없거나 도면이 단순할 때 씁니다
배치 편집 이 도면을 좌석맵 편집 모드로 엽니다
게시 / 게시 내림 층의 활성 도면으로 올리거나 내립니다. 게시를 내려도 좌석과 이력은 남습니다
삭제 게시 중이 아닌 버전을 지웁니다. 무엇을 지우는지 확인 창이 뜹니다

인식 결과 — 좌석에는 신뢰도와 근거가 함께 기록됩니다. 신뢰도가 자동 승인 기준(기본 0.95) 아래인 좌석은 좌석맵에서 점선 테두리로 표시되고 카드에 검토 n건으로 집계되며, 처리필요의 AI 확인 탭에도 올라옵니다. 근거는 네 가지입니다.

어떤 엔진을 쓸지는 시스템 관리자가 정합니다. 엔진별 차이는 관리자 가이드의 “좌석 인식 엔진” 절을 보십시오.

3.4 직원

주소 /admin/employees. 좌석 관리자 이상. 재직자·좌석 배정·미배정 집계와 직원 목록입니다. 이름·사번·이메일·조직으로 검색하고 재직 상태·배정 상태로 거릅니다.

직원 — 조회된 재직자·좌석 배정·미배정 집계, 검색과 상태 필터, 직원 목록. 오른쪽 위에 직원 양식·배정 양식·좌석 일괄 배정·직원 가져오기

3.5 변경 이력

주소 /admin/history. 좌석 관리자 이상. 좌석 이동은 별도 입력 없이 처리 주체·사유·경로까지 자동으로 남습니다.

변경 이력 — 검색, 방식, 시작일·종료일 필터와 이전 좌석 → 새 좌석, 처리자, 사유, 방식 목록

변경일시는 최근 것일수록 “3분 전”처럼 상대 시간으로 보이고, 마우스를 올리면 정확한 시각이 나옵니다.

3.6 내 API 키

주소 /profile/keys. 모든 사용자. 오른쪽 위 프로필을 누르면 열리는 메뉴에서 내 API 키로 갑니다. 같은 메뉴에 빌드 버전과 로그아웃이 있습니다.

프로필 메뉴 — 내 API 키, SeatOn 1.4.0 버전 표시, 로그아웃

개인 API 키 만들기 — 키 이름을 적고 read·write·mcp 범위를 고른다

지금 키를 복사하세요 — 키 원문은 이 창에서 한 번만 표시된다(그림에서는 가렸다)

내 API 키 목록 — 상태, 범위, 버전, 마지막 사용, 만료와 회전·폐기 단추. 아래에 MCP 엔드포인트 주소

  1. 키 만들기를 누르고 이름과 범위(read, write, mcp)를 정합니다. 범위를 벗어난 요청은 403으로 막힙니다. read 키로는 데이터를 바꿀 수 없고, mcp 범위가 없으면 MCP 연결도 되지 않습니다.
  2. 생성 직후 seat_... 형식의 키 원문이 한 번만 표시됩니다. 복사해 안전한 곳에 두고 보관 완료를 누릅니다. 서버는 해시만 저장하므로 원문은 다시 볼 수 없습니다.
  3. 목록의 상태는 사용 중 · 회전 유예 · 폐기됨 중 하나입니다. 만료는 관리자가 정한 기본 유효기간(기본 90일)으로 계산됩니다.
  4. 회전: 새 키가 한 번 표시되고, 기존 키는 유예시간(기본 24시간) 동안만 함께 동작한 뒤 막힙니다. 연동을 새 키로 바꿀 시간을 벌어 줍니다.
  5. 폐기: 유출이 의심되면 즉시 무효로 만듭니다. 유예 없이 그 순간부터 막히고 되돌릴 수 없으므로 어떤 키인지 확인하는 창이 한 번 뜹니다.

4. 자주 하는 작업

새 층 도면을 올려서 게시하기 (좌석 관리자)

  1. 도면 · 좌석사업장, 으로 건물과 층을 만듭니다(이미 있으면 건너뜁니다).
  2. 도면 업로드에서 층과 버전(2026-09 또는 1)을 고르고 파일을 올립니다.
  3. 카드의 AI 분석을 누르고 끝날 때까지 기다립니다. 오프라인 CV는 보통 몇 초, 비전 모델은 수십 초에서 수 분이 걸립니다.
  4. 배치 편집으로 열어 검토 필요(점선) 좌석을 확인합니다. 어긋난 좌석은 끌어 옮기고, 책상이 규칙적이면 좌석 2개 이상을 Shift로 골라 선택 좌석으로 격자 보정격자에 정렬로 한 번에 맞춥니다.
  5. 편집 완료 뒤 카드의 게시를 누릅니다. 같은 층의 이전 게시 도면은 자동으로 보관 상태가 됩니다.

게시된 도면은 다시 분석할 수 없습니다. 인식을 다시 돌리려면 새 버전을 올리십시오.

사람을 다른 자리로 옮기기

좌석맵 왼쪽에서 직원을 검색하고, 결과 항목을 목표 좌석 위로 끌어다 놓습니다. 즉시 배정되고 이력이 남습니다. 한 직원은 동시에 한 좌석만 차지하며, 이미 누가 앉은 좌석에는 놓을 수 없습니다.

인사 파일로 한꺼번에 배정하기

  1. 직원배정 양식을 내려받아 사번과 좌석 번호(HQ-3F-001) 두 열을 채웁니다.
  2. 좌석 일괄 배정으로 올립니다. 반영되지 않은 행은 사유와 함께 아래에 나열되므로 그 행만 고쳐 다시 올립니다.

직원 자체를 새로 넣거나 소속을 갱신하려면 직원 양식으로 같은 순서를 밟되 직원 가져오기를 씁니다.

인식이 남긴 검토 항목 털어내기

처리필요AI 확인 탭에서 항목마다 좌석 번호를 보고 좌석맵에서 자리를 확인한 뒤 확인 완료를 누릅니다. 좌석맵에서 검토 필요 필터를 켜면 점선 좌석만 남으므로 어디를 봐야 하는지 바로 보입니다.

월말 좌석 변경 내역 내보내기

변경 이력에서 시작일·종료일을 그 달의 1일과 말일로 두고 조회, 이어서 CSV 내보내기. 500건을 넘으면 안내에 나온 전체 건수를 보고 기간을 반으로 나눠 두 번 내보냅니다.

잘못 올린 도면 버전 지우기

도면 · 좌석에서 그 카드의 삭제를 누릅니다. 두 경우에는 지워지지 않습니다.

사내 AI 비서에서 좌석 물어보기 (MCP)

내 API 키에서 readmcp 범위로 키를 만들고(배정까지 시키려면 write도), MCP 클라이언트에 Streamable HTTP 엔드포인트 하나만 등록합니다. 엔드포인트 주소는 키 목록 아래에 표시됩니다.

{
  "mcpServers": {
    "seaton": {
      "type": "http",
      "url": "https://seaton.intra/mcp",
      "headers": {
        "Authorization": "Bearer seat_xxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}
도구 설명
search_employees 이름, 사번, 이메일, 조직명으로 직원을 찾고 현재 좌석을 반환합니다
list_available_seats 건물·층의 사용 가능한 좌석을 조회합니다
get_floor_map 층 도면과 좌석 배치를 조회합니다. 이미지 원문 대신 내부 URL과 비율 좌표를 반환합니다
get_action_items 미배정, 퇴직자 점유, 조직 불일치 등 처리 필요 건수를 조회합니다
assign_seat 좌석을 배정합니다. 좌석 관리자 권한과 write 범위가 모두 필요하며 이력에 남습니다

REST API 전체는 API_AND_MCP.md와 실행 중인 서버의 /api/v1/openapi.json에 있습니다.

5. 막혔을 때

화면에 나오는 문구 그대로 찾으십시오. “관리자에게”라고 적힌 것은 시스템 관리자가 관리자 가이드를 보고 처리합니다.

화면 문구 할 일
아이디 또는 비밀번호를 확인하세요 로컬 로그인 실패 다시 입력합니다. SSO 계정이면 SSO 단추로 로그인합니다
로컬 로그인이 비활성화되어 있습니다 관리자가 로컬 로그인을 껐음 SSO로 로그인합니다
서버에 연결하지 못했습니다. 네트워크를 확인한 뒤 다시 시도하세요. 브라우저가 서버에 닿지 못함 주소·VPN을 확인하고, 계속되면 관리자에게
세션이 만료되었습니다. 다시 로그인해 주세요. 세션 유효시간(기본 8시간)이 지남 다시 로그인하면 이어서 작업합니다. 저장 전 내용은 남지 않습니다
로그인이 필요합니다 로그인 없이 보호된 화면을 열었음 로그인합니다
좌석 관리자 권한이 필요합니다 / 시스템 관리자 권한이 필요합니다 권한 부족 관리자에게 사용자 권한에서 역할을 올려 달라고 합니다
PNG, JPG, PDF 도면만 업로드할 수 있습니다 지원하지 않는 파일 형식을 바꿔 다시 올립니다
도면 파일은 25MB 이하여야 합니다 파일이 큼 해상도를 낮추거나 PDF는 한 페이지로 잘라 올립니다
동일한 층과 버전의 도면이 이미 있습니다 버전 중복 다른 버전 이름을 씁니다
게시 중인 도면은 다시 분석할 수 없습니다 게시된 버전에 AI 분석을 누름 새 버전을 올려 분석합니다
이 도면은 이미 분석 중입니다 같은 도면의 분석이 진행 중 끝날 때까지 기다립니다
분석이 예상보다 오래 걸립니다. 잠시 후 도면 목록을 새로 고쳐 확인하세요 비전 모델 응답이 느림 새로 고쳐 확인합니다. VLM 호출이 실패해도 CV 결과로 완료됩니다
도면 분석에 실패했습니다 분석 잡 실패 카드의 오류 문구를 관리자에게 전달합니다
게시 중인 도면은 삭제할 수 없습니다. 다른 버전을 게시한 뒤 삭제하세요 게시 중 삭제 시도 게시 내림 뒤 지웁니다
배정이나 변경 이력이 있는 도면은 삭제할 수 없습니다 이력 보호 게시 내림으로 내려 두고 보관합니다
배정 중인 좌석은 삭제할 수 없습니다 배정된 좌석 삭제 시도 사람을 다른 자리로 옮긴 뒤 지웁니다
격자를 계산할 수 없습니다. 가로·세로로 떨어진 좌석을 2개 이상 선택하세요 격자 보정 선택 부족 한 줄이 아니라 가로와 세로로 떨어진 좌석을 고릅니다
먼저 도면의 좌석 격자를 보정하세요 격자 없이 정렬 시도 격자 보정을 먼저 합니다
한 번에 1~500개 좌석을 생성할 수 있습니다 좌석 일괄 범위 초과 행·열을 줄입니다
CSV 또는 XLSX 파일만 사용할 수 있습니다 가져오기 파일 형식 양식을 내려받아 그 형식으로 저장합니다
사번과 이름은 필수입니다 직원 파일에 빈 칸 그 행을 채웁니다
사번을 찾을 수 없습니다 / 이미 다른 직원에게 배정된 좌석입니다 일괄 배정에서 반영되지 않은 행 사번·좌석 번호를 고쳐 그 행만 다시 올립니다
PDF 미리보기 없음 · 오버레이를 표시할 수 없습니다 PDF 변환 실패 도면을 PNG로 바꿔 올리거나 관리자에게
지원 범위는 read, write, mcp입니다 API 키 범위 오타 세 값 중에서 고릅니다
mcp 범위가 있는 API 키가 필요합니다 / write 범위가 있는 API 키가 필요합니다 키 범위 부족(403) 범위를 넣어 새 키를 만듭니다
API 키가 유효하지 않습니다 만료·폐기·회전 유예 종료 새 키로 바꿉니다

그 밖의 상황:

상황 확인할 점
좌석맵에 도면만 보이고 좌석이 없다 AI 분석을 실행했는지, 게시했는지 확인합니다
좌석이 도면과 어긋나 보인다 도면 우측 상단에 크기 정보 경고가 있는지 보고, 없으면 격자 보정값을 점검합니다
정렬 후 좌석이 흐트러졌다 정렬 결과의 이동량 경고를 확인하고 Ctrl/⌘ Z로 되돌린 뒤 격자를 다시 보정합니다
이력에서 오늘 것이 안 보인다 시작일·종료일을 모두 오늘로 두었는지 확인합니다
내려받은 CSV가 화면보다 적다 한 번에 500건까지만 받습니다. 기간을 나눠 다시 내보냅니다
왼쪽 메뉴에 관리 화면이 없다 역할이 직원입니다. 관리자에게 좌석 관리자 역할을 요청합니다

6. 용어

용어
사업장 · 층 건물과 층. 코드(HQ, 3F)가 좌석 번호 접두어 HQ-3F-를 만듭니다
도면 버전 한 층에 올린 도면 파일 하나. 여러 버전 중 하나만 게시됩니다
게시 그 버전을 층의 활성 도면으로 올려 좌석맵에 보이게 하는 것
AI 분석 도면에서 좌석을 자동으로 찾는 작업. 오프라인 CV, 비전 모델(VLM), 하이브리드 중 하나로 동작합니다
신뢰도 · 검토 필요 인식된 좌석이 실제 좌석일 확률. 자동 승인 기준(기본 0.95) 아래면 검토 필요로 표시됩니다
격자 보정 도면의 실제 책상 간격을 저장해 스냅·정렬 기준으로 삼는 것
구역 좌석에 지정한 조직. 앉은 사람의 소속과 다르면 구역 불일치가 되며, 처리필요의 영역 맞춤으로 맞춥니다
처리필요 미배정·퇴직자 점유·구역 불일치·AI 확인을 모아 놓은 작업 큐
회전 · 유예 API 키를 새것으로 바꾸되 옛 키를 잠시 함께 허용하는 것
MCP AI 비서가 SeatOn 도구를 부르는 표준 연결 방식. 개인 API 키의 mcp 범위가 필요합니다