Changelog
The KMA provider now models the data.go.kr success envelope and KMA category codes more strictly at the provider boundary. Successful upstream responses must include the expected envelope, forecast items, known KMA category codes, and valid KMA compact base/forecast timestamps before APIFuse emits normalized ISO timestamps.
Existing valid KMA short-forecast inputs now use snake_case grid_x/grid_y plus optional base_date and base_time; weather-by-address keeps address and uses optional base_date/base_time; mid-forecast uses region_id plus optional ISO tm_fc. Stop sending legacy camelCase or upstream-style request keys such as gridX, gridY, baseDate, baseTime, regionId, tmFc, pageNo, numOfRows, or regId. Clients that validate or exhaustively switch on short-forecast precipitation_type or sky should use the documented normalized values: precipitation_type is none, rain, sleet, snow, or null; sky is clear, mostly_cloudy, overcast, or null. Mid-forecast clients should read relative forecast slots from day_offset and normalized temperature fields such as min_temperature/max_temperature rather than inferred calendar dates or legacy taMin/taMax-style fields. Treat UPSTREAM_SCHEMA_ERROR as an upstream contract drift signal rather than a no-data response.