"use client"; import { Save } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { DETAIL_AGENT_LOCAL_MOONSHOT_BASE_URL, DETAIL_AGENT_LOCAL_MOONSHOT_DISPLAY_NAME, DETAIL_AGENT_LOCAL_MOONSHOT_MODEL_ID, } from "@/lib/ai/detail-agent-model-config"; import { PRODUCT_PLANNING_AI_MODEL_DEFAULT_BASE_URL, PRODUCT_PLANNING_AI_MODEL_DEFAULT_MODEL_ID, } from "@/lib/product-planning/model-config"; import type { LocalAiPlanningSectionsProps } from "../../_lib/types"; import { LocalAiGroupHeading, LocalAiSectionShell, LocalAiSectionSummary, } from "../local-ai-section-shell"; export function LocalAiPlanningSections({ siteSettings, setSiteSettings, productPlanningApiConfig, setProductPlanningApiConfig, productPlanningAiModelConfig, setProductPlanningAiModelConfig, moonshotDetailAgentConfig, setMoonshotDetailAgentConfig, isLocalAiSectionExpanded, toggleLocalAiSection, handleSaveProductPlanningApiConfig, handleSaveProductPlanningAiModelConfig, handleSaveMoonshotDetailAgentConfig, }: LocalAiPlanningSectionsProps) { return ( <> 配置商品策划工具页面使用的淘宝 / 京东 Onebound、问大家和销量接口。保存后商品策划相关接口会优先读取这里的配置,未填写时才回退到环境变量。 } expanded={isLocalAiSectionExpanded("product-planning-api")} id="local-ai-section-product-planning-api" onToggle={() => toggleLocalAiSection("product-planning-api")} summary={ } title="商品策划工具 API 配置" >
关闭后左侧导航入口会隐藏,商品策划页面和相关接口也会一并禁用。
setSiteSettings({ ...siteSettings, productPlanningEnabled: checked, }) } />
setProductPlanningApiConfig((prev) => ({ ...prev, oneboundBaseUrl: e.target.value, })) } placeholder="https://api-gw.onebound.cn" value={productPlanningApiConfig.oneboundBaseUrl} />
用于淘宝评价、商品详情、关键词洞察以及京东商品详情。
setProductPlanningApiConfig((prev) => ({ ...prev, detailPlusBaseUrl: e.target.value, })) } placeholder="http://ltai5tdb2ogyj59fquyedh.yydd.ai:18082/api/public/taobao-detail-plus" value={productPlanningApiConfig.detailPlusBaseUrl} />
竞品分析会优先用这个接口查询商品详情,查不到再走 Onebound 旧接口。
setProductPlanningApiConfig((prev) => ({ ...prev, detailPlusInternalBaseUrl: e.target.value, })) } placeholder="http://127.0.0.1:4000/api/public/taobao-detail-plus" value={productPlanningApiConfig.detailPlusInternalBaseUrl} />
服务器同机部署时可填内网地址,系统会先尝试内网再尝试公网。
setProductPlanningApiConfig((prev) => ({ ...prev, detailPlusApiKey: e.target.value, })) } placeholder="留空保存时会保留原 API Key" type="password" value={productPlanningApiConfig.detailPlusApiKey} />
setProductPlanningApiConfig((prev) => ({ ...prev, qaApiUrl: e.target.value, })) } placeholder="http://119.91.237.2:5432/taobao_social_feed_aggregate" value={productPlanningApiConfig.qaApiUrl} />
用于商品策划工具中的问大家抓取。
setProductPlanningApiConfig((prev) => ({ ...prev, taobaoApiKey: e.target.value, })) } placeholder="请输入 Onebound API Key" type="password" value={productPlanningApiConfig.taobaoApiKey} />
setProductPlanningApiConfig((prev) => ({ ...prev, taobaoApiSecret: e.target.value, })) } placeholder="请输入 Onebound API Secret" type="password" value={productPlanningApiConfig.taobaoApiSecret} />
setProductPlanningApiConfig((prev) => ({ ...prev, qaToken: e.target.value, })) } placeholder="请输入问大家抓取 Token" type="password" value={productPlanningApiConfig.qaToken} />
setProductPlanningApiConfig((prev) => ({ ...prev, saleApiUrl: e.target.value, })) } placeholder="http://119.91.237.2:5432/taobao_item_month_sale" value={productPlanningApiConfig.saleApiUrl} />
用于商品策划工具中的销量查询。
setProductPlanningApiConfig((prev) => ({ ...prev, saleToken: e.target.value, })) } placeholder="请输入销量查询 Token" type="password" value={productPlanningApiConfig.saleToken} />
企划数据库回写配置
旧接口兜底查到的淘宝详情会同步写入新的企划详情表,供后续新接口命中。
SSL setProductPlanningApiConfig((prev) => ({ ...prev, planningDbSsl: checked, })) } />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbHost: e.target.value, })) } placeholder="156.225.27.52" value={productPlanningApiConfig.planningDbHost} />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbPort: e.target.value, })) } placeholder="60023" value={productPlanningApiConfig.planningDbPort} />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbDatabase: e.target.value, })) } placeholder="planning_database" value={productPlanningApiConfig.planningDbDatabase} />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbUser: e.target.value, })) } placeholder="planning_user" value={productPlanningApiConfig.planningDbUser} />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbPassword: e.target.value, })) } placeholder="留空保存时会保留原密码" type="password" value={productPlanningApiConfig.planningDbPassword} />
setProductPlanningApiConfig((prev) => ({ ...prev, planningDbCharset: e.target.value, })) } placeholder="utf8mb4" value={productPlanningApiConfig.planningDbCharset} />

• 当前功能状态: {siteSettings.productPlanningEnabled ? "已启用,左侧导航和接口开放中。" : "已关闭,入口、页面和接口都会被禁用。"}

• 竞品分析会优先读取详情增强接口;未命中时自动走旧接口,并将旧结果回写到企划详情表。

• 若某个字段留空,系统会继续尝试读取旧环境变量,避免你切换配置期间功能直接中断。

为商品策划工具单独绑定一套分析模型。开启后,评价分析、问大家分析、竞品图片分析和 SKU 卖点分析会优先走这里配置的 OpenAI 兼容模型,不再依赖站点默认模型。 } expanded={isLocalAiSectionExpanded("product-planning-ai-model")} id="local-ai-section-product-planning-ai-model" onToggle={() => toggleLocalAiSection("product-planning-ai-model")} summary={ } title="商品策划专用 AI 模型" >
推荐在商品策划需要固定分析口径时开启。关闭后会自动回退到站点当前可用的默认模型。
setProductPlanningAiModelConfig((prev) => ({ ...prev, enabled: checked, })) } />
setProductPlanningAiModelConfig((prev) => ({ ...prev, providerName: e.target.value, })) } placeholder="Product Planning Qwen3-VL" value={productPlanningAiModelConfig.providerName} />
setProductPlanningAiModelConfig((prev) => ({ ...prev, displayName: e.target.value, })) } placeholder="商品策划专用 Qwen3-VL" value={productPlanningAiModelConfig.displayName} />
setProductPlanningAiModelConfig((prev) => ({ ...prev, baseUrl: e.target.value, })) } placeholder={PRODUCT_PLANNING_AI_MODEL_DEFAULT_BASE_URL} value={productPlanningAiModelConfig.baseUrl} />
支持填写服务根地址,例如 `http://103.118.245.6:6081`。系统会自动兼容补全 `/v1` 路径。
setProductPlanningAiModelConfig((prev) => ({ ...prev, modelId: e.target.value, })) } placeholder={PRODUCT_PLANNING_AI_MODEL_DEFAULT_MODEL_ID} value={productPlanningAiModelConfig.modelId} />
你的 Qwen3-VL OpenAI 兼容接口若使用默认模型名,可直接保留 `Qwen3-VL-4B-Instruct`。
setProductPlanningAiModelConfig((prev) => ({ ...prev, apiKey: e.target.value, })) } placeholder="请输入商品策划专用模型 API Key" type="password" value={productPlanningAiModelConfig.apiKey} />

• 开启后,商品策划页的文本分析和图片分析都会优先使用这里配置的独立模型。

• 关闭后,系统会继续回退到站点默认文本/视觉模型,不会影响其他页面的模型设置。

为 AI详情生成 单独配置 Moonshot 官方 Kimi K2.6 模型。保存后会自动绑定到“AI详情生成 - Agent专用模型”。 } expanded={isLocalAiSectionExpanded("moonshot-detail-agent")} id="local-ai-section-moonshot-detail-agent" onToggle={() => toggleLocalAiSection("moonshot-detail-agent")} summary={ } title={<>Moonshot 官方 Kimi K2.6 配置} >
setMoonshotDetailAgentConfig((prev) => ({ ...prev, providerName: e.target.value, })) } placeholder="Moonshot AI (Official)" value={moonshotDetailAgentConfig.providerName} />
setMoonshotDetailAgentConfig((prev) => ({ ...prev, baseUrl: e.target.value, })) } placeholder={DETAIL_AGENT_LOCAL_MOONSHOT_BASE_URL} value={moonshotDetailAgentConfig.baseUrl} />
根据 Moonshot 官方文档,OpenAI 兼容接口地址为 ` {DETAIL_AGENT_LOCAL_MOONSHOT_BASE_URL}`
setMoonshotDetailAgentConfig((prev) => ({ ...prev, apiKey: e.target.value, })) } placeholder={ moonshotDetailAgentConfig.providerId ? "留空则不修改当前 Key" : "请输入 Moonshot 官方 API Key" } type="password" value={moonshotDetailAgentConfig.apiKey} />
setMoonshotDetailAgentConfig((prev) => ({ ...prev, modelId: e.target.value, })) } placeholder={DETAIL_AGENT_LOCAL_MOONSHOT_MODEL_ID} value={moonshotDetailAgentConfig.modelId} />
已按你提供的 Moonshot 官方文档默认填写 `kimi-k2.6`;保存后系统会自动创建/更新对应模型记录。
setMoonshotDetailAgentConfig((prev) => ({ ...prev, displayName: e.target.value, })) } placeholder={DETAIL_AGENT_LOCAL_MOONSHOT_DISPLAY_NAME} value={moonshotDetailAgentConfig.displayName} />
关闭后仍会保留记录,但不会被 AI详情生成 选作专用 Agent 模型。
setMoonshotDetailAgentConfig((prev) => ({ ...prev, isEnabled: checked, })) } /> {moonshotDetailAgentConfig.isEnabled ? "已开启" : "已关闭"}

• 专用于 AI详情生成 的分镜规划与排版复审,不影响普通 Agent 对话。

• 系统会按多模态 Agent 模型写入:支持视觉、支持结构化规划、支持协议复审。

• 保存成功后会自动写入“AI详情生成 - Agent专用模型”。

); }