--- name: cron_explain kind: function lang: go domain: core version: "1.0.0" purity: pure signature: "func CronExplain(expr string) string" description: "Convierte una expresion cron (5 campos o shortcut @daily/@hourly/etc.) en una frase humana corta. Reconoce patrones comunes: every N minutes/hours, daily/weekdays at HH:MM, y shortcuts. Devuelve el expr crudo si no encaja en ningun patron. Sin dependencias externas, solo stdlib." tags: ["cron", "scheduler", "humanize"] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: ["fmt", "strconv", "strings"] tested: true tests: - "every 15 minutes" - "daily at 00:00" - "weekdays at 09:00" - "every 30 minutes" - "every 2 hours" - "shortcut @hourly" - "shortcut @daily" - "shortcut @weekly" - "shortcut @monthly" - "unknown returns raw" - "invalid too few fields" - "every minute" - "daily at 14:30" - "every hour zero min" - "shortcut @midnight" - "weekdays at 08:00" test_file_path: "functions/core/cron_explain_test.go" file_path: "functions/core/cron_explain.go" params: - name: expr desc: "Expresion cron de 5 campos (min hora dom mes dow) o shortcut (@hourly, @daily, @weekly, @monthly, @yearly). Se ignoran campos extra (6to campo segundos/year)." output: "Frase legible en ingles: 'every N minutes', 'daily at HH:MM', 'weekdays at HH:MM', 'hourly', 'daily', 'weekly', 'monthly'. Devuelve expr sin modificar si el patron no es reconocido." --- ## Ejemplo ```go fmt.Println(CronExplain("*/15 * * * *")) // every 15 minutes fmt.Println(CronExplain("0 0 * * *")) // daily at 00:00 fmt.Println(CronExplain("0 9 * * 1-5")) // weekdays at 09:00 fmt.Println(CronExplain("*/30 * * * *")) // every 30 minutes fmt.Println(CronExplain("0 */2 * * *")) // every 2 hours fmt.Println(CronExplain("@hourly")) // hourly fmt.Println(CronExplain("5 4 * * 0")) // 5 4 * * 0 (not recognized, returned raw) ``` ## Cuando usarla Cuando necesites mostrar al usuario una descripcion legible de un schedule cron en una UI, log o CLI. Antes de renderizar un campo `cron_expr` en un dashboard o TUI. ## Gotchas Funcion pura — nunca falla ni entra en panico. Patrones reconocidos son los comunes; expresiones con listas (`1,3,5`), rangos en horas, o combinaciones complejas devuelven el expr crudo sin error.