diff --git a/API.md b/API.md index 05828fe..bd9fd61 100644 --- a/API.md +++ b/API.md @@ -176,10 +176,10 @@ curl -X POST "$MONITOR_API_BASE/agents/$ID/activity" \ Spalten (F3): `backlog`, `bereit`, `in_arbeit`, `qa`, `testing`, `fertig`, `done`. -- `backlog`, `bereit`, `in_arbeit`, `testing` und `done` werden regelmaessig aus +- `backlog`, `bereit`, `in_arbeit`, `qa`, `testing` und `done` werden regelmaessig aus Codeberg-Issues aus mehreren konfigurierten Projekten befuellt (siehe - [Codeberg-Sync](#codeberg-sync-backlogdone)); `qa` und `fertig` sind fuer zukuenftige - Labels reserviert und ergeben sich ausschliesslich aus Agenten-Meldungen (F4). + [Codeberg-Sync](#codeberg-sync-backlogdone)); `fertig` ist fuer ein zukuenftiges Label + reserviert und ergibt sich ausschliesslich aus Agenten-Meldungen (F4). - Ticket-Typ (statt Prioritaet) wird bei Codeberg-Tickets aus dem ersten Issue-Label uebernommen, die Farbe dagegen fest aus dem Quell-Projekt (F4/F26) - so bleiben Tickets aus unterschiedlichen Codeberg-Projekten auf einen Blick unterscheidbar, unabhaengig davon, @@ -349,10 +349,10 @@ Codeberg-Projekten (siehe [Projekte](#projekte-codeberg-sync-konfigurieren)) und je Projekt ueber `repo` + `external_ref` (= Issue-Nummer) mit den Tickets ab: - Offene Issues → Spalte je nach Label: `wip` → `in_arbeit`, sonst `testing` → `testing`, - sonst `automate` → `bereit`, sonst `backlog`. + sonst `help wanted` → `qa`, sonst `automate` → `bereit`, sonst `backlog`. - Geschlossene Issues → Spalte `done`. -- Nur falls das Ticket noch in einer der Sync-Spalten (`backlog`, `bereit`, `in_arbeit`, - `testing`, `done`) ist - auf `qa`/`fertig` manuell verschobene Tickets werden nicht +- Nur falls das Ticket noch in einer der Sync-Spalten (`backlog`, `bereit`, `in_arbeit`, `qa`, + `testing`, `done`) ist - auf `fertig` manuell verschobene Tickets werden nicht zurueckgesetzt. - Ticket-Typ kommt vom ersten Issue-Label, die Farbe fest vom Projekt (siehe oben). diff --git a/api/src/Repository/TicketRepository.php b/api/src/Repository/TicketRepository.php index d877736..e969c5b 100644 --- a/api/src/Repository/TicketRepository.php +++ b/api/src/Repository/TicketRepository.php @@ -14,12 +14,12 @@ final class TicketRepository public const COLUMNS = ['backlog', 'bereit', 'in_arbeit', 'qa', 'testing', 'fertig', 'done']; /** - * Spalten, die der Codeberg-Sync anhand von Issue-Status/Labels pflegt (F14). "qa" und - * "fertig" sind fuer zukuenftige Labels reserviert und bleiben rein manuell. + * Spalten, die der Codeberg-Sync anhand von Issue-Status/Labels pflegt (F14). "fertig" + * ist fuer ein zukuenftiges Label reserviert und bleibt rein manuell. * * @var string[] */ - private const SYNC_MANAGED_COLUMNS = ['backlog', 'bereit', 'in_arbeit', 'testing', 'done']; + private const SYNC_MANAGED_COLUMNS = ['backlog', 'bereit', 'in_arbeit', 'qa', 'testing', 'done']; public function __construct(private readonly Database $db) { @@ -155,7 +155,7 @@ final class TicketRepository return $this->create($data + ['source' => 'codeberg']); } - // Manuell auf eine nicht vom Sync verwaltete Spalte bewegte Tickets (z. B. qa/fertig) + // Manuell auf eine nicht vom Sync verwaltete Spalte bewegte Tickets (z. B. fertig) // werden vom periodischen Codeberg-Sync nicht zurueckgesetzt. if (!in_array($existing['column_name'], self::SYNC_MANAGED_COLUMNS, true)) { return $existing; diff --git a/api/src/Sync/CodebergSyncService.php b/api/src/Sync/CodebergSyncService.php index 201c459..0db9880 100644 --- a/api/src/Sync/CodebergSyncService.php +++ b/api/src/Sync/CodebergSyncService.php @@ -11,7 +11,7 @@ use Monitor\Api\Repository\TicketRepository; * F4/F26: Liest offene und geschlossene Issues aus mehreren konfigurierten Codeberg-Projekten * (RepoConfigRepository, Issue #27 vormals Config::codebergRepos()) und legt daraus Tickets * an bzw. aktualisiert sie. Offene Issues landen (falls noch nicht vorhanden bzw. noch nicht - * manuell bewegt) je nach Label in Backlog, Bereit, In Arbeit oder Testing, geschlossene in + * manuell bewegt) je nach Label in Backlog, Bereit, In Arbeit, QA oder Testing, geschlossene in * Done. Der Ticket-Typ (Badge-Text) kommt vom ersten Codeberg-Label, die Ticket-Farbe dagegen * fest vom Quell-Projekt (Issue #26: "unterschiedliche Codeberg-Projekte sollen an fest * zugeordneten Farben erkennbar sein"), nicht mehr von der Label-Farbe. @@ -25,6 +25,7 @@ final class CodebergSyncService private const LABEL_TO_COLUMN = [ 'wip' => 'in_arbeit', 'testing' => 'testing', + 'help wanted' => 'qa', 'automate' => 'bereit', ]; diff --git a/api/tests/Unit/Repository/TicketRepositoryTest.php b/api/tests/Unit/Repository/TicketRepositoryTest.php index ef2bd48..6ab7486 100644 --- a/api/tests/Unit/Repository/TicketRepositoryTest.php +++ b/api/tests/Unit/Repository/TicketRepositoryTest.php @@ -122,7 +122,7 @@ final class TicketRepositoryTest extends TestCase 'column' => 'backlog', ]); $ticket = $this->repository->findByExternalRef('42'); - $this->repository->update((int) $ticket['id'], ['column' => 'qa']); + $this->repository->update((int) $ticket['id'], ['column' => 'fertig']); $result = $this->repository->upsertFromCodeberg([ 'external_ref' => '42', @@ -130,7 +130,7 @@ final class TicketRepositoryTest extends TestCase 'column' => 'backlog', ]); - self::assertSame('qa', $result['column_name']); + self::assertSame('fertig', $result['column_name']); } public function testUpsertFromCodebergMovesTicketBetweenSyncManagedColumns(): void diff --git a/api/tests/Unit/Sync/CodebergSyncServiceTest.php b/api/tests/Unit/Sync/CodebergSyncServiceTest.php index 8544c61..c665fe9 100644 --- a/api/tests/Unit/Sync/CodebergSyncServiceTest.php +++ b/api/tests/Unit/Sync/CodebergSyncServiceTest.php @@ -148,12 +148,12 @@ final class CodebergSyncServiceTest extends TestCase $service->sync(); $ticket = $tickets->findByExternalRef('1', self::MONITOR_SLUG); - $tickets->update((int) $ticket['id'], ['column' => 'qa']); + $tickets->update((int) $ticket['id'], ['column' => 'fertig']); $service->sync(); - $stillQa = $tickets->findByExternalRef('1', self::MONITOR_SLUG); - self::assertSame('qa', $stillQa['column_name']); + $stillFertig = $tickets->findByExternalRef('1', self::MONITOR_SLUG); + self::assertSame('fertig', $stillFertig['column_name']); } /** @return array */ @@ -163,6 +163,7 @@ final class CodebergSyncServiceTest extends TestCase 'automate -> bereit' => ['automate', 'bereit'], 'wip -> in_arbeit' => ['wip', 'in_arbeit'], 'testing -> testing' => ['testing', 'testing'], + 'help wanted -> qa' => ['help wanted', 'qa'], ]; }