From abb45a13ec576026b7e17dbe6162161e1639d518 Mon Sep 17 00:00:00 2001 From: yarnom Date: Tue, 28 Oct 2025 09:40:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=9B=BA=E5=AE=9A24=E5=88=86=E7=9A=84?= =?UTF-8?q?=E9=9B=B7=E8=BE=BE=E6=95=B0=E6=8D=AE=E7=93=A6=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/service-splitarea/main.go | 37 +++++++++-------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/cmd/service-splitarea/main.go b/cmd/service-splitarea/main.go index e95684f..80deba2 100644 --- a/cmd/service-splitarea/main.go +++ b/cmd/service-splitarea/main.go @@ -2,7 +2,6 @@ package main import ( "context" - "database/sql" "encoding/csv" "encoding/json" "errors" @@ -186,30 +185,13 @@ func job(ctx context.Context, z, y, x int, bounds string, tzOffset int, outDir s } runAt = runAt.In(loc) - // Prefer current hour's :30 tile, fallback to :24 then :00 if missing. - targetBase := runAt.Truncate(time.Hour) - candidates := []int{30, 24, 0} - var ( - targetLocal time.Time - rec *radarTileRecord - ) - for _, minute := range candidates { - candidate := targetBase.Add(time.Duration(minute) * time.Minute) - tile, err := getRadarTileAt(ctx, z, y, x, candidate) - if err == nil { - if minute != candidates[0] { - log.Printf("[splitarea] fallback to %02d-minute radar tile at %s", minute, candidate.Format("2006-01-02 15:04:05")) - } - targetLocal = candidate - rec = tile - break - } - if !errors.Is(err, sql.ErrNoRows) { - return fmt.Errorf("load radar tile z=%d y=%d x=%d at %s: %w", z, y, x, candidate.Format("2006-01-02 15:04:05"), err) - } - } - if rec == nil { - return fmt.Errorf("no radar tile found for z=%d y=%d x=%d near %s (checked minutes %v)", z, y, x, targetBase.Format("2006-01-02 15:04:05"), candidates) + // Current hour's :30 + targetLocal := runAt.Truncate(time.Hour).Add(24 * time.Minute) + + // Fetch tile + rec, err := getRadarTileAt(ctx, z, y, x, targetLocal) + if err != nil { + return fmt.Errorf("load radar tile z=%d y=%d x=%d at %s: %w", z, y, x, targetLocal.Format("2006-01-02 15:04:05"), err) } // Bounds @@ -245,11 +227,10 @@ func job(ctx context.Context, z, y, x int, bounds string, tzOffset int, outDir s return fmt.Errorf("invalid tile data") } - // Prepare output dir: export_data/split_area/YYYYMMDD/HH/mm + // Prepare output dir: export_data/split_area/YYYYMMDD/HH/30 (keep legacy minute path) ymd := targetLocal.Format("20060102") hh := targetLocal.Format("15") - mm := targetLocal.Format("04") - dir := filepath.Join(outDir, ymd, hh, mm) + dir := filepath.Join(outDir, ymd, hh, "30") if err := os.MkdirAll(dir, 0o755); err != nil { return err }