Refactor fetch_wikelo_information to also support armor. Making the RAG for Wikelo mission obsolete.

This commit is contained in:
2025-08-19 15:30:27 +02:00
parent 1e272da943
commit 55814054ca
3 changed files with 12 additions and 171 deletions

View File

@@ -824,7 +824,7 @@ class Tools:
async def fetch_wikelo_information(
self,
mission_ship_name: str,
mission_ship_or_armor_name: str,
__event_emitter__: Callable[[dict], Any] = None,
):
"""
@@ -848,7 +848,7 @@ class Tools:
try:
await emitter.progress_update(
f"Searching Wikelo database for '{mission_ship_name}'"
f"Searching Wikelo database for '{mission_ship_or_armor_name}'"
)
# ------------------------------------------------------------------
@@ -858,7 +858,7 @@ class Tools:
cursor = conn.cursor()
cursor.execute(
"""
SELECT missions, ship_name, components, costs, rewards
SELECT missions, ship_name, components, costs, rewards, armor_name
FROM Wikelo_information
"""
)
@@ -876,21 +876,22 @@ class Tools:
# ------------------------------------------------------------------
search_items = [] # List of tuples: (search_string, label, full_row)
for row in rows:
mission, ship_name, components, costs, rewards = row
mission, ship_name, components, costs, rewards, armor_name = row
search_items.append((mission, "mission", row))
search_items.append((ship_name, "ship", row))
search_items.append((armor_name, "armor", row))
# ------------------------------------------------------------------
# 3. Find the best fuzzy match against all searchable strings.
# ------------------------------------------------------------------
best_match = process.extractOne(
mission_ship_name,
mission_ship_or_armor_name,
[item[0] for item in search_items],
)
if not best_match:
await emitter.error_update(f"No close match found for '{mission_ship_name}'.")
return f"No close match found for '{mission_ship_name}'."
await emitter.error_update(f"No close match found for '{mission_ship_or_armor_name}'.")
return f"No close match found for '{mission_ship_or_armor_name}'."
matched_string, score = best_match
@@ -910,13 +911,14 @@ class Tools:
# ------------------------------------------------------------------
# 5. Build the output string.
# ------------------------------------------------------------------
mission, ship_name, components, costs, rewards = matched_row
mission, ship_name, components, costs, rewards, armor_name = matched_row
result_text = (
f"**Mission:** {mission}\n"
f"**Ship Name:** {ship_name}\n"
f"**Components:** {components}\n"
f"**Costs:** {costs}\n"
f"**Rewards:** {rewards}"
f"**Rewards:** {rewards}\n"
f"**Armor Name:** {armor_name}"
)
await emitter.success_update(
@@ -931,4 +933,4 @@ class Tools:
if __name__ == "__main__":
info_printer = Tools()
asyncio.run(info_printer.fetch_wikelo_information("Nox"))
asyncio.run(info_printer.fetch_wikelo_information("Space Navy"))