{"ok":true,"generatedAt":"2026-08-12T19:16:30.850Z","dateWindow":{"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","rawActualObservedLatestDate":"2026-08-11","observedBoundaryWarning":null,"observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-27","forecastCoverageDays":15},"dateStatus":{"productKey":null,"refreshedAt":"2026-08-11 21:31:15.578687+00","updatedAt":"2026-08-11 21:31:15.578687+00","timezone":"Asia/Shanghai","today":"2026-08-13","observedTargetDate":"2026-08-12","latestObservedDate":"2026-08-11","observedLagDays":1,"forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestForecastStartDate":"2026-08-13","latestForecastEndDate":"2026-08-26","forecastGapDays":1,"forecastMissingDates":["2026-08-27"],"observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"autoUpdateTriggered":false,"lastUpdateError":null,"observed":{"latestObservedDate":"2026-08-11","expectedObservedDate":"2026-08-12","lagDays":1,"status":"lagging","legacyFreshness":"lagged","label":"实况滞后 1 天","sourceBreakdown":[{"metric":"temperature_precip_observed","latestDate":"2026-08-11","provider":"weather_daily_observations/weather_product_daily_aggregates"},{"metric":"soil_moisture","latestDate":"2026-08-07","provider":"nasa_power","expectedLagDays":4,"status":"provider-latest"},{"metric":"forecast","latestDate":"2026-08-26","provider":"open_meteo","status":"complete"}]},"forecast":{"latestIssuedAt":"2026-08-12 00:00:00+00","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","expectedForecastStartDate":"2026-08-13","expectedForecastEndDate":"2026-08-27","dayCount":14,"expectedDayCount":15,"status":"partial","label":"预报部分缺失","missingDates":["2026-08-27"]},"soilMoisture":{"provider":"nasa_power","latestAvailableDate":"2026-08-07","expectedLagDays":4,"freshnessStatus":"provider-latest","forecastDisplay":false,"label":"土壤水分：nasa_power，最新至 2026-08-07"}},"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","forecastCoverageDays":14,"observedStatus":"lagging","observedLagDays":1,"forecastDayCount":14,"latestForecastIssuedAt":"2026-08-12 00:00:00+00","refreshedAt":"2026-08-11 21:31:15.578687+00","lastSuccessfulRun":{"id":380,"provider":"open_meteo_forecast","productKey":null,"status":"success","startedAt":"2026-08-11 21:30:24.435997+00","finishedAt":"2026-08-11 21:30:26.362996+00","insertedRows":30,"updatedRows":null,"failedRows":0,"availableFields":["id","provider","product_key","status","started_at","finished_at","records_written","forecast_records_written","failure_count"],"schemaGaps":["weather_ingestion_runs 暂无 updated_rows；records_written/forecast_records_written 表示 upsert 写入量。"]},"recentObservedReconcile":{"id":378,"status":"success","startedAt":"2026-08-11 21:28:58.27427+00","finishedAt":"2026-08-11 21:29:06.458633+00","insertedRows":21,"updatedRows":0,"unchangedRows":63,"skippedProviderNullCount":63,"suspiciousRows":0,"failedRows":0,"recentObservedWindowStart":"2026-08-05","recentObservedWindowEnd":"2026-08-11","observedTargetDate":"2026-08-11","postMissingObservedRows":0},"meta":{"dateWindow":{"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","rawActualObservedLatestDate":"2026-08-11","observedBoundaryWarning":null,"observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-27","forecastCoverageDays":15},"dateStatus":{"productKey":null,"refreshedAt":"2026-08-11 21:31:15.578687+00","updatedAt":"2026-08-11 21:31:15.578687+00","timezone":"Asia/Shanghai","today":"2026-08-13","observedTargetDate":"2026-08-12","latestObservedDate":"2026-08-11","observedLagDays":1,"forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestForecastStartDate":"2026-08-13","latestForecastEndDate":"2026-08-26","forecastGapDays":1,"forecastMissingDates":["2026-08-27"],"observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"autoUpdateTriggered":false,"lastUpdateError":null,"observed":{"latestObservedDate":"2026-08-11","expectedObservedDate":"2026-08-12","lagDays":1,"status":"lagging","legacyFreshness":"lagged","label":"实况滞后 1 天","sourceBreakdown":[{"metric":"temperature_precip_observed","latestDate":"2026-08-11","provider":"weather_daily_observations/weather_product_daily_aggregates"},{"metric":"soil_moisture","latestDate":"2026-08-07","provider":"nasa_power","expectedLagDays":4,"status":"provider-latest"},{"metric":"forecast","latestDate":"2026-08-26","provider":"open_meteo","status":"complete"}]},"forecast":{"latestIssuedAt":"2026-08-12 00:00:00+00","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","expectedForecastStartDate":"2026-08-13","expectedForecastEndDate":"2026-08-27","dayCount":14,"expectedDayCount":15,"status":"partial","label":"预报部分缺失","missingDates":["2026-08-27"]},"soilMoisture":{"provider":"nasa_power","latestAvailableDate":"2026-08-07","expectedLagDays":4,"freshnessStatus":"provider-latest","forecastDisplay":false,"label":"土壤水分：nasa_power，最新至 2026-08-07"}},"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","forecastCoverageDays":14,"observedStatus":"lagging","observedLagDays":1,"forecastDayCount":14,"latestForecastIssuedAt":"2026-08-12 00:00:00+00","refreshedAt":"2026-08-11 21:31:15.578687+00","productCount":7,"locationCount":132,"configuredProductCount":7,"configuredLocationCount":132,"databaseProductCount":7,"databaseLocationCount":132,"rawObservationRows":224592,"dailyObservationRows":562656,"aggregateDailyRows":29687,"actualRowCount":29687,"actualRowCountDeprecated":true,"forecastRowCount":1848,"forecastRows":1848,"forecastFutureDays":14,"historyStartDate":"2015-01-01","historyEndDate":"2026-08-11","aggregateStartDate":"2015-01-01","aggregateEndDate":"2026-08-11","aggregateUpdatedAt":"2026-08-11 21:31:15.578687+00","nasaActualDate":"2026-08-11","bridgeLatestDate":"2026-08-11","actualForecastEndDate":"2026-08-26","forecastCoverage":{"provider":"open_meteo","status":"complete","expectedDays":14,"expectedRows":1848,"actualRows":1848,"missingRows":0,"affectedProducts":[],"affectedLocations":[],"affectedDates":[],"products":[]},"soilMoisture":{"metricGroup":"soil_moisture","provider":"nasa_power","soilProvider":"nasa_power","displaySource":"NASA POWER","expectedLatestDate":"2026-08-08","latestAvailableDate":"2026-08-07","soilLatestOfficialDate":"2026-08-07","soilLatestAnyDate":"2026-08-07","providerLatestDate":"2026-08-07","providerReturnedMaxDate":"2026-08-07","expectedLagDays":4,"soilLagDays":4,"freshnessStatus":"provider-latest","status":"warning","forecastDisplay":false,"forecastDisplayEnabled":false,"soilForecastEnabled":false,"soilForecastDisplay":{"enabled":false,"reason":"sample-aligned; soil moisture seasonal charts use NASA observed rows only"},"nonNasaSourcesExcluded":true,"soilAuxiliaryProvidersExcluded":["open_meteo","open_meteo_archive"],"sourceLagNormal":false,"cutoffRule":"soil moisture uses NASA POWER observed rows only; latestAvailableDate = min(currentDate - 4 days, NASA provider returned max date)"},"soilMoistureConsistency":{"metricGroup":"soil_moisture","provider":"nasa_power","expectedLatestDate":"2026-08-08","latestAvailableDate":"2026-08-07","providerLatestDate":"2026-08-07","providerReturnedMaxDate":"2026-08-07","expectedLagDays":4,"freshnessStatus":"provider-latest","displaySource":"NASA POWER","soilForecastDisplay":{"enabled":false,"reason":"sample-aligned; soil moisture seasonal charts use NASA observed rows only"},"forecastDisplay":false,"nonNasaSourcesExcluded":true,"sourceLagNormal":false,"invalidFutureRows":84,"forecastMixedIntoObserved":false,"cropsConsistent":false,"status":"warning","generatedAt":"2026-08-12T19:16:27.989Z","products":[{"cropKey":"apple","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":118356,"nasaRows":118356,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"coffee","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":151458,"nasaRows":151458,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"cotton","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":176694,"nasaRows":176694,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"jujube","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":84540,"nasaRows":84540,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"peanut","earliestDate":"2015-01-01","latestDate":"2026-08-07","nasaLatestDate":"2026-08-07","nonNasaLatestDate":null,"latestAvailableDate":"2026-08-06","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-08-07","source":"nasa_power, open_meteo, open_meteo_archive","sources":["nasa_power","open_meteo","open_meteo_archive"],"totalRows":356076,"nasaRows":355908,"nonNasaRows":168,"filledRows":0,"forecastSoilRows":315,"forecastSoilRange":{"start":"2026-07-01","end":"2026-07-15"},"rowsAfterProviderLatest":84,"nasaRowsAfterProviderLatest":84,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":false,"notes":["soil-date-exceeds-provider-latest","non-nasa-soil-observed","forecast-soil-present-not-displayed"]},{"cropKey":"rubber","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power, open_meteo, open_meteo_archive","sources":["nasa_power","open_meteo","open_meteo_archive"],"totalRows":679360,"nasaRows":672000,"nonNasaRows":7360,"filledRows":0,"forecastSoilRows":600,"forecastSoilRange":{"start":"2026-07-01","end":"2026-07-15"},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":["non-nasa-soil-observed","forecast-soil-present-not-displayed"]},{"cropKey":"soybean","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":67344,"nasaRows":67344,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]}]},"updateSchedule":{"generatedAt":"2026-08-12T19:16:26.467Z","dataMode":"configuration-preview","forecast":[{"provider":"open_meteo","datasetKey":"weather_forecast","productKey":null,"indicatorCode":null,"frequency":"daily-3x","expectedUpdateTime":"06:00,13:00,19:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":20,"checksum":null,"rowCount":0,"updatedAt":null}],"dailyObservation":[{"provider":"open_meteo","datasetKey":"weather_daily_observation","productKey":null,"indicatorCode":null,"frequency":"daily","expectedUpdateTime":"06:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":20,"checksum":null,"rowCount":0,"updatedAt":null}],"soilMoisture":[{"provider":"nasa_power","datasetKey":"weather_soil_moisture","productKey":null,"indicatorCode":null,"frequency":"daily-3x-source-lag","expectedUpdateTime":"07:30,12:00,18:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T23:30:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":10,"checksum":null,"rowCount":0,"updatedAt":null}],"retryQueue":[],"nextFetchSchedule":[{"provider":"open_meteo","datasetKey":"weather_forecast","productKey":null,"frequency":"daily-3x","expectedUpdateTimes":["06:00","13:00","19:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfterHours":10},{"provider":"open_meteo","datasetKey":"weather_daily_observation","productKey":null,"frequency":"daily","expectedUpdateTimes":["06:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfterHours":30},{"provider":"nasa_power","datasetKey":"weather_soil_moisture","productKey":null,"frequency":"daily-3x-source-lag","expectedUpdateTimes":["07:30","12:00","18:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T23:30:00.000Z","staleAfterHours":120}],"retryPolicy":{"schedule":["15m","45m","2h","6h"],"degradedAfterFailures":5,"rateLimitBehavior":"HTTP 429 必须遵守 Retry-After；若缺失 Retry-After，使用 6h 退避。","permanentFailures":["HTTP_404","SYMBOL_NOT_FOUND","PERMISSION_DENIED"]}},"rowSemantics":{"rawObservationRows":"weather_raw_observations provider metric rows","dailyObservationRows":"weather_daily_observations location-date rows","aggregateDailyRows":"weather_product_daily_aggregates product-date rows","forecastRows":"weather_forecasts location-date forecast rows","actualRowCount":"deprecated alias of aggregateDailyRows"},"warningCount":0,"warnings":[],"cached":false,"degradedReason":null,"lastSuccessfulRun":{"id":380,"provider":"open_meteo_forecast","productKey":null,"status":"success","startedAt":"2026-08-11 21:30:24.435997+00","finishedAt":"2026-08-11 21:30:26.362996+00","insertedRows":30,"updatedRows":null,"failedRows":0,"availableFields":["id","provider","product_key","status","started_at","finished_at","records_written","forecast_records_written","failure_count"],"schemaGaps":["weather_ingestion_runs 暂无 updated_rows；records_written/forecast_records_written 表示 upsert 写入量。"]},"recentObservedReconcile":{"id":378,"status":"success","startedAt":"2026-08-11 21:28:58.27427+00","finishedAt":"2026-08-11 21:29:06.458633+00","insertedRows":21,"updatedRows":0,"unchangedRows":63,"skippedProviderNullCount":63,"suspiciousRows":0,"failedRows":0,"recentObservedWindowStart":"2026-08-05","recentObservedWindowEnd":"2026-08-11","observedTargetDate":"2026-08-11","postMissingObservedRows":0}},"products":[{"crop":"apple","cropName":"苹果","locationCount":14,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:23:45.260175+00","locationsWithLatestDaily":14,"locationsWithLatestForecast":14,"locationsWithLatestSoil":14,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"coffee","cropName":"咖啡","locationCount":18,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 01:13:32.44736+00","locationsWithLatestDaily":18,"locationsWithLatestForecast":18,"locationsWithLatestSoil":18,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"cotton","cropName":"棉花","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-10 22:18:46.216997+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"jujube","cropName":"红枣","locationCount":10,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 16:12:14.212899+00","locationsWithLatestDaily":10,"locationsWithLatestForecast":10,"locationsWithLatestSoil":10,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"peanut","cropName":"花生","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-08-08","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 16:17:10.808012+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"rubber","cropName":"橡胶","locationCount":40,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 17:30:46.947988+00","locationsWithLatestDaily":40,"locationsWithLatestForecast":40,"locationsWithLatestSoil":40,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"soybean","cropName":"豆一","locationCount":8,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:28:59.514082+00","locationsWithLatestDaily":8,"locationsWithLatestForecast":8,"locationsWithLatestSoil":8,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"}],"updateState":{"status":"ready","label":"就绪","dataMode":"database","providerFailuresActive":0,"updateScheduleStatus":[{"provider":"open_meteo","status":"waiting","lastAttemptAt":null,"lastSuccessAt":null,"activeFailures":0,"nextFetchAt":"2026-08-12T22:00:00.000Z","retryAfter":null},{"provider":"open_meteo","status":"waiting","lastAttemptAt":null,"lastSuccessAt":null,"activeFailures":0,"nextFetchAt":"2026-08-12T22:00:00.000Z","retryAfter":null},{"provider":"nasa_power","status":"waiting","lastAttemptAt":null,"lastSuccessAt":null,"activeFailures":0,"nextFetchAt":"2026-08-12T23:30:00.000Z","retryAfter":null}]},"cropWeather":{"status":"ready","dataMode":"database","dateWindow":{"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","rawActualObservedLatestDate":"2026-08-11","observedBoundaryWarning":null,"observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-27","forecastCoverageDays":15},"dateStatus":{"productKey":null,"refreshedAt":"2026-08-11 21:31:15.578687+00","updatedAt":"2026-08-11 21:31:15.578687+00","timezone":"Asia/Shanghai","today":"2026-08-13","observedTargetDate":"2026-08-12","latestObservedDate":"2026-08-11","observedLagDays":1,"forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestForecastStartDate":"2026-08-13","latestForecastEndDate":"2026-08-26","forecastGapDays":1,"forecastMissingDates":["2026-08-27"],"observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"autoUpdateTriggered":false,"lastUpdateError":null,"observed":{"latestObservedDate":"2026-08-11","expectedObservedDate":"2026-08-12","lagDays":1,"status":"lagging","legacyFreshness":"lagged","label":"实况滞后 1 天","sourceBreakdown":[{"metric":"temperature_precip_observed","latestDate":"2026-08-11","provider":"weather_daily_observations/weather_product_daily_aggregates"},{"metric":"soil_moisture","latestDate":"2026-08-07","provider":"nasa_power","expectedLagDays":4,"status":"provider-latest"},{"metric":"forecast","latestDate":"2026-08-26","provider":"open_meteo","status":"complete"}]},"forecast":{"latestIssuedAt":"2026-08-12 00:00:00+00","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","expectedForecastStartDate":"2026-08-13","expectedForecastEndDate":"2026-08-27","dayCount":14,"expectedDayCount":15,"status":"partial","label":"预报部分缺失","missingDates":["2026-08-27"]},"soilMoisture":{"provider":"nasa_power","latestAvailableDate":"2026-08-07","expectedLagDays":4,"freshnessStatus":"provider-latest","forecastDisplay":false,"label":"土壤水分：nasa_power，最新至 2026-08-07"}},"today":"2026-08-13","timezone":"Asia/Shanghai","expectedObservedLatestDate":"2026-08-12","actualObservedLatestDate":"2026-08-11","observedFreshness":"lagged","forecastStartDate":"2026-08-13","forecastEndDate":"2026-08-26","forecastCoverageDays":14,"observedStatus":"lagging","observedLagDays":1,"forecastDayCount":14,"latestForecastIssuedAt":"2026-08-12 00:00:00+00","refreshedAt":"2026-08-11 21:31:15.578687+00","products":7,"productCount":7,"locations":132,"locationCount":132,"configuredProducts":7,"configuredProductCount":7,"configuredLocations":132,"configuredLocationCount":132,"databaseProducts":7,"databaseProductCount":7,"databaseLocations":132,"databaseLocationCount":132,"rawObservationRows":224592,"dailyObservationRows":562656,"aggregateDailyRows":29687,"actualRowCount":29687,"actualRowCountDeprecated":true,"forecastRows":1848,"forecastRowCount":1848,"forecastFutureDays":14,"historyStartDate":"2015-01-01","historyEndDate":"2026-08-11","aggregateStartDate":"2015-01-01","aggregateEndDate":"2026-08-11","aggregateUpdatedAt":"2026-08-11 21:31:15.578687+00","nasaActualDate":"2026-08-11","bridgeLatestDate":"2026-08-11","latestRun":{"id":380,"provider":"open_meteo_forecast","productKey":null,"status":"success","startedAt":"2026-08-11 21:30:24.435997+00","finishedAt":"2026-08-11 21:30:26.362996+00","insertedRows":30,"updatedRows":null,"failedRows":0,"availableFields":["id","provider","product_key","status","started_at","finished_at","records_written","forecast_records_written","failure_count"],"schemaGaps":["weather_ingestion_runs 暂无 updated_rows；records_written/forecast_records_written 表示 upsert 写入量。"]},"lastSuccessfulRun":{"id":380,"provider":"open_meteo_forecast","productKey":null,"status":"success","startedAt":"2026-08-11 21:30:24.435997+00","finishedAt":"2026-08-11 21:30:26.362996+00","insertedRows":30,"updatedRows":null,"failedRows":0,"availableFields":["id","provider","product_key","status","started_at","finished_at","records_written","forecast_records_written","failure_count"],"schemaGaps":["weather_ingestion_runs 暂无 updated_rows；records_written/forecast_records_written 表示 upsert 写入量。"]},"providerFailuresCount":0,"failureCount":0,"forecastEnd":"2026-08-26","actualForecastEndDate":"2026-08-26","forecastCoverage":{"provider":"open_meteo","status":"complete","expectedDays":14,"expectedRows":1848,"actualRows":1848,"missingRows":0,"affectedProducts":[],"affectedLocations":[],"affectedDates":[],"products":[]},"soilMoisture":{"metricGroup":"soil_moisture","provider":"nasa_power","soilProvider":"nasa_power","displaySource":"NASA POWER","expectedLatestDate":"2026-08-08","latestAvailableDate":"2026-08-07","soilLatestOfficialDate":"2026-08-07","soilLatestAnyDate":"2026-08-07","providerLatestDate":"2026-08-07","providerReturnedMaxDate":"2026-08-07","expectedLagDays":4,"soilLagDays":4,"freshnessStatus":"provider-latest","status":"warning","forecastDisplay":false,"forecastDisplayEnabled":false,"soilForecastEnabled":false,"soilForecastDisplay":{"enabled":false,"reason":"sample-aligned; soil moisture seasonal charts use NASA observed rows only"},"nonNasaSourcesExcluded":true,"soilAuxiliaryProvidersExcluded":["open_meteo","open_meteo_archive"],"sourceLagNormal":false,"cutoffRule":"soil moisture uses NASA POWER observed rows only; latestAvailableDate = min(currentDate - 4 days, NASA provider returned max date)"},"soilMoistureConsistency":{"metricGroup":"soil_moisture","provider":"nasa_power","expectedLatestDate":"2026-08-08","latestAvailableDate":"2026-08-07","providerLatestDate":"2026-08-07","providerReturnedMaxDate":"2026-08-07","expectedLagDays":4,"freshnessStatus":"provider-latest","displaySource":"NASA POWER","soilForecastDisplay":{"enabled":false,"reason":"sample-aligned; soil moisture seasonal charts use NASA observed rows only"},"forecastDisplay":false,"nonNasaSourcesExcluded":true,"sourceLagNormal":false,"invalidFutureRows":84,"forecastMixedIntoObserved":false,"cropsConsistent":false,"status":"warning","generatedAt":"2026-08-12T19:16:27.989Z","products":[{"cropKey":"apple","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":118356,"nasaRows":118356,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"coffee","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":151458,"nasaRows":151458,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"cotton","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":176694,"nasaRows":176694,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"jujube","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":84540,"nasaRows":84540,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]},{"cropKey":"peanut","earliestDate":"2015-01-01","latestDate":"2026-08-07","nasaLatestDate":"2026-08-07","nonNasaLatestDate":null,"latestAvailableDate":"2026-08-06","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-08-07","source":"nasa_power, open_meteo, open_meteo_archive","sources":["nasa_power","open_meteo","open_meteo_archive"],"totalRows":356076,"nasaRows":355908,"nonNasaRows":168,"filledRows":0,"forecastSoilRows":315,"forecastSoilRange":{"start":"2026-07-01","end":"2026-07-15"},"rowsAfterProviderLatest":84,"nasaRowsAfterProviderLatest":84,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":false,"notes":["soil-date-exceeds-provider-latest","non-nasa-soil-observed","forecast-soil-present-not-displayed"]},{"cropKey":"rubber","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power, open_meteo, open_meteo_archive","sources":["nasa_power","open_meteo","open_meteo_archive"],"totalRows":679360,"nasaRows":672000,"nonNasaRows":7360,"filledRows":0,"forecastSoilRows":600,"forecastSoilRange":{"start":"2026-07-01","end":"2026-07-15"},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":["non-nasa-soil-observed","forecast-soil-present-not-displayed"]},{"cropKey":"soybean","earliestDate":"2015-01-01","latestDate":"2026-07-10","nasaLatestDate":"2026-07-10","nonNasaLatestDate":null,"latestAvailableDate":"2026-07-10","expectedLatestDate":"2026-08-08","providerLatestDate":"2026-07-10","source":"nasa_power","sources":["nasa_power"],"totalRows":67344,"nasaRows":67344,"nonNasaRows":0,"filledRows":0,"forecastSoilRows":0,"forecastSoilRange":{"start":null,"end":null},"rowsAfterProviderLatest":0,"nasaRowsAfterProviderLatest":0,"multiSourceConflictDays":0,"hasForecastMixedIntoObserved":false,"forecastLikeObservedRows":0,"invalidFutureRows":0,"isConsistentWithProviderLatest":true,"notes":[]}]},"updateSchedule":{"generatedAt":"2026-08-12T19:16:26.467Z","dataMode":"configuration-preview","forecast":[{"provider":"open_meteo","datasetKey":"weather_forecast","productKey":null,"indicatorCode":null,"frequency":"daily-3x","expectedUpdateTime":"06:00,13:00,19:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":20,"checksum":null,"rowCount":0,"updatedAt":null}],"dailyObservation":[{"provider":"open_meteo","datasetKey":"weather_daily_observation","productKey":null,"indicatorCode":null,"frequency":"daily","expectedUpdateTime":"06:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":20,"checksum":null,"rowCount":0,"updatedAt":null}],"soilMoisture":[{"provider":"nasa_power","datasetKey":"weather_soil_moisture","productKey":null,"indicatorCode":null,"frequency":"daily-3x-source-lag","expectedUpdateTime":"07:30,12:00,18:00","timezone":"Asia/Shanghai","lastAttemptAt":null,"lastSuccessAt":null,"latestDataDate":null,"nextFetchAt":"2026-08-12T23:30:00.000Z","staleAfter":null,"retryCount":0,"retryAfter":null,"status":"waiting","failureReason":"weather update-status schedule read exceeded 1500ms","sourcePriority":10,"checksum":null,"rowCount":0,"updatedAt":null}],"retryQueue":[],"nextFetchSchedule":[{"provider":"open_meteo","datasetKey":"weather_forecast","productKey":null,"frequency":"daily-3x","expectedUpdateTimes":["06:00","13:00","19:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfterHours":10},{"provider":"open_meteo","datasetKey":"weather_daily_observation","productKey":null,"frequency":"daily","expectedUpdateTimes":["06:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T22:00:00.000Z","staleAfterHours":30},{"provider":"nasa_power","datasetKey":"weather_soil_moisture","productKey":null,"frequency":"daily-3x-source-lag","expectedUpdateTimes":["07:30","12:00","18:00"],"timezone":"Asia/Shanghai","nextFetchAt":"2026-08-12T23:30:00.000Z","staleAfterHours":120}],"retryPolicy":{"schedule":["15m","45m","2h","6h"],"degradedAfterFailures":5,"rateLimitBehavior":"HTTP 429 必须遵守 Retry-After；若缺失 Retry-After，使用 6h 退避。","permanentFailures":["HTTP_404","SYMBOL_NOT_FOUND","PERMISSION_DENIED"]}},"productFreshness":[{"crop":"apple","cropName":"苹果","locationCount":14,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:23:45.260175+00","locationsWithLatestDaily":14,"locationsWithLatestForecast":14,"locationsWithLatestSoil":14,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"coffee","cropName":"咖啡","locationCount":18,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 01:13:32.44736+00","locationsWithLatestDaily":18,"locationsWithLatestForecast":18,"locationsWithLatestSoil":18,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"cotton","cropName":"棉花","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-10 22:18:46.216997+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"jujube","cropName":"红枣","locationCount":10,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 16:12:14.212899+00","locationsWithLatestDaily":10,"locationsWithLatestForecast":10,"locationsWithLatestSoil":10,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"peanut","cropName":"花生","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-08-08","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 16:17:10.808012+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"rubber","cropName":"橡胶","locationCount":40,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 17:30:46.947988+00","locationsWithLatestDaily":40,"locationsWithLatestForecast":40,"locationsWithLatestSoil":40,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"soybean","cropName":"豆一","locationCount":8,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:28:59.514082+00","locationsWithLatestDaily":8,"locationsWithLatestForecast":8,"locationsWithLatestSoil":8,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"}],"freshness":[{"crop":"apple","cropName":"苹果","locationCount":14,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:23:45.260175+00","locationsWithLatestDaily":14,"locationsWithLatestForecast":14,"locationsWithLatestSoil":14,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"coffee","cropName":"咖啡","locationCount":18,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 01:13:32.44736+00","locationsWithLatestDaily":18,"locationsWithLatestForecast":18,"locationsWithLatestSoil":18,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"cotton","cropName":"棉花","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-10 22:18:46.216997+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"jujube","cropName":"红枣","locationCount":10,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-12 16:12:14.212899+00","locationsWithLatestDaily":10,"locationsWithLatestForecast":10,"locationsWithLatestSoil":10,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"peanut","cropName":"花生","locationCount":21,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-08-08","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 16:17:10.808012+00","locationsWithLatestDaily":21,"locationsWithLatestForecast":21,"locationsWithLatestSoil":21,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"rubber","cropName":"橡胶","locationCount":40,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 17:30:46.947988+00","locationsWithLatestDaily":40,"locationsWithLatestForecast":40,"locationsWithLatestSoil":40,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"},{"crop":"soybean","cropName":"豆一","locationCount":8,"observedTargetDate":"2026-08-12","forecastStartDate":"2026-08-13","forecastEndExpected":"2026-08-27","latestObservedDate":"2026-08-11","latestDailyObservationDate":"2026-08-11","latestForecastDate":"2026-08-26","latestForecastEndDate":"2026-08-26","latestNasaSoilDate":"2026-07-10","latestOpenMeteoDate":"2026-08-11","latestAggregateDate":"2026-08-11","latestSnapshotDate":"2026-08-11 22:28:59.514082+00","locationsWithLatestDaily":8,"locationsWithLatestForecast":8,"locationsWithLatestSoil":8,"missingLocations":{"observed":0,"forecast":0,"soil":0},"observedStatus":"lagging","forecastStatus":"partial","observedReady":false,"forecastReady":false,"needsObservedUpdate":true,"needsForecastUpdate":true,"providerFailures":0,"failedProviders":0,"staleReason":"observed target 2026-08-12; forecast target 2026-08-27"}],"rowSemantics":{"rawObservationRows":"weather_raw_observations provider metric rows","dailyObservationRows":"weather_daily_observations location-date rows","aggregateDailyRows":"weather_product_daily_aggregates product-date rows","forecastRows":"weather_forecasts location-date forecast rows","actualRowCount":"deprecated alias of aggregateDailyRows"},"qualityWarnings":[],"warnings":[],"recentObservedReconcile":{"id":378,"status":"success","startedAt":"2026-08-11 21:28:58.27427+00","finishedAt":"2026-08-11 21:29:06.458633+00","insertedRows":21,"updatedRows":0,"unchangedRows":63,"skippedProviderNullCount":63,"suspiciousRows":0,"failedRows":0,"recentObservedWindowStart":"2026-08-05","recentObservedWindowEnd":"2026-08-11","observedTargetDate":"2026-08-11","postMissingObservedRows":0}}}