Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
23 KiB
Anforderungsdokument
Einleitung
Dieses Dokument beschreibt die Anforderungen für die Einführung eines zweiten Matching-Verfahrens in der Teamlandkarte: einen LLM-basierten Volltext-Vergleich zwischen Aufgaben und Kapazitäten. Das bestehende Score-basierte Verfahren (Rolle + Kompetenzen, BM25/RRF + LLM-Rollen-Similarity) bleibt unverändert verfügbar. Der Nutzer wählt pro Suche das Verfahren aus.
Das neue Verfahren bezieht zusätzliche Felder aus der Datenbank ein (Beschreibung, Referenzen, Zertifikate auf Kapazitätsseite; Titel, Beschreibung und gesuchte Kompetenzen auf Aufgabenseite), berechnet kein numerisches Scoring mehr und ordnet jede Kapazität bzw. Aufgabe direkt einer der bestehenden Kategorien zu. Zusätzlich liefert das LLM für jeden Fall eine Kurzbegründung (1–2 Sätze).
Glossar
- MCP_Server: Der Teamlandkarte MCP-Server (Modul
mcp_server.py), der die MCP-Tools für Matching, Suche und Datenanzeige bereitstellt. - DBClient: Protokollklasse aus
database/types.py, die alle Datenbankzugriffe abstrahiert. - TrinoClient: Konkrete
DBClient-Implementierung (database/trino_client.py) für Trino/Presto. - Matcher: Bestehende, Score-basierte Matching-Komponente in
matching/matcher.py. - LLM_Fulltext_Matcher: Neues Modul, das den LLM-basierten Volltext-Vergleich durchführt und Kategorien direkt zuweist.
- AzureOpenAIClient: Wrapper für Azure-OpenAI-Chat-Completions in
azure/openai_client.py. - LLM: Large Language Model (Azure OpenAI Chat Completion).
- Capacity: Frozen Dataclass
Capacityinmodels.py(Kapazitätseintrag eines Mitarbeitenden). - Task: Frozen Dataclass
Taskinmodels.py(veröffentlichte Aufgabe). - Capacity_Profile: Aggregiertes Volltext-Profil einer Kapazität, bestehend aus Rolle, Kompetenzen, Beschreibung, Referenzen und Zertifikaten.
- Task_Profile: Aggregiertes Volltext-Profil einer Aufgabe, bestehend aus Titel, Beschreibung und gesuchten Kompetenzen.
- Matching_Method: Auswahlwert für das verwendete Verfahren. Erlaubte Werte:
score(bisheriges Score-basiertes Matching) undllm_fulltext(neues LLM-Volltext-Matching). - Kategorie: Eine der bestehenden Ergebniskategorien
Top,Good,Partial,Low,Irrelevant. - Rationale: Vom LLM erzeugte Kurzbegründung (1–2 Sätze) für die zugewiesene Kategorie.
- find_matching_capacities: MCP-Tool für die Suchrichtung Aufgabe→Kapazität.
- find_matching_tasks: MCP-Tool für die Suchrichtung Kapazität→Aufgabe.
- Teamlandkarte_Agent: GitHub-Copilot-Agent in
.github/agents/teamlandkarte_agent.md(sowie das Pendant in.kiro/agents/teamlandkarte.md) inklusive seiner Skills/Workflows. - Architecture_Doc:
docs/architecture.md. - Readme:
README.mdim Repository-Root. - Capacity_Description: Inhalt der Spalte
descriptioninteamlandkarte_v_capacities_latest. - Capacity_Certificate: Eintrag aus
teamlandkarte_v_capacity_certificates_latest(Felddescription, Join viacapacity_id, 1:n). - Capacity_Reference: Eintrag aus
teamlandkarte_v_capacity_references_latest(Spalteprojects, Join viacapacity_id, 1:n) inklusive des zugehörigen Partner_Name austeamlandkarte_v_partners_latest. - Partner: Eintrag aus
teamlandkarte_v_partners_latest. Eine Capacity_Reference verweist über die Spaltepartner_idauf einen Partner; die Verknüpfung erfolgt überteamlandkarte_v_capacity_references_latest.partner_id = teamlandkarte_v_partners_latest.id. - Partner_Name: Wert der Spalte
nameausteamlandkarte_v_partners_latest, der einer Capacity_Reference überpartner_idzugeordnet ist. Istpartner_idNULLoder existiert kein passender Partner, gilt der Partner_Name als leere Zeichenkette.
Anforderungen
Anforderung 1: Auswahl des Matching-Verfahrens
User Story: Als Nutzer möchte ich pro Suchanfrage zwischen dem bisherigen Score-basierten Matching und dem neuen LLM-basierten Volltext-Matching wählen können, damit ich je nach Situation das passende Verfahren einsetzen kann.
Akzeptanzkriterien
- THE MCP_Server SHALL akzeptieren einen Parameter
matching_methodmit den erlaubten Wertenscoreundllm_fulltextin den Toolsfind_matching_capacitiesundfind_matching_tasks. - WHEN
matching_methodnicht übergeben wird, THE MCP_Server SHALL den Standardwertscoreverwenden, sodass das bestehende Verhalten unverändert bleibt. - WHEN
matching_method = "score"übergeben wird, THE MCP_Server SHALL das bestehende Score-basierte Matching ausführen. - WHEN
matching_method = "llm_fulltext"übergeben wird, THE MCP_Server SHALL das neue LLM-basierte Volltext-Matching über den LLM_Fulltext_Matcher ausführen. - IF ein ungültiger Wert für
matching_methodübergeben wird, THEN THE MCP_Server SHALL eine Fehlermeldung zurückgeben, die die erlaubten Werte (score,llm_fulltext) auflistet, und die Suche nicht ausführen. - THE MCP_Server SHALL den verwendeten Wert von
matching_methodim Antwort-META-JSON sowie in der angezeigten Suchkonfiguration ausweisen.
Anforderung 2: Erweiterte Datenabfrage für Kapazitäten
User Story: Als Entwickler möchte ich, dass für das LLM-Volltext-Matching die Kapazitäts-Beschreibung, alle Zertifikate und alle Referenzen aus der Datenbank verfügbar sind, damit das LLM ein vollständiges Profil bewerten kann.
Akzeptanzkriterien
- THE DBClient SHALL eine Methode bereitstellen, die für eine gegebene
capacity_iddie Capacity_Description austeamlandkarte_v_capacities_latest(Spaltedescription) zurückgibt. - THE DBClient SHALL eine Methode bereitstellen, die für eine gegebene
capacity_idalle zugeordneten Capacity_Certificate-Beschreibungen austeamlandkarte_v_capacity_certificates_latest(Felddescription, Join übercapacity_id) als Liste von Strings zurückgibt. - THE DBClient SHALL eine Methode bereitstellen, die für eine gegebene
capacity_idalle zugeordneten Capacity_Reference-Einträge austeamlandkarte_v_capacity_references_latest(Spalteprojects, Join übercapacity_id) inklusive des zugehörigen Partner_Name austeamlandkarte_v_partners_latest(Jointeamlandkarte_v_capacity_references_latest.partner_id = teamlandkarte_v_partners_latest.id, Spaltename) als Liste strukturierter Einträge mit den Feldernprojectsundpartner_namezurückgibt. - WHEN ein LLM-Volltext-Matching für mehrere Kapazitäten ausgeführt wird, THE DBClient SHALL eine Batch-Variante bereitstellen, die Beschreibungen, Zertifikate und Referenzen (inklusive Partner_Name über den Join auf
teamlandkarte_v_partners_latest) für eine Liste voncapacity_id-Werten in höchstens drei SQL-Abfragen lädt (eine pro Quelle); der Partner-Join SHALL Bestandteil derselben Referenz-Abfrage sein und keine zusätzliche SQL-Abfrage erzeugen. - WHEN für eine Kapazität keine Beschreibung in der Datenbank vorhanden ist (NULL oder leer), THE DBClient SHALL für die Capacity_Description den Wert
Nonezurückgeben. - WHEN für eine Kapazität keine Zertifikate vorhanden sind, THE DBClient SHALL eine leere Liste für Capacity_Certificate zurückgeben.
- WHEN für eine Kapazität keine Referenzen vorhanden sind, THE DBClient SHALL eine leere Liste für Capacity_Reference zurückgeben.
- IF die
partner_ideiner Capacity_ReferenceNULList oder der Join aufteamlandkarte_v_partners_latestkeinen Treffer liefert, THEN THE DBClient SHALL den Partner_Name dieser Capacity_Reference als leere Zeichenkette zurückgeben und die Referenz dennoch mit dem Feldprojectsin der Ergebnisliste belassen. - THE TrinoClient SHALL alle neuen SQL-Abfragen ausschließlich als
SELECT-Statements ausführen und die bestehende Read-Only-Guard_ensure_select_onlyverwenden. - THE TrinoClient SHALL die neuen Abfragen über die bestehende Connection-Pool-Infrastruktur und die Retry-Logik (
_retry) ausführen.
Anforderung 3: Aufbau des Capacity_Profile
User Story: Als Entwickler möchte ich, dass das System aus den Datenbankfeldern ein konsistentes Volltext-Profil pro Kapazität erzeugt, damit das LLM eine einheitliche Eingabe erhält.
Akzeptanzkriterien
- THE LLM_Fulltext_Matcher SHALL pro Kapazität ein Capacity_Profile bilden, das die folgenden Felder enthält:
id,owner_name,role_name,competences,description,referencesundcertificates. - THE LLM_Fulltext_Matcher SHALL jedes Element der Liste
referencesim Capacity_Profile als strukturierten Eintrag mit den Feldernpartner_nameundprojectsführen, sodass beide Bestandteile einer Capacity_Reference erhalten bleiben. - WHEN ein Feld in der Datenbank leer oder
Noneist, THE LLM_Fulltext_Matcher SHALL das entsprechende Feld im Capacity_Profile mit einer leeren Zeichenkette bzw. einer leeren Liste belegen, ohne das gesamte Profil zu verwerfen. - WHEN der Partner_Name einer Capacity_Reference leer ist, THE LLM_Fulltext_Matcher SHALL die Referenz dennoch in
referencesaufnehmen und ausschließlich das Feldprojectsin die serialisierte Darstellung übernehmen, ohne einen Platzhaltertext für den Partner einzufügen. - THE LLM_Fulltext_Matcher SHALL das Capacity_Profile in einer für das LLM lesbaren, deterministischen Textstruktur serialisieren, in der jedes Feld klar mit einer Überschrift gekennzeichnet ist (z. B.
Rolle:,Kompetenzen:,Beschreibung:,Referenzen:,Zertifikate:). - THE LLM_Fulltext_Matcher SHALL jeden Eintrag im Abschnitt
Referenzen:so darstellen, dass sowohl Partner_Name als auch Projekte für das LLM sichtbar sind (z. B. im FormatPartner: <partner_name> – Projekte: <projects>oder als gleichwertige strukturierte Darstellung mit benannten Feldern). - THE LLM_Fulltext_Matcher SHALL die Reihenfolge der Felder in der serialisierten Darstellung über alle Kapazitäten konstant halten, sodass die LLM-Eingabe deterministisch ist.
Anforderung 4: Aufbau des Task_Profile
User Story: Als Entwickler möchte ich, dass das System aus den Datenbankfeldern ein konsistentes Volltext-Profil pro Aufgabe erzeugt, damit das LLM eine einheitliche Eingabe erhält.
Akzeptanzkriterien
- THE LLM_Fulltext_Matcher SHALL pro Aufgabe ein Task_Profile bilden, das die folgenden Felder enthält:
id,title,descriptionundskills(gesuchte Kompetenzen). - WHEN ein Feld in der Datenbank leer oder
Noneist, THE LLM_Fulltext_Matcher SHALL das entsprechende Feld im Task_Profile mit einer leeren Zeichenkette bzw. einer leeren Liste belegen. - THE LLM_Fulltext_Matcher SHALL das Task_Profile in einer für das LLM lesbaren, deterministischen Textstruktur serialisieren, in der jedes Feld klar mit einer Überschrift gekennzeichnet ist (z. B.
Titel:,Beschreibung:,Gesuchte Kompetenzen:). - THE LLM_Fulltext_Matcher SHALL die Reihenfolge der Felder in der serialisierten Darstellung über alle Aufgaben konstant halten.
Anforderung 5: LLM-Volltext-Matching für die Richtung Aufgabe→Kapazität
User Story: Als Nutzer möchte ich, dass find_matching_capacities mit matching_method = "llm_fulltext" einen LLM-basierten Volltext-Vergleich zwischen einem Task_Profile und allen Capacity_Profile-Einträgen durchführt, damit ich Kapazitäten über die rein lexikalische Kompetenzbetrachtung hinaus bewerten lassen kann.
Akzeptanzkriterien
- WHEN
find_matching_capacitiesmitmatching_method = "llm_fulltext"aufgerufen wird, THE LLM_Fulltext_Matcher SHALL für jede gefilterte Kapazität (gleicher Vorfilter wie beim Score-Matching, z. B. Verfügbarkeitsfilter) einen LLM-Vergleich zwischen Task_Profile und Capacity_Profile durchführen. - WHEN
find_matching_capacitiesmitmatching_method = "llm_fulltext"aufgerufen wird, THE MCP_Server SHALL als Eingabe das aktuell bestätigte Anforderungs-Set (role_name,competences, optionale Beschreibung, Zeitraum) sowie ggf. die zugrunde liegende Aufgabe verwenden, um das Task_Profile zu bilden. - THE LLM_Fulltext_Matcher SHALL pro Kapazität genau eine Kategorie aus der Menge
Top,Good,Partial,Low,Irrelevantzurückgeben. - THE LLM_Fulltext_Matcher SHALL pro Kapazität eine Rationale mit 1 bis 2 Sätzen zurückgeben, die die Zuweisung in die jeweilige Kategorie erläutert.
- THE LLM_Fulltext_Matcher SHALL die LLM-Antwort als strukturiertes JSON pro Kapazität anfordern und parsen (Felder:
category,rationale). - IF das LLM für eine Kapazität eine Kategorie zurückgibt, die nicht in der erlaubten Menge liegt, THEN THE LLM_Fulltext_Matcher SHALL diese Kapazität der Kategorie
Irrelevantzuordnen und die Rationale durch einen Hinweis auf die ungültige LLM-Antwort ergänzen. - IF der LLM-Aufruf für eine Kapazität fehlschlägt, THEN THE LLM_Fulltext_Matcher SHALL diese Kapazität in einer separaten Fehlerliste ausweisen und sie nicht als reguläres Ergebnis kategorisieren.
- THE LLM_Fulltext_Matcher SHALL die Ergebnisse nach Kategorie gruppieren und innerhalb jeder Kategorie eine deterministische Sortierreihenfolge anwenden (Sortierung primär nach Kategorie, sekundär nach
capacity_idaufsteigend).
Anforderung 6: LLM-Volltext-Matching für die Richtung Kapazität→Aufgabe
User Story: Als Nutzer möchte ich, dass find_matching_tasks mit matching_method = "llm_fulltext" einen LLM-basierten Volltext-Vergleich zwischen einem Capacity_Profile und allen Task_Profile-Einträgen durchführt, damit ich auch in dieser Suchrichtung das neue Verfahren nutzen kann.
Akzeptanzkriterien
- WHEN
find_matching_tasksmitmatching_method = "llm_fulltext"aufgerufen wird, THE LLM_Fulltext_Matcher SHALL für jede offene Aufgabe einen LLM-Vergleich zwischen Capacity_Profile und Task_Profile durchführen. - WHEN
find_matching_tasksmitmatching_method = "llm_fulltext"aufgerufen wird, THE MCP_Server SHALL für die angegebenecapacity_idBeschreibung, Zertifikate und Referenzen aus der Datenbank laden und in das Capacity_Profile einbeziehen. - THE LLM_Fulltext_Matcher SHALL pro Aufgabe genau eine Kategorie aus der Menge
Top,Good,Partial,Low,Irrelevantzurückgeben. - THE LLM_Fulltext_Matcher SHALL pro Aufgabe eine Rationale mit 1 bis 2 Sätzen zurückgeben.
- THE LLM_Fulltext_Matcher SHALL die LLM-Antwort als strukturiertes JSON pro Aufgabe anfordern und parsen (Felder:
category,rationale). - IF das LLM für eine Aufgabe eine Kategorie zurückgibt, die nicht in der erlaubten Menge liegt, THEN THE LLM_Fulltext_Matcher SHALL diese Aufgabe der Kategorie
Irrelevantzuordnen und die Rationale durch einen Hinweis auf die ungültige LLM-Antwort ergänzen. - IF der LLM-Aufruf für eine Aufgabe fehlschlägt, THEN THE LLM_Fulltext_Matcher SHALL diese Aufgabe in einer separaten Fehlerliste ausweisen und sie nicht als reguläres Ergebnis kategorisieren.
- THE LLM_Fulltext_Matcher SHALL die Ergebnisse nach Kategorie gruppieren und innerhalb jeder Kategorie eine deterministische Sortierreihenfolge anwenden (Sortierung primär nach Kategorie, sekundär nach
task_idaufsteigend).
Anforderung 7: Direkte Kategorisierung ohne mathematisches Scoring
User Story: Als Nutzer möchte ich beim LLM-Volltext-Matching keine numerischen Score-Spalten mehr sehen, sondern ausschließlich die vom LLM zugewiesene Kategorie, damit das neue Verfahren als rein qualitative Bewertung erkennbar ist.
Akzeptanzkriterien
- WHEN
matching_method = "llm_fulltext"verwendet wird, THE MCP_Server SHALL in den Ergebnistabellen keine SpaltenRole Score,Competence ScoreoderOverall Scoreausgeben. - WHEN
matching_method = "llm_fulltext"verwendet wird, THE MCP_Server SHALL für jeden Treffer ausschließlich die LLM-zugewiesene Kategorie als Bewertungsfeld ausweisen. - WHEN
matching_method = "score"verwendet wird, THE MCP_Server SHALL die bestehenden Score-Spalten unverändert ausgeben. - THE LLM_Fulltext_Matcher SHALL für jedes Ergebnis ein Datenfeld
category(String) und ein Datenfeldrationale(String) im gespeicherten Suchergebnis (SearchCache) hinterlegen, ohne numerische Scores zu schreiben. - THE MCP_Server SHALL die Summary-Tabelle im LLM-Volltext-Modus weiterhin als Zähler je Kategorie (
Top,Good,Partial,Low,Irrelevant) ausgeben.
Anforderung 8: Begründungsspalte (Rationale) in der Ausgabe
User Story: Als Nutzer möchte ich in der Ergebnistabelle des LLM-Volltext-Matchings eine zusätzliche Spalte sehen, die in 1–2 Sätzen erläutert, warum eine Kapazität bzw. Aufgabe in der jeweiligen Kategorie gelandet ist, damit ich die Entscheidung des LLM nachvollziehen kann.
Akzeptanzkriterien
- WHEN
matching_method = "llm_fulltext"verwendet wird, THE MCP_Server SHALL die Ergebnistabellen fürfind_matching_capacitiesundfind_matching_tasksum eine SpalteBegründung(Rationale) erweitern. - THE MCP_Server SHALL die Spalte
Begründungdirekt rechts neben der SpalteCategoryeinfügen. - THE MCP_Server SHALL pro Zeile genau die vom LLM zurückgegebene Rationale (1–2 Sätze) anzeigen.
- WHEN die Rationale Zeilenumbrüche oder Pipe-Zeichen enthält, THE MCP_Server SHALL diese so escapen oder ersetzen, dass die Markdown-Tabelle gültig bleibt.
- WHEN die Rationale länger als 280 Zeichen ist, THE MCP_Server SHALL die Rationale auf 280 Zeichen kürzen und ein abschließendes Auslassungszeichen (
…) anhängen, damit die Tabellendarstellung lesbar bleibt. - THE MCP_Server SHALL die ungekürzte Rationale im persistierten Suchergebnis (
SearchCache) speichern, sodass nachgelagerte Tools (get_results_by_category,filter_search_results) den vollständigen Text ausgeben können.
Anforderung 9: Kompatibilität mit Refinement- und Pagination-Tools
User Story: Als Nutzer möchte ich auch beim LLM-Volltext-Matching durch Kategorien blättern und Filter anwenden können, damit der bestehende Such-Workflow konsistent bleibt.
Akzeptanzkriterien
- WHEN
matching_method = "llm_fulltext"verwendet wird, THE MCP_Server SHALL ein gültigessearch_idzurückgeben, das mitget_results_by_categoryundfilter_search_resultsverwendet werden kann. - WHEN
get_results_by_categoryein Suchergebnis aus dem LLM-Volltext-Modus paginiert, THE MCP_Server SHALL die Ergebnistabelle ohne Score-Spalten und mit der SpalteBegründungausgeben. - WHEN
filter_search_resultsein Suchergebnis aus dem LLM-Volltext-Modus filtert, THE MCP_Server SHALL die Filterung ausschließlich auf nicht-Score-basierten Filtern (Rollenfilter, Kompetenzfilter, Verfügbarkeitsfilter, Aufgaben-Textfilter, Aufgaben-Kompetenzfilter) durchführen. - IF ein Score-bezogener Filter (z. B.
min_similarity) auf ein LLM-Volltext-Suchergebnis angewendet wird, THEN THE MCP_Server SHALL den Filter ignorieren und in derApplied Filters-Tabelle einen Hinweis aufnehmen, dass der Filter im LLM-Volltext-Modus nicht wirksam ist. - THE MCP_Server SHALL im
META-JSON des Suchergebnisses das verwendete Verfahren alsmatching_methodausweisen, damit Folgewerkzeuge das Schema korrekt interpretieren können.
Anforderung 10: Anpassung der Copilot-Agent-Konfiguration
User Story: Als Nutzer möchte ich, dass sowohl der GitHub-Copilot-Agent teamlandkarte_agent als auch der Kiro-Pendant-Agent das neue Matching-Verfahren kennen und mich aktiv nach dem gewünschten Verfahren fragen, damit das neue Feature über die Agenten nutzbar ist.
Akzeptanzkriterien
- THE Teamlandkarte_Agent SHALL in seiner Konfigurationsdatei (
.github/agents/teamlandkarte_agent.md) und im Pendant.kiro/agents/teamlandkarte.mddie Existenz und den Zweck der beiden Verfahrenscoreundllm_fulltextdokumentieren. - WHEN der Nutzer eine Suche nach passenden Kapazitäten oder Aufgaben startet, THE Teamlandkarte_Agent SHALL den Nutzer explizit nach dem gewünschten
matching_method(Score-basiert oder LLM-Volltext) fragen, sofern dieses nicht bereits aus dem Verlauf hervorgeht. - THE Teamlandkarte_Agent SHALL die Skills/Workflows so erweitern, dass
find_matching_capacitiesundfind_matching_tasksmit dem zusätzlichen Parametermatching_methodaufgerufen werden. - THE Teamlandkarte_Agent SHALL die Rolle der Spalte
Begründungim Output dokumentieren und in den Hinweisen erwähnen, dass im LLM-Volltext-Modus keine numerischen Scores erscheinen. - THE Teamlandkarte_Agent SHALL den bestehenden Bestätigungs-Workflow (
show_pending_requirements,confirm_requirements) beibehalten und für beide Verfahren gleich anwenden.
Anforderung 11: Aktualisierung von Architektur- und README-Dokumentation
User Story: Als Entwickler oder Onboardee möchte ich, dass architecture.md und README.md das neue Matching-Verfahren beschreiben, damit ich Architektur und Nutzung des Systems korrekt verstehe.
Akzeptanzkriterien
- THE Architecture_Doc SHALL einen Abschnitt enthalten, der den LLM_Fulltext_Matcher als Komponente innerhalb der Business-Logic-Layer beschreibt, einschließlich seiner Eingaben, Ausgaben und externen Abhängigkeiten (Azure OpenAI Chat Completion).
- THE Architecture_Doc SHALL die zusätzlichen Datenquellen (
teamlandkarte_v_capacities_latest.description,teamlandkarte_v_capacity_certificates_latest,teamlandkarte_v_capacity_references_latest,teamlandkarte_v_partners_latest) im Datenmodell- und Schema-Verifikationsabschnitt aufführen. - THE Architecture_Doc SHALL die Verknüpfung zwischen
teamlandkarte_v_capacity_references_latest.partner_idundteamlandkarte_v_partners_latest.idsowie die Übernahme der Spaltenameals Partner_Name in das Capacity_Profile dokumentieren. - THE Architecture_Doc SHALL den neuen Parameter
matching_methodund seine Wertebereiche im Tool-Surface-Abschnitt fürfind_matching_capacitiesundfind_matching_tasksdokumentieren. - THE Architecture_Doc SHALL den Runtime-View für beide Suchrichtungen um den LLM-Volltext-Pfad ergänzen.
- THE Readme SHALL im Quick-Start- und Usage-Abschnitt erklären, wie der Nutzer zwischen
scoreundllm_fulltextwählt. - THE Readme SHALL beschreiben, dass im LLM-Volltext-Modus keine numerischen Scores ausgegeben werden und stattdessen eine Spalte
Begründungerscheint. - THE Readme SHALL die zusätzlichen Datenbank-Views aufführen, die der Server im LLM-Volltext-Modus liest, einschließlich
teamlandkarte_v_partners_latestund der Verknüpfung zu Capacity_Reference überpartner_id.
Anforderung 12: Anpassung weiterer Skripte und Tools
User Story: Als Entwickler möchte ich, dass alle relevanten Hilfsskripte und MCP-Tools mit dem neuen Verfahren konsistent zusammenarbeiten, damit es keine Inkonsistenzen zwischen Server, Agent und Skripten gibt.
Akzeptanzkriterien
- THE MCP_Server SHALL den Parameter
matching_methodin allen Docstrings der betroffenen Tools (find_matching_capacities,find_matching_tasks, ggf.filter_search_results,get_results_by_category) dokumentieren. - THE MCP_Server SHALL die Konfigurationsdatei
config.tomlum einen optionalen Schlüsselmatching.default_methoderweitern, der den Standardwert fürmatching_methodbeim Server-Start festlegt. - WHEN
matching.default_methodinconfig.tomlnicht gesetzt ist, THE MCP_Server SHALL den Default-Wertscoreverwenden. - IF
matching.default_methodeinen anderen Wert alsscoreoderllm_fulltextenthält, THEN THE MCP_Server SHALL beim Start einenConfigErrormit beschreibender Meldung werfen. - THE MCP_Server SHALL alle bestehenden Tests so erweitern oder ergänzen, dass sowohl der Modus
scoreals auch der Modusllm_fulltext(mit gemocktem LLM) abgedeckt sind.