fix(mcp): register ticket import tools in the external MCP container

The external MCP server has its own DI container; TicketMcpTools could not
resolve TicketImportService there, so both tools failed at runtime. Also
surface a skipped import in the prime outcome and treat a sweep where every
project board fails as an error instead of an empty backlog.
This commit is contained in:
mika kuns
2026-10-01 08:49:31 +02:00
parent 7724f5eb70
commit 2b40ea2d2b
5 changed files with 28 additions and 3 deletions
@@ -200,6 +200,8 @@ public sealed class TicketImportService
var identity = await client.GetIdentityAsync(ct);
var projects = await client.GetProjectsAsync(ct);
var items = new List<TicketCandidate>();
string? lastFailure = null;
var failed = 0;
foreach (var project in projects)
{
@@ -212,6 +214,8 @@ public sealed class TicketImportService
{
// Ein unlesbares Board darf den Sweep über die übrigen Projekte nicht abbrechen.
_logger.LogWarning("Board von Projekt {project_id} übersprungen: {reason}", project.Id, ex.Message);
lastFailure = ex.Message;
failed++;
continue;
}
@@ -233,6 +237,10 @@ public sealed class TicketImportService
}
}
// Scheitern ALLE Boards (z.B. Scope fehlt), ist das ein Fehler — kein leerer Backlog.
if (projects.Count > 0 && failed == projects.Count)
throw new TicketApiException($"Kein Projekt-Board lesbar: {lastFailure}");
return (items.DistinctBy(i => i.Id).ToList(), projects);
}