77 lines
No EOL
2.7 KiB
Python
77 lines
No EOL
2.7 KiB
Python
import json
|
|
import os
|
|
from collections import Counter
|
|
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
CAREER_DB_PATH = os.path.join(BASE_DIR, "career_stats.json")
|
|
|
|
def load_career_db():
|
|
"""Load career database with proper error handling."""
|
|
if not os.path.exists(CAREER_DB_PATH):
|
|
raise FileNotFoundError(f"Career database not found at: {CAREER_DB_PATH}\nPlease build it first.")
|
|
|
|
try:
|
|
with open(CAREER_DB_PATH, "r", encoding="utf-8") as f:
|
|
return json.load(f)
|
|
except json.JSONDecodeError:
|
|
raise ValueError("Career database is corrupted. Please rebuild it.")
|
|
except Exception as e:
|
|
raise RuntimeError(f"Failed to load career database: {e}")
|
|
|
|
|
|
def team_identity(team_name: str):
|
|
"""Generate team identity summary based on career tags."""
|
|
db = load_career_db()
|
|
players = db.get("players", {})
|
|
|
|
# Find all players who have ever played for this team
|
|
team_players = [
|
|
p for p in players.values()
|
|
if team_name in p.get("team_history", [])
|
|
]
|
|
|
|
if not team_players:
|
|
return {
|
|
"team": team_name,
|
|
"players": [],
|
|
"tag_counts": {},
|
|
"strengths": ["No players found with this team in history"],
|
|
"weaknesses": []
|
|
}
|
|
|
|
# Count all identity tags across the team
|
|
all_tags = [tag for p in team_players for tag in p.get("identity_tags", [])]
|
|
tag_counts = Counter(all_tags)
|
|
|
|
strengths = []
|
|
weaknesses = []
|
|
|
|
# --- Strengths ---
|
|
if tag_counts.get("Slayer", 0) >= 2:
|
|
strengths.append("High slayer firepower")
|
|
if tag_counts.get("Objective Specialist", 0) >= 2:
|
|
strengths.append("Strong objective control")
|
|
if tag_counts.get("Anchor", 0) >= 1:
|
|
strengths.append("Reliable anchor/backline")
|
|
if tag_counts.get("Playmaker", 0) >= 1:
|
|
strengths.append("Creative playmaking")
|
|
if tag_counts.get("Consistent", 0) >= 2:
|
|
strengths.append("Very consistent performers")
|
|
|
|
# --- Weaknesses ---
|
|
if tag_counts.get("Objective Specialist", 0) == 0:
|
|
weaknesses.append("Lacking objective specialists")
|
|
if tag_counts.get("Sharpshooter", 0) == 0:
|
|
weaknesses.append("No dedicated sharpshooter")
|
|
if tag_counts.get("Anchor", 0) == 0:
|
|
weaknesses.append("Weak backline stability")
|
|
if tag_counts.get("Veteran", 0) == 0 and tag_counts.get("Rookie", 0) >= 2:
|
|
weaknesses.append("Very inexperienced roster")
|
|
|
|
return {
|
|
"team": team_name,
|
|
"players": team_players, # kept for potential future use
|
|
"tag_counts": dict(tag_counts),
|
|
"strengths": strengths or ["Balanced roster — no dominant strength"],
|
|
"weaknesses": weaknesses or ["No major weaknesses identified"]
|
|
} |