Переглянути джерело

内部接口鉴权直连修改

袁威 1 тиждень тому
батько
коміт
04adbeb9ad
3 змінених файлів з 17 додано та 2 видалено
  1. 2 0
      .env
  2. 12 2
      app/api/auto_import.py
  3. 3 0
      app/core/config.py

+ 2 - 0
.env

@@ -12,6 +12,8 @@ DB_HOST=192.168.77.249
 DB_PORT=3306
 DB_NAME=card_score_gray_database
 
+INTERNAL_API_BASE_URL=http://127.0.0.1:7755
+
 # MinIO 配置
 MINIO_ENDPOINT=192.168.77.249:9000
 MINIO_ACCESS_KEY=pZEwCGnpNN05KPnmC2Yh

+ 12 - 2
app/api/auto_import.py

@@ -64,6 +64,16 @@ def _flat_image_types() -> List[str]:
     return flat
 
 
+def _resolve_internal_base_url(request: Request) -> str:
+    """
+    导入流程内部调用本服务时优先走集群内地址,避免经 ingress 再次鉴权导致 401。
+    """
+    configured = (settings.INTERNAL_API_BASE_URL or "").strip().rstrip("/")
+    if configured:
+        return configured
+    return str(request.base_url).rstrip("/")
+
+
 # --- 内部辅助函数 ---
 async def _post_form(
         session: aiohttp.ClientSession,
@@ -475,7 +485,7 @@ async def auto_import_script_api(
     推理服务调用 stitch_score_inference,按面(front/back)一次性提交
     ring + gray + stripe1..4,返回的 JSON 落到对应 fusion 主图记录中。
     """
-    local_base_url = str(request.base_url).rstrip("/")
+    local_base_url = _resolve_internal_base_url(request)
     forward_headers: Dict[str, str] = {}
     auth = request.headers.get("authorization")
     if auth:
@@ -566,7 +576,7 @@ async def auto_import_url_script_api(
         back_stripe3: Optional[str] = Form(None, description="反面调光图3 URL"),
         back_stripe4: Optional[str] = Form(None, description="反面调光图4 URL"),
 ):
-    local_base_url = str(request.base_url).rstrip("/")
+    local_base_url = _resolve_internal_base_url(request)
     forward_headers: Dict[str, str] = {}
     auth = request.headers.get("authorization")
     if auth:

+ 3 - 0
app/core/config.py

@@ -35,6 +35,9 @@ class Settings(BaseSettings):
 
     # CONFIG_PATH: str = BASE_PATH / 'Config.json'
     API_PREFIX: str = "/api"  # 通用前缀
+    # 导入流程内部自调用卡牌/图片接口时使用的基础地址(用于绕过 ingress 鉴权)
+    # 为空时回退到 request.base_url
+    INTERNAL_API_BASE_URL: str = ""
     SCORE_CONFIG_PATH: Path = BASE_PATH / "app/core/scoring_config.json"
 
     # 分数计算接口url