--- name: config_dump kind: function lang: go domain: infra version: "1.0.0" purity: pure signature: "func ConfigDump(cfg any) map[string]string" description: "Convierte una struct de configuracion a map[string]string para logging o inspeccion. Campos con tag secret:\"true\" aparecen como \"***\". Solo campos exportados de nivel superior." tags: [config, dump, debug, logging, infra, reflect] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "" imports: [fmt, reflect] params: - name: cfg desc: "struct de configuracion (valor o puntero) cuyos campos exportados se van a serializar a strings" output: "mapa string→string con cada campo exportado; valores secretos reemplazados con ***" tested: true tests: - "campos normales se incluyen como string" - "campos secret aparecen como tres asteriscos" - "campos no exportados no aparecen" - "puntero a struct funciona" - "struct con bool y float se formatean correctamente" test_file_path: "functions/infra/config_dump_test.go" file_path: "functions/infra/config_dump.go" --- ## Ejemplo ```go type AppConfig struct { Host string Port int APIKey string `secret:"true"` } cfg := AppConfig{Host: "localhost", Port: 8080, APIKey: "sk-abc123"} dump := ConfigDump(cfg) // dump = {"Host": "localhost", "Port": "8080", "APIKey": "***"} log.Printf("startup config: %v", dump) ``` ## Notas Funcion pura. Usa fmt.Sprintf("%v") para formatear todos los tipos. No desciende a structs anidados. Util para logging seguro de configuracion al inicio de una app.