← Docs hub

TaskManager 사양 4 · 도메인 기능과 기기 컨텍스트

None
사양 허브DeviceAgent MR6Spec 1.9

기존 DeviceAgent 기능을 Task 실행기로 연결하는 방법과 계획에 제공할 기기 상태 계약을 정의한다.

이 장의 결론: 기능은 등록된 실행기와 완료 증거를 통해 Task가 되고, 기기 컨텍스트는 사실과 최신성을 보존해 상위 호출자에 제공한다.

16. 도메인 기능과 실행기 연결

16.1 실행기 등록 원칙

TaskExecutorBootstrap은 표준 taskMethod를 도메인 어댑터에 등록한다.

실행 연결은 SKIX 제품 앱에서 기기 도메인까지의 호출 계층에 표시한 것처럼 taskMethodTaskExecutorRegistry, 도메인별 TaskExecutor, 기존 DeviceAgent manager·controller·API 순서로 전달한다.

실행기 어댑터가 해야 할 일:

  1. Task 계약 필드를 도메인 입력으로 정규화한다.
  2. 기존 도메인 기능을 호출한다.
  3. 요청 전달 결과를 outdata에 기록한다.
  4. 비동기 기능이면 완료 연결부가 사용할 상관관계 키를 등록한다.
  5. 실제 완료는 도메인 콜백을 통해 TaskCompletionStateStore에 기록한다.

실행기 어댑터가 하면 안 되는 일:

16.2 현재 실행기 그룹

실행기 대표 메서드 실제 수행 주체
FrameworkTaskExecutor battery, firmware, main/device status, screen, configuration DeviceAgent framework state
StationLocationTaskExecutor 스테이션 위치 증거 조회 스테이션·맵 제공자
DockingSignalProbeTaskExecutor 도킹 신호 관찰 AMR·충전 상태 증거
ObservationTaskExecutor rotate, vision semantics movement + Vision AI
MainApiTaskExecutor map, security, follow state, 기타 MainApi 기능 기존 MainApi/domain
MovementTaskExecutor move, return, stop MovingController/AMR
CleaningAmpTaskExecutor cleaning start/stop/status Cleaning/Amp domain
LlmTtsTaskExecutor LLM status, TTS, stop LlmManager
IotTaskExecutor device status, config IotAgent path
RoutineTaskExecutor Eye LED scene Routine/PUI domain
ScheduleTaskExecutor product schedule CRUD, interaction Schedule domain
UpdateTaskExecutor OTA/firmware state Update domain

16.3 공개 메서드 목록

기기 정보와 상태

method 분류 비고
getBatteryInfo query planning context에도 포함
getFirmwareVersion query device version
getMainState query current mode
getDeviceStatus query device status
getConfiguration query configuration snapshot
setMainState control main state 전환
setDeviceStatus control device status 반영
setLauncherScreen control/session start screenName canonical

이동과 지도

method 분류 completion 후보
setMoveTo long-running movement.arrived
returnToStation long-running movement.stationCharging
setMoving control operation별 별도 완료 증거 필요
stopMovement cancel/control 이동 최종 상태 확인
getFollowMeStatus query follow state
reqmap long-running/query mix mapping.dataReceived
isMapFilePresent query map readiness
resetReturnToStationCounter control post-check 권장
setAMRMonitoring control monitoring 상태 확인
getStationLocationEvidence query 스테이션 위치 증거 스냅숏
probeDockingSignal observation current signal only
rotateInPlace bounded action movement.rotationCompleted
observeVisionSemantics observation semantic result

청정

method 분류 비고
getAirCleanerOperation query running/paused/current mode
setAirCleanerOperation long-running/control action/mode/speed
setStatusClean state update domain status
startSimpleAirClear alias/capability canonical cleaning으로 정규화 필요
startBasicAirClear alias/capability basic mode
startFixedAirClear alias/capability fixed cleaning
startAllAirClear alias/capability all-room cleaning
startSelectiveAirClear alias/capability selected rooms
startAirSensorAirClear alias/capability sensor-based mode
stopAirClear control 정지 증거
pauseAirClear control paused state
resumeAirClear control resumed state
returnAirClearToStation compound alias cleaning stop/return 경계 확인
returnCleaningToStation compound alias alias 정합 필요
stopCleaning / ampStop low-level control executor 등록 상태 확인

LLM, TTS, UI와 루틴

method 분류 completion
setChangeLlmStatus state control LLM 상태 콜백
setLlmTts long-running playback tts.playbackEnded
stopLlm cancel 정지·유휴 증거
stopTts cancel aborted playback
setEyeLedColor bounded setting post-check 또는 ACK
setCurrentPuiEyeLedColor bounded setting post-check 또는 ACK
startEyeLedScene bounded routine scene-specific lifecycle 필요

설정

method 분류
setConfig mutation
getConfig query
getAirClearAutoStartModeEnable query

제품 스케줄과 상호작용

method 역할
addSchedule, editSchedule, deleteSchedule 제품 schedule CRUD
scheduleiot, setActiveSchedule, puiEditSchedule IoT/PUI schedule mutation
callschedule, getschedule, getUpComingSchedule 실행/조회
setScheduleExecuted execution state update
holiday methods 휴일 예외 정책
gpsLocNearBy 위치 기반 schedule trigger 지원
interSchedule welcome/wakeup/relax 등 interaction session

보안

method 역할 완료 기준
checkSecurityBasicAvailability 실행 가능성 query 즉시 result
startSecurityMode 장기 session 시작 security.started
pauseSecurityMode session pause security.paused
resumeSecurityMode session resume security.resumed
stopSecurityMode session 종료 security.stopped

업데이트

method 역할
OTAUpdateArmResult ARM update result 처리
OTAUpdateMcuResult MCU update result 처리
setFirmwareUpdateStatus firmware update state 반영

16.4 기능 등록 체크리스트

새 DeviceAgent 기능을 TaskManager에 연결할 때 다음을 모두 정의한다.

  1. 표준 taskMethod
  2. 조회·제어·장기 실행 분류
  3. 입력 스키마와 별칭
  4. 요청 출처 허용 범위
  5. 실행 방식
  6. 대기열과 우선순위
  7. 시간 제한, 재시도와 멱등성
  8. 필수 자원
  9. 실행기 어댑터
  10. 시작·완료·중단 증거
  11. 취소 메서드
  12. 보상 동작 필요 여부
  13. 실패 사유 변환
  14. 계획 컨텍스트에 노출할 상태
  15. 단위·통합·실기기 인수 시험

17. 기기 계획 컨텍스트

getDevicePlanningContext는 기능 정의가 아니라 현재 기기 상태의 스냅숏이다.

17.1 컨텍스트 구조

{
  "schema_version": "device_context.v1",
  "snapshot_ts": 1786400000000,
  "updated_at_ms": 1786400000000,
  "main_state": "...",
  "battery": {},
  "map": {},
  "location": {},
  "station": {},
  "air_quality": {},
  "cleaning": {},
  "movement": {},
  "network": {},
  "voice_llm": {},
  "security": {},
  "interactions": {},
  "task_manager": {},
  "semantic_observations": {},
  "capabilities": {}
}

17.2 컨텍스트 도메인

도메인 주요 필드 주의점
battery percent, is_low, is_charging, freshness 오래된 정보이면 판단에 사용하지 않음
map rooms, room_count, editing, source 지도 편집 중에는 사용 불가
location current_room_id/name, x/y/theta, is_on_station 내부 ID를 사용자에게 그대로 안내하지 않음
station 위치 증거, docking/charging 지도상 스테이션과 실제 도킹 상태 분리
air_quality PM, TVOC, NOx, HCHO, CO2, 온습도, AQ level 원시 필드 이름을 그대로 TTS하지 않음
cleaning is_running, is_paused, last_action, area_info 현재 Task와 교차 확인
movement moving_status, is_moving, is_paused, blocked 목표 위치와 현재 위치 분리
network AWS IoT connected, freshness 구독 준비와 실제 연결 상태 분리
voice_llm pipeline state, busy, session, output, model readiness 음성 세션 중 TaskManager 일시정지 정책과 연결
security session, stage, current area, low light 장기 세션의 생명주기 관리 필요
interactions 등록된 제품 스케줄 요약 TaskManager 지연 Task와 구분
task_manager 대기열, 실행 중·최근·예약 Task 실행 계획과 현재 상태 설명
semantic_observations 최근 관찰 증거와 최신성·개인정보 상태 제한된 관찰 결과만 사용
capabilities 이동, 청정, 복귀, TTS 등 실제 실행기·정책 목록과의 불일치 점검

17.3 공간 정보 계약

각 room은 최소 다음을 제공한다.

{
  "id": "5",
  "name": "안방",
  "x": "...",
  "y": "...",
  "theta": "...",
  "station": false
}

상위 호출자는 공간 이름을 areaId와 연결한 뒤 Workflow를 만든다. TaskManager는 존재하지 않는 공간을 임의로 대체하면 안 된다.

17.4 정보 최신성

컨텍스트 출처는 다음 메타데이터를 가질 수 있다.

조건부 Workflow는 available=true만 보지 말고 최신성과 사용 가능 여부를 함께 확인해야 한다.

17.5 계획 컨텍스트 사용 원칙


Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date