feat(modules): jira scoped a project=DATA + board=33 con seed CLI desde pass
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.
This commit is contained in:
@@ -45,6 +45,16 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
// Subcommand `kanban seed-jira-data` provisions the Jira push module
|
||||
// scoped to project DATA + board 33 using pass-stored credentials.
|
||||
if len(os.Args) > 1 && os.Args[1] == "seed-jira-data" {
|
||||
if err := runSeedJiraData(os.Args[2:]); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "kanban seed-jira-data: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
flags := flag.NewFlagSet("kanban", flag.ExitOnError)
|
||||
port := flags.Int("port", 8095, "HTTP port")
|
||||
dbPath := flags.String("db", "operations.db", "SQLite database path")
|
||||
|
||||
Reference in New Issue
Block a user