-- Add calculate_planetary_events task to the scheduled tasks -- This task will calculate planetary events (conjunctions, oppositions) using Skyfield -- Example 1: Calculate events for all major planets (365 days ahead) INSERT INTO tasks (name, description, category, parameters, status, schedule_config) VALUES ( 'calculate_planetary_events', '计算太阳系主要天体的合、冲等事件(每周执行一次)', 'data_sync', '{ "days_ahead": 365, "clean_old_events": true, "calculate_close_approaches": false }'::json, 'active', '{ "type": "cron", "cron": "0 2 * * 0" }'::json ) ON CONFLICT (name) DO UPDATE SET parameters = EXCLUDED.parameters, schedule_config = EXCLUDED.schedule_config; -- Example 2: Calculate events for inner planets only (30 days ahead, with close approaches) -- INSERT INTO tasks (name, description, category, parameters, status, schedule_config) -- VALUES ( -- 'calculate_inner_planetary_events', -- '计算内行星事件(包括近距离接近)', -- 'data_sync', -- '{ -- "body_ids": ["199", "299", "399", "499"], -- "days_ahead": 30, -- "clean_old_events": true, -- "calculate_close_approaches": true, -- "threshold_degrees": 5.0 -- }'::json, -- 'active', -- '{ -- "type": "cron", -- "cron": "0 3 * * *" -- }'::json -- ) -- ON CONFLICT (name) DO NOTHING; -- Query to check the task was added SELECT id, name, description, status, parameters, schedule_config FROM tasks WHERE name = 'calculate_planetary_events'; -- Query to view calculated events -- SELECT -- ce.id, -- ce.title, -- ce.event_type, -- ce.event_time, -- cb.name as body_name, -- ce.details, -- ce.created_at -- FROM celestial_events ce -- JOIN celestial_bodies cb ON ce.body_id = cb.id -- WHERE ce.source = 'skyfield_calculation' -- ORDER BY ce.event_time;