SPECIFICATION

meta:

id: com.theuniverse.builtin.weather

name: Weather Dash

version: 1.0.0

category: utility

keywords: [날씨, weather, 기온, 비, 눈, 맑음, forecast, 강수, 습도, 바람]

icon: res/drawable/ic_dash_weather.png

author: The Universe Team

description: |

실시간 날씨 정보를 표시하고, 일정/위치 변경 시 목적지 날씨로 자동 전환하는 빌트인 Dash.

Triggers: 날씨, weather, 기온, 비, 출장, 여행, 오늘 날씨

Do NOT use for: 상세 기상 분석 (전문 기상 Dash 사용), 농업/항공 기상 정보

min_api: 26

trigger:

conditions:

- type: always

- type: topic_match

topics:

- schedule.new

- location.change

- type: orchestrator_call

keywords: [날씨, weather, 기온, 비, 눈, 맑음, 흐림, 우산]

confidence: 0.75

skin:

sizes: [mini, standard, expanded]

theme_aware: true

composable_entry: WeatherDashSkin

default_size: standard

aspect_ratio:

mini: "2:1"

standard: "2:2"

expanded: "4:3"

skill:

entry: WeatherDashSkill

permissions: [network, location_coarse]

local_state: true

allowed_apis: [weather_api, location_service, network_service]

quota:

memory_mb: 24

network_kb_per_min: 128

cpu_percent: 5

protocol:

publish:

- topic: weather.current

schema: WeatherData.v1

subscribe:

- topic: schedule.new

schema: ScheduleEvent.v1

- topic: location.change

schema: LocationData.v1

fusible_with: [travel, map, calendar, air_quality]

imports:

- schemas/WeatherData.v1.json

- schemas/ScheduleEvent.v1.json

- schemas/LocationData.v1.json


Weather Dash — 실행 지식

동작 규칙

  • 기본 상태 (Mini): 현재 위치 기반 기온 + 날씨 아이콘만 표시
  • Standard: 현재/3시간 예보 + 강수확률 + 습도 + 바람 표시
  • Expanded: 24시간 예보 차트 + 7일 예보 + 상세 날씨 정보
  • schedule.new 수신 시: 목적지 날씨로 자동 전환 (Standard로 Morph)
  • location.change 수신 시: 새 위치 날씨로 즉시 업데이트
  • 사용자 탭 시: Mini → Standard 전환 (spring curve, 300ms)
  • 사용자 롱프레스 시: Expanded 팝업 오버레이
  • 캐시 정책

  • 현재 날씨: 30분 간격 갱신
  • 예보 데이터: 3시간 간격 갱신
  • 오프라인 폴백: 마지막 캐시 데이터 표시 + "마지막 업데이트: N분 전" 표시
  • 발행 메시지 스키마

    // weather.current — WeatherData.v1
    

    {

    "location": "string (도시명 또는 위치)",

    "temperature_c": "number (섭씨)",

    "feels_like_c": "number (체감온도)",

    "condition": "string (clear|cloudy|rain|snow|fog|thunder)",

    "humidity_pct": "integer (0-100)",

    "wind_kph": "number",

    "precipitation_pct": "integer (0-100)",

    "updated_at": "string (ISO 8601)"

    }

    접근성

  • TalkBack: "[도시명], [기온]도, [날씨 상태]" (예: "서울, 15도, 맑음")
  • Standard: "강수확률 [N]%, 바람 [N]km/h" 추가 설명
  • 터치 타겟: 최소 48dp (전체 카드 탭 영역)
  • 색맹 지원: 날씨 상태를 색상 외 아이콘으로도 구분
  • 모션 감소 모드: Morph 애니메이션 대신 즉시 상태 전환