feat(issues): tipo/categoría de incidencia (defecto/seguridad/calidad/documentación/otro)

- Issue::TYPES + typeLabels() (ES) + accessors type_label/type_color; columna type
  (string, default 'other') + fillable.
- IssueForm: select "Tipo de incidencia" con validación/carga/guardado.
- IssueTable: columna Tipo (badge) + SelectFilter por tipo.
- IssueDetail: badge de tipo en la cabecera.
- Sync offline: issue.create/update aceptan type; bundle (mapIssue) lo incluye.

Tests: IssuesEnhancementsTest (create muestra el campo vía HTTP, edición persiste) +
MobileApiTest (create con type). Suite 61 passing (solo 2 pre-existentes sqlite).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 13:30:54 +02:00
parent 19e1f57983
commit 3d0f4d5cad
10 changed files with 114 additions and 2 deletions
@@ -175,6 +175,7 @@ class ProjectApiController extends Controller
return [
'id' => $i->id, 'feature_id' => $i->feature_id, 'title' => $i->title,
'description' => $i->description, 'status' => $i->status, 'priority' => $i->priority,
'type' => $i->type,
'reported_by' => $i->reported_by, 'assigned_to' => $i->assigned_to,
'resolved_at' => $i->resolved_at?->toIso8601String(), 'updated_at' => $i->updated_at?->toIso8601String(),
];