feat(product-suite): decouple ai writing gateway
This commit is contained in:
@@ -4604,14 +4604,30 @@ class ProductSuiteTab(QWidget):
|
||||
return
|
||||
self._status("已完成已提交图片查询,请查看生成结果", "success")
|
||||
|
||||
def _require_default_gateway(self, action):
|
||||
if self._is_default_gateway():
|
||||
return True
|
||||
self._message("当前不可用", "%s仅支持默认网关,请到⑤设置切换后再使用。" % action)
|
||||
return False
|
||||
def _ai_write_config_error(self):
|
||||
try:
|
||||
cmhub_config = appconfig.cmhub_config(self.config)
|
||||
base_url = appconfig.normalize_cmhub_base_url(cmhub_config.get("base_url"))
|
||||
api_key = appconfig.get_cmhub_api_key(self.cmhub_config_path)
|
||||
alias = str(cmhub_config.get("vision_alias") or "").strip()
|
||||
except Exception:
|
||||
return "默认网关图片理解配置无法读取"
|
||||
if not base_url:
|
||||
return "尚未配置默认网关地址"
|
||||
if not api_key:
|
||||
return "尚未配置默认网关 API Key"
|
||||
if not alias:
|
||||
return "尚未选择图片理解模型"
|
||||
return ""
|
||||
|
||||
def start_ai_write(self, checked=False):
|
||||
if not self._require_default_gateway("商品套图AI帮写"):
|
||||
config_error = self._ai_write_config_error()
|
||||
if config_error:
|
||||
self._message(
|
||||
"AI帮写配置不完整",
|
||||
"%s。请到⑤设置补齐默认网关的地址、API Key 和图片理解模型。"
|
||||
% config_error,
|
||||
)
|
||||
return
|
||||
if self.subscription_preflight_callback is not None and not self.subscription_preflight_callback("开始 AI 帮写"):
|
||||
return
|
||||
@@ -4634,10 +4650,14 @@ class ProductSuiteTab(QWidget):
|
||||
self._save_controls_to_state(state)
|
||||
selected_asset_ids = tuple(int(asset.id) for asset in selected_assets)
|
||||
catalog_params = self._ai_write_catalog_params()
|
||||
if catalog_params is None:
|
||||
self._message(
|
||||
"AI帮写配置不完整",
|
||||
"默认网关图片理解配置无法读取,请到⑤设置检查后重试。",
|
||||
)
|
||||
return
|
||||
cached_models = (
|
||||
cmhub_models.cached_model_catalog(catalog_params["base_url"], catalog_params["alias"])
|
||||
if catalog_params is not None
|
||||
else None
|
||||
)
|
||||
if cached_models is not None:
|
||||
self._confirm_ai_write_request(
|
||||
@@ -4646,9 +4666,6 @@ class ProductSuiteTab(QWidget):
|
||||
self._ai_write_points_cost(cached_models, catalog_params["alias"]),
|
||||
)
|
||||
return
|
||||
if catalog_params is None:
|
||||
self._confirm_ai_write_request(state, selected_asset_ids, None)
|
||||
return
|
||||
self._start_ai_write_catalog_lookup(state, selected_asset_ids, catalog_params)
|
||||
|
||||
def _ai_write_selected_assets(self, state):
|
||||
@@ -5962,6 +5979,7 @@ class ProductSuiteTab(QWidget):
|
||||
pull_running = state.pull_running()
|
||||
default_gateway = self._is_default_gateway()
|
||||
supported_gateway = default_gateway or self._is_direct_gateway()
|
||||
ai_write_config_error = self._ai_write_config_error()
|
||||
self.pull_button.setText(
|
||||
"正在停止..."
|
||||
if pull_running and state.pull_stop_requested
|
||||
@@ -6018,13 +6036,18 @@ class ProductSuiteTab(QWidget):
|
||||
self._refresh_totals(state)
|
||||
ai_running = state.ai_worker is not None or state.ai_price_worker is not None
|
||||
self.ai_write_button.setEnabled(
|
||||
default_gateway and not ai_running and not generation_running
|
||||
not ai_write_config_error and not ai_running and not generation_running
|
||||
)
|
||||
if not default_gateway and not ai_running:
|
||||
self.ai_write_button.setToolTip("商品套图AI帮写仅支持默认网关")
|
||||
self.generate_button.setToolTip("自定义网关生成不计点数,实际费用以服务商为准")
|
||||
if ai_write_config_error and not ai_running:
|
||||
self.ai_write_button.setToolTip(
|
||||
"%s,请到⑤设置配置默认网关的地址、API Key 和图片理解模型"
|
||||
% ai_write_config_error
|
||||
)
|
||||
else:
|
||||
self.ai_write_button.setToolTip("")
|
||||
if not default_gateway and not ai_running:
|
||||
self.generate_button.setToolTip("自定义网关生成不计点数,实际费用以服务商为准")
|
||||
else:
|
||||
self.generate_button.setToolTip("")
|
||||
self.ai_cancel_button.setVisible(ai_running)
|
||||
self._update_resume_submitted_action(state)
|
||||
|
||||
@@ -372,7 +372,9 @@ class SettingsTab(QWidget):
|
||||
model_detail_layout.addLayout(action_layout)
|
||||
model_detail_layout.addWidget(self.test_result_label)
|
||||
|
||||
self.direct_gateway_notice = QLabel("图片理解与商品套图仅支持默认网关。")
|
||||
self.direct_gateway_notice = QLabel(
|
||||
"商品套图使用自定义网关生图;AI帮写仍使用默认网关的图片理解配置。"
|
||||
)
|
||||
self.direct_gateway_notice.setObjectName("directGatewayNoticeLabel")
|
||||
self.direct_gateway_notice.setStyleSheet("color: #6b7280;")
|
||||
self.direct_role_panel = QWidget()
|
||||
|
||||
@@ -525,8 +525,6 @@ class ProductSuiteAiWriteWorker(BaseWorker):
|
||||
def execute(self):
|
||||
if self.should_cancel():
|
||||
return {"cancelled": True}
|
||||
if appconfig.ai_backend(self.config) != "cmhub":
|
||||
raise ValueError("商品套图AI帮写仅支持默认网关,请到⑤设置切换后再使用")
|
||||
result = ai.analyze_product_images(
|
||||
self.instruction,
|
||||
self.context,
|
||||
|
||||
Reference in New Issue
Block a user