PhysicsCorrection/assets/check_env.py

140 lines
4.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
测试环境变量配置是否正确
"""
import os
import sys
from datetime import datetime
def check_env_var(var_name, required=True):
"""检查环境变量"""
value = os.environ.get(var_name)
if required and not value:
print(f"{var_name}: 未设置(必须)")
return False
elif value:
# 隐藏敏感信息
if "KEY" in var_name or "TOKEN" in var_name:
display_value = f"{value[:20]}...{value[-10:]}" if len(value) > 30 else "***"
else:
display_value = value
print(f"{var_name}: {display_value}")
return True
else:
print(f"⚠️ {var_name}: 未设置(可选)")
return True
def check_jwt_token(token):
"""检查 JWT token 是否包含必要字段"""
try:
import base64
import json
if token.startswith("Bearer "):
token = token[7:]
parts = token.split(".")
if len(parts) != 3:
print(f"❌ Token 格式错误:应该是 JWT 格式")
return False
# 解码 payload不验证签名
payload_b64 = parts[1]
# 添加 padding
padding = 4 - len(payload_b64) % 4
if padding != 4:
payload_b64 += "=" * padding
payload = json.loads(base64.b64decode(payload_b64))
print("\nJWT Token 信息:")
print(f" Issuer (iss): {payload.get('iss')}")
print(f" Subject (sub): {payload.get('sub')}")
print(f" Expires (exp): {datetime.fromtimestamp(payload.get('exp', 0))}")
print(f" Issued At (iat): {datetime.fromtimestamp(payload.get('iat', 0))}")
# 检查是否过期
import time
if payload.get('exp', 0) < time.time():
print(f"❌ Token 已过期")
return False
else:
print(f"✅ Token 未过期")
# 提取 workspace_id
sub = payload.get('sub', '')
if 'workload_identity/id:' in sub:
workspace_id = sub.split('workload_identity/id:')[-1]
print(f"\n✅ 从 Token 提取的 Workspace ID: {workspace_id}")
return workspace_id
else:
print(f"⚠️ 无法从 Token 提取 Workspace ID")
return True
except Exception as e:
print(f"❌ 解析 Token 失败: {str(e)}")
return False
def main():
print("=" * 80)
print("环境变量配置检查")
print("=" * 80)
print()
# 检查关键环境变量
print("1. 检查环境变量:")
print("-" * 80)
all_ok = True
all_ok &= check_env_var("COZE_API_KEY", required=True)
all_ok &= check_env_var("COZE_WORKSPACE_ID", required=True)
all_ok &= check_env_var("COZE_INTEGRATION_BASE_URL", required=True)
all_ok &= check_env_var("LLM_MODEL_NAME", required=True)
print()
# 检查 JWT token
print("2. 检查 JWT Token:")
print("-" * 80)
token = os.environ.get("COZE_API_KEY", "")
if token:
check_jwt_token(token)
print()
# 检查端点配置
print("3. 检查 API 端点配置:")
print("-" * 80)
base_url = os.environ.get("COZE_INTEGRATION_BASE_URL", "")
if base_url:
if "/v1" in base_url:
print(f"✅ API 端点包含 /v1 前缀: {base_url}")
else:
print(f"❌ API 端点缺少 /v1 前缀: {base_url}")
all_ok = False
else:
print(f"❌ API 端点未设置")
all_ok = False
print()
# 总结
print("=" * 80)
print("检查总结")
print("=" * 80)
if all_ok:
print("✅ 所有必需的环境变量都已正确配置")
print("\n下一步:")
print("1. 重新构建 Docker 镜像: docker-compose build")
print("2. 启动服务: docker-compose up -d")
print("3. 检查日志: docker-compose logs -f")
else:
print("❌ 存在配置问题,请修复后再试")
print("\n修复方法:")
print("1. 设置 COZE_API_KEY 环境变量")
print("2. 设置 COZE_WORKSPACE_ID 环境变量")
print("3. 确保 API 端点包含 /v1 前缀")
return 0 if all_ok else 1
if __name__ == "__main__":
sys.exit(main())