From 02a65d97ee637294b59c6251739b53f32b5c8411 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 18 Apr 2026 14:43:26 +0800 Subject: [PATCH] feat: streamline openai tkd defaults --- code/app/admin/controller/Site.php | 8 +++++++- .../DomainBatchImportTemplateHelper.php | 12 ++++++------ .../helper/DomainBootstrapRegisterHelper.php | 9 ++++++--- .../site-domain-import-template.xlsx | Bin 10616 -> 10718 bytes 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/code/app/admin/controller/Site.php b/code/app/admin/controller/Site.php index 53101c1..d7ab80f 100644 --- a/code/app/admin/controller/Site.php +++ b/code/app/admin/controller/Site.php @@ -1270,8 +1270,14 @@ class Site extends BaseController } $strStrategyProfile = $this->normalizeStrategyProfile($arrRowAssoc['strategy_profile'] ?? DomainModel::SEO_STRATEGY_PROFILE_STANDARD); - $strTkdMode = DomainModel::normalizeTkdMode((string)($arrRowAssoc['tkd_mode'] ?? '')); + $strRawTkdMode = trim((string)($arrRowAssoc['tkd_mode'] ?? '')); $strTkdProvider = DomainModel::normalizeTkdProvider((string)($arrRowAssoc['tkd_provider'] ?? DomainModel::TKD_PROVIDER_LOCAL)); + $strTkdMode = $strRawTkdMode !== '' + ? DomainModel::normalizeTkdMode($strRawTkdMode) + : ''; + if ($strTkdMode === '' && $strTkdProvider === DomainModel::TKD_PROVIDER_OPENAI) { + $strTkdMode = DomainModel::TKD_MODE_AI_OPTIMIZE; + } $arrDomain = [ 'd_domain' => $this->normalizeStoredDomain($arrRowAssoc['d_domain'] ?? '', $arrRowAssoc['d_match_type'] ?? DomainModel::MATCH_TYPE_EXACT), 't_id' => $arrRowAssoc['t_id'] ?? 1, diff --git a/code/app/common/helper/DomainBatchImportTemplateHelper.php b/code/app/common/helper/DomainBatchImportTemplateHelper.php index 373105e..239ea5c 100644 --- a/code/app/common/helper/DomainBatchImportTemplateHelper.php +++ b/code/app/common/helper/DomainBatchImportTemplateHelper.php @@ -23,6 +23,8 @@ class DomainBatchImportTemplateHelper 'd_domain' => '域名', 'd_name' => '站点名称', 't_id' => '模板ID', + 'tkd_provider' => 'TKD来源', + 'tkd_mode' => 'TKD模式', 'd_index_title' => '首页标题', 'd_index_keywords' => '首页关键词', 'd_index_description' => '首页描述', @@ -40,8 +42,6 @@ class DomainBatchImportTemplateHelper 'd_content_encode' => '内容编码', 'info_id' => '信息ID', 'd_seo_cfg' => '高级SEO配置JSON', - 'tkd_mode' => 'TKD模式', - 'tkd_provider' => 'TKD来源', ]; } @@ -154,6 +154,8 @@ class DomainBatchImportTemplateHelper 'd_domain', 'd_name', 't_id', + 'tkd_provider', + 'tkd_mode', 'd_index_title', 'd_index_keywords', 'd_index_description', @@ -171,8 +173,6 @@ class DomainBatchImportTemplateHelper 'd_content_encode', 'info_id', 'd_seo_cfg', - 'tkd_mode', - 'tkd_provider', ]; } @@ -199,8 +199,8 @@ class DomainBatchImportTemplateHelper 'd_content_encode' => "内容编码,通常填 0。\n可选值说明:\n- 0:默认编码方式。普通站直接用这个。\n- 其他值:特殊历史兼容场景才会用,运营不要自行改。\n不会判断就填 0。", 'info_id' => "信息 ID,通常填 0。\n可选值说明:\n- 0:默认即可。\n- 其他数字:通常是历史数据联动或特殊资源绑定才会用。\n普通新站不要改。", 'd_seo_cfg' => "高级 SEO 配置 JSON。普通运营通常留空。\n适用场景:\n- 要覆盖默认 SEO 行为\n- 要补结构化数据\n- 要定制 forge / route_group 等技术项\n注意:必须填写合法 JSON,例如 {\"forge\":{\"route_group\":\"film\"}}。\n如果看不懂,就留空。", - 'tkd_mode' => "TKD 模式。一般可留空,由系统自动判断。\n常见可选值说明:\n- 留空:推荐。系统按当前导入内容自动选择。\n- 1:偏向使用导入内容/现成内容。\n- 2:偏向使用系统生成或增强策略。\n不同环境里数字语义可能有历史兼容差异,所以运营不建议手改;只有技术明确要求时再填。", - 'tkd_provider' => "TKD 来源。一般保持 local 或留空。\n可选值说明:\n- local:本地默认来源,最稳,常规就用它。\n- openai:走 AI 生成或 AI 优化链路,只有明确开了这套能力时才填。\n- 其他值:属于技术兼容项,不建议运营手填。\n不确定就留空或填 local。", + 'tkd_mode' => "TKD 模式。一般可留空,由系统自动判断。\n常见可选值说明:\n- 留空:推荐。系统会按上下文自动选择。\n - 如果 TKD来源=openai,则留空会自动按 2 / ai_optimize 处理。\n - 如果首页标题、关键词、描述已经手工填写,则更偏向导入现成内容。\n - 如果都没填且来源不是 openai,则会走默认自动生成策略。\n- 1:偏向使用导入内容/现成内容。\n- 2:偏向使用系统生成或 AI 优化策略。\n- 3:强制按导入内容处理。\n不确定时:local 可留空,openai 也可以直接留空。", + 'tkd_provider' => "TKD 来源。一般保持 local 或按需填 openai。\n可选值说明:\n- local:本地默认来源,最稳,常规就用它。\n- openai:走 AI 生成或 AI 优化链路。若你填 openai 且 TKD模式留空,系统会自动按 2 / ai_optimize 处理。\n- 其他值:属于技术兼容项,不建议运营手填。\n想走 OpenAI 全自动时,推荐:TKD来源=openai,TKD模式留空或直接填 2。", ]; } diff --git a/code/app/common/helper/DomainBootstrapRegisterHelper.php b/code/app/common/helper/DomainBootstrapRegisterHelper.php index 1bb2ce1..e1e9099 100644 --- a/code/app/common/helper/DomainBootstrapRegisterHelper.php +++ b/code/app/common/helper/DomainBootstrapRegisterHelper.php @@ -61,16 +61,19 @@ class DomainBootstrapRegisterHelper $arrSeoCfgInput = []; } + $strTkdProviderInput = trim((string)($arrPayload['tkd_provider'] ?? $arrPayload['seo_tkd_provider'] ?? ($arrSeoCfgInput['tkd']['provider'] ?? DomainModel::TKD_PROVIDER_LOCAL))); + $strTkdProviderNormalized = DomainModel::normalizeTkdProvider($strTkdProviderInput); $strTkdModeInput = trim((string)($arrPayload['tkd_mode'] ?? $arrPayload['seo_tkd_mode'] ?? ($arrSeoCfgInput['tkd']['mode'] ?? ''))); if ($strTkdModeInput === '') { - $strTkdModeInput = $boolHasImportedHomeTkd ? DomainModel::TKD_MODE_FORCE_IMPORT : DomainModel::TKD_MODE_AUTO_GENERATE; + $strTkdModeInput = $strTkdProviderNormalized === DomainModel::TKD_PROVIDER_OPENAI + ? DomainModel::TKD_MODE_AI_OPTIMIZE + : ($boolHasImportedHomeTkd ? DomainModel::TKD_MODE_FORCE_IMPORT : DomainModel::TKD_MODE_AUTO_GENERATE); } - $strTkdProviderInput = trim((string)($arrPayload['tkd_provider'] ?? $arrPayload['seo_tkd_provider'] ?? ($arrSeoCfgInput['tkd']['provider'] ?? DomainModel::TKD_PROVIDER_LOCAL))); $arrSeoCfgInput['tkd'] = array_merge( (array)($arrSeoCfgInput['tkd'] ?? []), [ 'mode' => DomainModel::normalizeTkdMode($strTkdModeInput), - 'provider' => DomainModel::normalizeTkdProvider($strTkdProviderInput), + 'provider' => $strTkdProviderNormalized, ] ); diff --git a/code/public/_admin_templates/domain-import/site-domain-import-template.xlsx b/code/public/_admin_templates/domain-import/site-domain-import-template.xlsx index 06fd0cccdefc77bbb1c36ccf13eafc733d6e02b3..0cd7caef13eb2850433b109aaa3eb5fd9959586b 100644 GIT binary patch delta 4745 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 delta 4588 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