120 lines
3.7 KiB
Markdown
120 lines
3.7 KiB
Markdown
# Command: issues:status
|
|
|
|
Muestra un dashboard global de todas las issues en todos los workspaces, con métricas,
|
|
filtros y sugerencias de próximas issues a ejecutar.
|
|
|
|
## Para el usuario
|
|
|
|
### Cuándo usar este comando
|
|
|
|
Usar para obtener una vista consolidada del estado de todas las issues en todos los workspaces.
|
|
Útil para planificar qué ejecutar a continuación y ver el progreso general.
|
|
|
|
### Sintaxis
|
|
|
|
```bash
|
|
/issues:status # Dashboard global completo
|
|
/issues:status <workspace> # Detalle de un workspace específico
|
|
/issues:status --status pending # Filtrar por estado
|
|
/issues:status --tag backend # Filtrar por tag
|
|
/issues:status --export json # Exportar a JSON
|
|
/issues:status --export csv # Exportar a CSV
|
|
```
|
|
|
|
### Ejemplos
|
|
|
|
**Dashboard global:**
|
|
```bash
|
|
/issues:status
|
|
```
|
|
|
|
**Ver solo issues pendientes:**
|
|
```bash
|
|
/issues:status --status pending
|
|
```
|
|
|
|
**Ver detalle de un workspace:**
|
|
```bash
|
|
/issues:status my-api
|
|
```
|
|
|
|
**Exportar métricas:**
|
|
```bash
|
|
/issues:status --export json
|
|
```
|
|
|
|
## Para Claude
|
|
|
|
### Inputs
|
|
|
|
Parsear argumentos del usuario:
|
|
|
|
- Primer argumento posicional (sin `--`) → `filterWorkspace`
|
|
- `--status <value>` → `filterStatus` (pending | in_progress | completed)
|
|
- `--tag <value>` → `filterTag`
|
|
- `--export <format>` → `exportFormat` (json | csv)
|
|
|
|
### Flujo
|
|
|
|
1. **Parsear argumentos** del comando según la sintaxis arriba
|
|
2. **Llamar `app.IssuesDashboardCommand(config, filterWorkspace, filterStatus, filterTag, exportFormat)`**
|
|
3. Si se solicitó dashboard global (sin filtros), después de mostrar el dashboard preguntar:
|
|
- "¿Ver detalle de algún workspace? (nombre o 'n')"
|
|
- Si el usuario ingresa un nombre válido, llamar `app.RenderWorkspaceDetail()`
|
|
|
|
### Parseo de argumentos
|
|
|
|
```
|
|
/issues:status → filterWorkspace="", filterStatus="", filterTag="", exportFormat=""
|
|
/issues:status my-api → filterWorkspace="my-api"
|
|
/issues:status --status pending → filterStatus="pending"
|
|
/issues:status --tag backend → filterTag="backend"
|
|
/issues:status my-api --status pending → filterWorkspace="my-api", filterStatus="pending"
|
|
/issues:status --export json → exportFormat="json"
|
|
```
|
|
|
|
### Lógica de llamada Go
|
|
|
|
```go
|
|
// Cargar config
|
|
config, err := app.LoadConfig()
|
|
if err != nil {
|
|
// Reportar error
|
|
}
|
|
|
|
// Ejecutar dashboard
|
|
err = app.IssuesDashboardCommand(config, filterWorkspace, filterStatus, filterTag, exportFormat)
|
|
```
|
|
|
|
### Comandos sugeridos al final
|
|
|
|
Siempre mostrar al final:
|
|
```
|
|
Commands:
|
|
/issues:status <workspace> # Detalle de workspace específico
|
|
/issues:status --status pending # Solo pendientes
|
|
/app:launch <workspace> <issue> # Lanzar una issue sugerida
|
|
```
|
|
|
|
### Modo interactivo (dashboard global)
|
|
|
|
Cuando se muestra el dashboard global sin filtros:
|
|
1. Mostrar el dashboard completo con sugerencias
|
|
2. Preguntar: "¿Ver detalle de un workspace? (nombre o 'n' para salir)"
|
|
3. Si el usuario responde con un nombre de workspace:
|
|
- Obtener issues del workspace con `shell.ListIssuesInWorkspace(workspacePath)`
|
|
- Renderizar con `app.RenderWorkspaceDetail(workspace, issues)`
|
|
4. Si responde 'n' o vacío, terminar
|
|
|
|
### Manejo de errores
|
|
|
|
- Si `ReposBasePath` no existe: "No se encontraron workspaces. ¿Está configurado DATAFORGE_REPOS?"
|
|
- Si no hay issues en ningún workspace: Mostrar dashboard vacío con sugerencia de crear issues
|
|
- Si exportación falla: Reportar error específico
|
|
|
|
### Notas
|
|
|
|
- Las stats se calculan escaneando el filesystem y sincronizando con la BD
|
|
- La BD actúa como cache — si está desactualizada, el scan la actualiza
|
|
- Para workspaces con muchas issues, el scan puede tardar segundos
|