Refactor fetch_wikelo_information to also support armor. Making the RAG for Wikelo mission obsolete.
This commit is contained in:
@@ -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"))
|
||||
|
||||
Reference in New Issue
Block a user