- jiraConfig: campos IssueType + LabelsMap (kanban col -> labels Jira). Default
IssueType='Tarea Tecnica' (DATA project no tiene Task).
- create(): usa c.IssueType y aplica labels iniciales. Despues del POST /issue
ejecuta transitionToStatus para mover la card recien creada al status del
status_map, asi no aterriza en el initial workflow status (CREADO o To Do)
sino donde toca segun la columna kanban.
- update() y transition(): aplican labels en cada sync (PUT replaces array).
Card que sale de Bloqueadas pierde el label 'blocked' automaticamente.
- transitionToStatus: helper compartido entre create() y transition().
- seed-jira-data: inyecta status_map por defecto para nuestras 6 columnas
(HACIENDO -> In Progress, PNDNT FEEDBACK -> IMPLEMENTADO, HECHO -> Done,
IDEAS -> CREADO, DEUDA TECNICA -> To Do, Bloqueadas -> In Progress) y
labels_map (Bloqueadas -> ['blocked']).
- modules_test: mock Jira tambien responde /transitions endpoints.
Cambios:
- jiraConfig: nuevo campo BoardID. TestConnection valida que board.location.projectKey
coincide con ProjectKey declarado. Refuse mismatched scopes so a typo in
project_key cannot create issues in the wrong project.
- backend/seed_jira.go: subcomando 'kanban seed-jira-data' lee credenciales
desde pass (jira/anjana/{email,api-token,domain}) e inserta module row con
kind=jira, project_key=DATA, board_id=33, event_filter sensible. Idempotente
(upsert por name). status_map vacio por defecto (operator lo edita por UI).
- main.go: wire del nuevo subcomando.
Requiere KANBAN_MODULE_KEY env var para encriptar/desencriptar config. El
servidor que ejecuta el dispatcher debe usar el mismo valor.