Spaces:
Sleeping
Sleeping
| """ | |
| νλͺ λ§€ν κ΄λ ¨ μ νΈλ¦¬ν° λͺ¨λ | |
| """ | |
| import json | |
| import pandas as pd | |
| from typing import Dict, List, Any | |
| def load_mapping_file(mapping_file: str) -> Dict[str, Dict[str, str]]: | |
| """ | |
| λ§€ν νμΌμ λ‘λνμ¬ λμ λ리 ννλ‘ λ°ν | |
| Args: | |
| mapping_file: λ§€ν νμΌ κ²½λ‘ | |
| Returns: | |
| λ§€ν λμ λ리: {νλͺ : {present: νμ¬νλͺ , CD_ACCT: κ³μ μ½λ, CD_PJT: νλ‘μ νΈμ½λ}} | |
| """ | |
| try: | |
| with open(mapping_file, 'r', encoding='utf-8') as f: | |
| mapping_list = json.load(f) | |
| # λ§€ν λμ λ리 μμ± | |
| mapping_dict = {} | |
| for item in mapping_list: | |
| mapping_dict[item['past']] = { | |
| 'present': item['present'], | |
| 'CD_ACCT': item['CD_ACCT'], | |
| 'CD_PJT': item['CD_PJT'] | |
| } | |
| print(f"λ§€ν μ 보 λ‘λ μλ£: {len(mapping_dict)}κ° νλͺ©") | |
| return mapping_dict | |
| except Exception as e: | |
| print(f"λ§€ν νμΌ λ‘λ μ€ μ€λ₯ λ°μ: {e}") | |
| return {} | |
| def apply_mapping(team_name: str, mapping_dict: Dict[str, Dict[str, str]]) -> Dict[str, str]: | |
| """ | |
| νλͺ μ λ§€ν μ 보 μ μ© | |
| Args: | |
| team_name: μλ³Έ νλͺ | |
| mapping_dict: λ§€ν λμ λ리 | |
| Returns: | |
| λ§€νλ μ 보: {present: νμ¬νλͺ , CD_ACCT: κ³μ μ½λ, CD_PJT: νλ‘μ νΈμ½λ} | |
| """ | |
| if pd.isna(team_name) or team_name == "": | |
| return {"present": "", "CD_ACCT": "", "CD_PJT": ""} | |
| if team_name in mapping_dict: | |
| return mapping_dict[team_name] | |
| # μλ κ²½μ° λΉ κ° λ°ν | |
| return {"present": team_name, "CD_ACCT": "", "CD_PJT": ""} | |
| def get_unmapped_teams(df: pd.DataFrame) -> List[str]: | |
| """ | |
| λ§€νλμ§ μμ νλͺ λͺ©λ‘ μΆμΆ | |
| Args: | |
| df: λ°μ΄ν°νλ μ | |
| Returns: | |
| λ§€νλμ§ μμ νλͺ λͺ©λ‘ | |
| """ | |
| unmapped_df = df[(df["CD_ACCT"] == "") | (df["CD_PJT"] == "")] | |
| return unmapped_df["μλ³Ένλͺ "].unique().tolist() | |
| def get_mapping_summary(df_filtered: pd.DataFrame, mapping_dict: Dict[str, Dict[str, str]]) -> Dict[str, Any]: | |
| """ | |
| λ§€ν κ²°κ³Ό μμ½ μ 보 μμ± | |
| Args: | |
| df_filtered: νν°λ§λ λ°μ΄ν°νλ μ | |
| mapping_dict: λ§€ν λμ λ리 | |
| Returns: | |
| λ§€ν μμ½ μ 보: {mapped_teams: λ§€νλ νλͺ λͺ©λ‘, unmapped_teams: λ§€νλμ§ μμ νλͺ λͺ©λ‘} | |
| """ | |
| mapped_teams = [] | |
| for team in df_filtered["μλ³Ένλͺ "].unique(): | |
| mapped_info = mapping_dict.get(team, {}) | |
| mapped_teams.append({ | |
| 'original': team, | |
| 'mapped': mapped_info.get('present', team), | |
| 'acct': mapped_info.get('CD_ACCT', ''), | |
| 'pjt': mapped_info.get('CD_PJT', '') | |
| }) | |
| return { | |
| 'mapped_teams': mapped_teams, | |
| 'mapped_count': len(mapped_teams) | |
| } |