从项目列表中选择默认项目
(projects: List[Dict[str, Any]])
| 508 | |
| 509 | |
| 510 | async def select_default_project(projects: List[Dict[str, Any]]) -> Optional[str]: |
| 511 | """从项目列表中选择默认项目""" |
| 512 | if not projects: |
| 513 | return None |
| 514 | |
| 515 | # 策略1:查找显示名称或项目ID包含"default"的项目 |
| 516 | for project in projects: |
| 517 | display_name = project.get("displayName", "").lower() |
| 518 | # Google API returns projectId in camelCase |
| 519 | project_id = project.get("projectId", "") |
| 520 | if "default" in display_name or "default" in project_id.lower(): |
| 521 | log.info(f"选择默认项目: {project_id} ({project.get('displayName', project_id)})") |
| 522 | return project_id |
| 523 | |
| 524 | # 策略2:选择第一个项目 |
| 525 | first_project = projects[0] |
| 526 | # Google API returns projectId in camelCase |
| 527 | project_id = first_project.get("projectId", "") |
| 528 | log.info( |
| 529 | f"选择第一个项目作为默认: {project_id} ({first_project.get('displayName', project_id)})" |
| 530 | ) |
| 531 | return project_id |
| 532 | |
| 533 | |
| 534 | async def fetch_project_id_and_tier( |
no test coverage detected