From bfe7a8d49cd546814439a4843e0b295ee9549455 Mon Sep 17 00:00:00 2001 From: chermack <505360893@qq.com> Date: Fri, 11 Sep 2026 09:02:09 +0800 Subject: [PATCH] feat: launch Chat Assistant product page --- README.md | 10 + assets/chat-assistant-hero-v1.jpg | Bin 0 -> 96077 bytes index.html | 13 +- nginx.conf | 5 + products/chat-assistant/index.html | 40 ++++ sitemap.xml | 6 + .../ChatAssistantProductPage.jsx | 135 +++++++++++ src/chat-assistant/chat-assistant.css | 219 ++++++++++++++++++ src/chat-assistant/main.jsx | 10 + vite.config.js | 3 +- 箴言助手-Chat-Assistant-产品页设计文档.md | 80 +++++++ 11 files changed, 517 insertions(+), 4 deletions(-) create mode 100644 assets/chat-assistant-hero-v1.jpg create mode 100644 products/chat-assistant/index.html create mode 100644 src/chat-assistant/ChatAssistantProductPage.jsx create mode 100644 src/chat-assistant/chat-assistant.css create mode 100644 src/chat-assistant/main.jsx create mode 100644 箴言助手-Chat-Assistant-产品页设计文档.md diff --git a/README.md b/README.md index 06a61b1..ca7f2e6 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,16 @@ 海南荣刻科技有限公司官方网站。 +## 本地预览 + +```bash +docker compose up -d --build +``` + +- 官网首页:`http://127.0.0.1:8081/` +- 荣刻驭境:`http://127.0.0.1:8081/products/roncarve-harness/` +- 箴言助手:`http://127.0.0.1:8081/products/chat-assistant/` + ## 百度收录上线清单 站点已经在代码中提供以下收录基础文件: diff --git a/assets/chat-assistant-hero-v1.jpg b/assets/chat-assistant-hero-v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9fe848d1cb6d3c517532aaa3426a06d7808ed77c GIT binary patch literal 96077 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 =-@nh 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 i?(=m!%Ul@XRONCARVE HARNESS

本地客户端连接本地项目,平台共享工作空间承载团队协同,并内置精准插件检索与高效热插拔。

+ + DOMAIN AI / ADVISORY产品演示 +

箴言助手

+ CHAT ASSISTANT +

连接企业数据、领域知识与业务工具,为垂直行业提供有依据、可落地、可追溯的智能建议。

+
能力链路 @@ -1257,7 +1264,7 @@ zh: { title: '海南荣刻科技有限公司 - 数据筑基 · AI 落地', skip: '跳到主要内容', brand: '荣刻科技', nav_label: '主导航', home_label: '荣刻科技首页', lang_label: '语言切换', menu_open: '打开导航菜单', menu_close: '关闭导航菜单', theme_label: '外观模式选择', theme_system: '跟随系统', theme_light: '浅色外观', theme_dark: '深色外观', theme_system_short: 'Auto', theme_light_short: 'Light', theme_dark_short: 'Dark', language_zh: '简体中文', language_en: 'English', - nav_products: '产品', product_list_label: '产品列表', product_status: '即将开放', product_harness_name: '荣刻驭境', product_harness_desc: '本地客户端连接本地项目,平台共享工作空间承载团队协同,并内置精准插件检索与高效热插拔。', nav_about: '能力链路', nav_services: '解决方案', nav_advantages: '核心优势', nav_offices: '交付网络', nav_contact: '预约咨询', + nav_products: '产品', product_list_label: '产品列表', product_status: '即将开放', product_harness_name: '荣刻驭境', product_harness_desc: '本地客户端连接本地项目,平台共享工作空间承载团队协同,并内置精准插件检索与高效热插拔。', product_assistant_status: '产品演示', product_assistant_name: '箴言助手', product_assistant_desc: '连接企业数据、领域知识与业务工具,为垂直行业提供有依据、可落地、可追溯的智能建议。', nav_about: '能力链路', nav_services: '解决方案', nav_advantages: '核心优势', nav_offices: '交付网络', nav_contact: '预约咨询', hero_eyebrow: '海南荣刻科技有限公司 · AI 与数据基础设施', hero_line1: '让企业数据', hero_line2: '成为 AI 生产力', hero_desc: '从数据治理、模型优化到私有化部署,荣刻科技为企业构建可落地、可持续、可掌控的 AI 能力体系。', hero_primary: '预约 AI 场景诊断', hero_secondary: '查看解决方案', proof_data: '7 年数据技术积累', proof_private: '支持私有化部署', proof_delivery: '成都 / 海口双城交付', @@ -1291,7 +1298,7 @@ en: { title: 'Hainan Roncarve Technology - Data Foundation · AI Delivery', skip: 'Skip to main content', brand: 'Roncarve Tech', nav_label: 'Main navigation', home_label: 'Roncarve Tech home', lang_label: 'Language selector', menu_open: 'Open navigation menu', menu_close: 'Close navigation menu', theme_label: 'Appearance selector', theme_system: 'Follow System', theme_light: 'Light appearance', theme_dark: 'Dark appearance', theme_system_short: 'Auto', theme_light_short: 'Light', theme_dark_short: 'Dark', language_zh: '简体中文', language_en: 'English', - nav_products: 'Products', product_list_label: 'Product list', product_status: 'Coming Soon', product_harness_name: 'Roncarve Harness', product_harness_desc: 'A local client for browser-based local projects and a shared workspace for team collaboration, with precise plugin discovery and hot swapping.', nav_about: 'Capabilities', nav_services: 'Solutions', nav_advantages: 'Advantages', nav_offices: 'Delivery', nav_contact: 'Book a Call', + nav_products: 'Products', product_list_label: 'Product list', product_status: 'Coming Soon', product_harness_name: 'Roncarve Harness', product_harness_desc: 'A local client for browser-based local projects and a shared workspace for team collaboration, with precise plugin discovery and hot swapping.', product_assistant_status: 'Product Demo', product_assistant_name: 'Chat Assistant', product_assistant_desc: 'Connect enterprise data, domain knowledge and business tools for grounded, actionable and traceable vertical-industry advice.', nav_about: 'Capabilities', nav_services: 'Solutions', nav_advantages: 'Advantages', nav_offices: 'Delivery', nav_contact: 'Book a Call', hero_eyebrow: 'Hainan Roncarve Technology Co., Ltd. · AI + DATA INFRASTRUCTURE', hero_line1: 'Turn enterprise data', hero_line2: 'into AI productivity', hero_desc: 'From data governance and model optimization to private deployment, Roncarve builds practical, sustainable and controllable enterprise AI systems.', hero_primary: 'Book an AI Discovery Call', hero_secondary: 'Explore Solutions', proof_data: '7 years in data technology', proof_private: 'Private deployment ready', proof_delivery: 'Chengdu / Haikou delivery', diff --git a/nginx.conf b/nginx.conf index d9b5a91..eb6320f 100644 --- a/nginx.conf +++ b/nginx.conf @@ -9,6 +9,11 @@ server { return 301 /products/roncarve-harness/; } + location = /products/chat-assistant { + absolute_redirect off; + return 301 /products/chat-assistant/; + } + location / { try_files $uri $uri/ /index.html; } diff --git a/products/chat-assistant/index.html b/products/chat-assistant/index.html new file mode 100644 index 0000000..a204dd2 --- /dev/null +++ b/products/chat-assistant/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + 箴言助手 Chat Assistant|垂直行业智能建议助手 - 荣刻科技 + + + +
+ + + diff --git a/sitemap.xml b/sitemap.xml index 161eb58..4eaf531 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -12,4 +12,10 @@ weekly 0.9 + + https://www.roncarve.com/products/chat-assistant/ + 2026-09-11 + weekly + 0.9 + diff --git a/src/chat-assistant/ChatAssistantProductPage.jsx b/src/chat-assistant/ChatAssistantProductPage.jsx new file mode 100644 index 0000000..a5fb8ca --- /dev/null +++ b/src/chat-assistant/ChatAssistantProductPage.jsx @@ -0,0 +1,135 @@ +import { + ArrowRight, Brain, ChartLineUp, CheckCircle, CirclesFour, + Database, Factory, List, LockKey, MagnifyingGlass, ShieldCheck, + ShoppingCart, Stack, UserFocus, X +} from '@phosphor-icons/react'; +import { useEffect, useMemo, useState } from 'react'; + +const zhIndustries = [ + { id: 'insurance', label: '保险', icon: ShieldCheck, title: '让保障建议更精准、更可信', description: '联动客户需求、保单信息、产品条款与服务记录,在数据权限和合规策略约束下辅助顾问组织保障建议。', evidence: ['客户需求与家庭画像', '保单、产品与条款事实', '合规表达与适当性策略'], action: '识别保障缺口,生成匹配客户目标的建议,并明确依据、适用条件与下一步沟通重点。' }, + { id: 'manufacturing', label: '制造', icon: Factory, title: '把经验沉淀进生产与供应链判断', description: '接入生产、质量、库存与供应商数据,融合工艺知识和处置规则,辅助团队识别风险与改进路径。', evidence: ['生产与质量数据', '工艺知识与异常规则', '供应链历史案例'], action: '定位异常的可能原因,给出处置顺序、验证条件与协同建议。' }, + { id: 'retail', label: '零售', icon: ShoppingCart, title: '把门店与商品信号转成运营动作', description: '连接商品、库存、会员和营销数据,结合区域经验与运营策略,辅助门店形成可执行方案。', evidence: ['商品与库存状态', '会员与渠道行为', '区域运营策略'], action: '形成选品、补货与活动建议,并说明适用门店和预期目标。' }, + { id: 'services', label: '专业服务', icon: UserFocus, title: '让专业判断有章可循、有据可查', description: '将项目材料、专业知识、服务流程与质量标准组织起来,辅助团队提高交付一致性。', evidence: ['项目与客户材料', '专业方法与知识库', '交付规范和检查项'], action: '生成结构化判断、工作建议与待核验事项,帮助团队稳步推进。' } +]; + +const enIndustries = [ + { id: 'insurance', label: 'Insurance', icon: ShieldCheck, title: 'Make protection advice precise and trustworthy', description: 'Connect customer needs, policies, product terms and service history under data-access and compliance controls.', evidence: ['Customer needs and household context', 'Policy, product and coverage facts', 'Compliance and suitability policies'], action: 'Identify protection gaps and propose suitable next steps with clear evidence and conditions.' }, + { id: 'manufacturing', label: 'Manufacturing', icon: Factory, title: 'Bring experience into supply-chain decisions', description: 'Connect production, quality, inventory and supplier data with process knowledge.', evidence: ['Production and quality data', 'Process knowledge and rules', 'Supply-chain cases'], action: 'Prioritize likely causes, verification steps and cross-team actions.' }, + { id: 'retail', label: 'Retail', icon: ShoppingCart, title: 'Turn store and product signals into action', description: 'Combine merchandise, inventory, membership and campaign data with regional playbooks.', evidence: ['Merchandise and inventory', 'Member and channel behavior', 'Regional playbooks'], action: 'Propose assortment, replenishment and campaign actions for the right stores.' }, + { id: 'services', label: 'Professional Services', icon: UserFocus, title: 'Make expert judgement consistent and traceable', description: 'Organize project materials, specialist knowledge, service workflows and quality standards.', evidence: ['Project and client materials', 'Methods and knowledge base', 'Delivery standards'], action: 'Produce structured findings, recommendations and open verification items.' } +]; + +const copy = { + zh: { + brand: '荣刻科技', product: '箴言助手', navCapabilities: '核心能力', navIndustries: '行业扩展', navTrust: '安全可信', navCta: '预约演示', language: 'EN', menu: '打开导航', close: '关闭导航', + eyebrow: 'CHAT ASSISTANT / 箴言助手', titleLine1: '让行业经验,', titleLine2: '成为', titleAccent: '每一次决策的底气', + summary: '连接企业数据与领域知识,基于可信的信息来源和真实业务经验,为你提供有依据、可落地的智能建议,让复杂问题更快找到确定的答案。', primary: '预约产品演示', secondary: '了解核心能力', + proof: ['连接企业数据', '融合领域知识', '给出有依据的建议'], visualAlt: '箴言助手基于企业数据与领域知识生成建议的产品界面', + capabilitiesKicker: '核心能力', capabilitiesTitle: '六大能力,构建企业的专属智能伙伴', capabilitiesSummary: '从数据连接到行业落地,箴言助手把建议生成所需的上下文、工具与治理能力组织成一套可持续运营的系统。', + capabilities: [ + ['企业数据连接', '连接业务系统与数据库,以受控范围、安全字段和运行时查询构建事实底座。'], + ['领域知识融合', '将行业经验沉淀为技能、意图、工具、知识与表达策略,按场景组合调用。'], + ['智能分析建议', '结合会话上下文与工具事实,形成面向具体对象、具体目标的可执行建议。'], + ['可信来源追溯', '记录意图、技能、工具调用、模型响应与关键依据,支持分析、审计和回放。'], + ['行业场景扩展', '替换数据、知识、工具与策略资源,即可从保险扩展到更多专业领域。'], + ['安全合规保障', '通过统一身份、角色权限、数据范围、字段脱敏与追加式审计守住边界。'] + ], + systemKicker: 'DOMAIN INTELLIGENCE SYSTEM', systemTitle: ['行业能力,', '可以持续生长'], systemSummary: '以保险顾问服务为示例,将客户需求、产品条款、权益与服务记录组织为建议依据;通用资源体系让同一套助手能够适配不同领域的业务对象、知识结构与工作方法。', industryLabel: '选择行业示例', industryEvidence: '建议依据', industryAction: '示例建议', industries: zhIndustries, + processKicker: 'FROM CONTEXT TO ACTION', processTitle: '从业务信息,到可执行建议', processSummary: '每次回答都经历清晰的连接、理解、建议与追溯路径,让行业经验真正进入业务流程。', + process: [['01', '连接', '接入业务系统、知识资源与模型服务,划定数据范围和使用边界。'], ['02', '理解', '识别意图、上下文与业务对象,选择匹配的技能、工具和表达策略。'], ['03', '建议', '基于工具事实和行业经验生成建议,明确依据、条件与下一步行动。'], ['04', '追溯', '保留会话、资源版本、工具调用、耗时与结果,支持复盘和持续优化。']], + trustKicker: 'SECURE BY DESIGN', trustTitle: ['建议可以智能,', '边界必须清晰'], trustSummary: '箴言助手以企业身份、数据权限和可审计运行作为产品底座。模型负责理解与表达,关键事实来自受控数据与业务工具。', + trustItems: [['统一身份与明确授权', '接入 Roncarve IAM OIDC,以稳定外部身份绑定账号,通过显式应用准入和角色授权控制访问。'], ['数据范围与字段保护', '数据源、对象范围和字段元数据独立管理,运行时按权限查询并对敏感字段实施脱敏。'], ['全链路指标与审计', '会话指标、Agent 选择、工具调用和管理操作均可查询,支持完整性校验与问题回放。']], + ctaKicker: 'CHAT ASSISTANT / PRODUCT DEMO', ctaTitle: ['从一个真实场景开始,', '让行业经验进入每一次决策'], ctaSummary: '告诉我们你的业务对象、数据基础、专业流程与安全要求,我们将一起梳理最适合的箴言助手落地路径。', ctaButton: '预约产品演示', copyright: '海南荣刻科技有限公司', footerSignal: '数据驱动 · AI 赋能 · 安全交付', record: '琼ICP备2025052166号-1', policeAlt: '公安备案图标' + }, + en: { + brand: 'Roncarve Tech', product: 'Chat Assistant', navCapabilities: 'Capabilities', navIndustries: 'Industries', navTrust: 'Trust', navCta: 'Book a Demo', language: '中文', menu: 'Open navigation', close: 'Close navigation', + eyebrow: 'CHAT ASSISTANT', titleLine1: 'Turn domain experience', titleLine2: 'into confidence for', titleAccent: 'every decision', summary: 'Connect enterprise data with domain knowledge to deliver grounded, actionable advice from trusted information and real operating experience.', primary: 'Book a Product Demo', secondary: 'Explore Capabilities', proof: ['Connect enterprise data', 'Apply domain knowledge', 'Ground every recommendation'], visualAlt: 'Chat Assistant product interface producing advice from enterprise data and domain knowledge', + capabilitiesKicker: 'CORE CAPABILITIES', capabilitiesTitle: 'Six capabilities for a dedicated enterprise intelligence partner', capabilitiesSummary: 'From governed data access to vertical delivery, Chat Assistant organizes the context, tools and controls required for dependable advice.', + capabilities: [['Enterprise Data', 'Connect systems and databases through governed scopes, protected fields and runtime queries.'], ['Domain Knowledge', 'Organize expertise as skills, intents, tools, knowledge and expression policies.'], ['Actionable Advice', 'Combine conversation context with tool-grounded facts for specific business objectives.'], ['Traceable Sources', 'Record intent, skills, tool calls, model responses and evidence for analysis and replay.'], ['Vertical Expansion', 'Adapt to a new industry by replacing data, knowledge, tools and policy resources.'], ['Security & Compliance', 'Protect enterprise boundaries with SSO, roles, scopes, masking and append-only audit.']], + systemKicker: 'DOMAIN INTELLIGENCE SYSTEM', systemTitle: ['Industry capability', 'grows with your business.'], systemSummary: 'Using insurance advisory as an example, the experience organizes customer needs, product terms, benefits and service context into grounded advice. The same resource model adapts to new objects, knowledge and operating methods.', industryLabel: 'Choose an example industry', industryEvidence: 'Evidence', industryAction: 'Example outcome', industries: enIndustries, + processKicker: 'FROM CONTEXT TO ACTION', processTitle: 'From business context to actionable advice', processSummary: 'Every response follows a clear connect, understand, advise and trace path.', process: [['01', 'Connect', 'Connect systems, knowledge and model services with explicit data boundaries.'], ['02', 'Understand', 'Resolve intent, context and entities, then select relevant skills, tools and policies.'], ['03', 'Advise', 'Use tool-grounded facts and domain experience to explain evidence and next actions.'], ['04', 'Trace', 'Preserve conversations, resource versions, tool calls, latency and outcomes.']], + trustKicker: 'SECURE BY DESIGN', trustTitle: ['Advice can be intelligent.', 'Boundaries must stay explicit.'], trustSummary: 'Enterprise identity, data authorization and observable operation are part of the product foundation. Models interpret and communicate; governed data and tools provide the facts.', trustItems: [['Identity and explicit access', 'Integrate Roncarve IAM OIDC with stable external identity binding, explicit application access and role grants.'], ['Data scope and field protection', 'Manage sources, object scopes and field metadata separately, enforcing access and masking at runtime.'], ['Metrics and audit end to end', 'Query conversation metrics, Agent selection, tool use and admin operations with integrity checks and replay.']], + ctaKicker: 'CHAT ASSISTANT / PRODUCT DEMO', ctaTitle: ['Start with one real scenario.', 'Put domain experience into every decision.'], ctaSummary: 'Tell us about your business entities, data foundation, specialist workflow and security needs. We will shape the right delivery path together.', ctaButton: 'Book a Product Demo', copyright: 'Hainan Roncarve Technology Co., Ltd', footerSignal: 'DATA-DRIVEN · AI-POWERED · SECURE DELIVERY', record: 'Qiong ICP No. 2025052166-1', policeAlt: 'Public security filing icon' + } +}; + +const capabilityIcons = [Database, Brain, ChartLineUp, MagnifyingGlass, CirclesFour, ShieldCheck]; +const processIcons = [Database, Brain, ChartLineUp, Stack]; +const trustIcons = [LockKey, ShieldCheck, MagnifyingGlass]; + +function mailto(language) { + const subject = language === 'zh' ? '[箴言助手] 产品演示预约' : '[Chat Assistant] Product demo request'; + const body = language === 'zh' ? '您好,我想预约箴言助手产品演示。\n\n所属行业:\n业务场景:\n现有数据/系统:\n部署要求:\n联系人:' : 'Hello, I would like to book a Chat Assistant demo.\n\nIndustry:\nUse case:\nCurrent data/systems:\nDeployment needs:\nContact:'; + return `mailto:contact@roncarve.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; +} + +function ProductNav({ language, setLanguage }) { + const t = copy[language]; + const [open, setOpen] = useState(false); + const close = () => setOpen(false); + return ; +} + +function IndustryExplorer({ t }) { + const [activeId, setActiveId] = useState(t.industries[0].id); + useEffect(() => setActiveId(t.industries[0].id), [t]); + const active = t.industries.find((item) => item.id === activeId) ?? t.industries[0]; + const ActiveIcon = active.icon; + return
+
{t.industryLabel}
+
{t.industries.map((industry) => { const Icon = industry.icon; const selected = industry.id === active.id; return ; })}
+
+
{active.label}

{active.title}

+

{active.description}

+
{t.industryEvidence}
    {active.evidence.map((item) =>
  • {item}
  • )}
{t.industryAction}

{active.action}

+
+
; +} + +export function ChatAssistantProductPage() { + const [language, setLanguageState] = useState(() => { try { return localStorage.getItem('site_lang') === 'en' ? 'en' : 'zh'; } catch { return 'zh'; } }); + const t = copy[language]; + const meta = useMemo(() => language === 'zh' ? { title: '箴言助手 Chat Assistant|垂直行业智能建议助手 - 荣刻科技', description: '箴言助手连接企业数据、领域知识与业务工具,为垂直行业提供有依据、可落地、可追溯的智能建议。' } : { title: 'Chat Assistant | Vertical Industry Advice from Roncarve', description: 'Chat Assistant connects enterprise data, domain knowledge and business tools to deliver grounded, actionable and traceable advice.' }, [language]); + const setLanguage = (next) => { setLanguageState(next); try { localStorage.setItem('site_lang', next); } catch { /* non-critical */ } }; + + useEffect(() => { document.documentElement.lang = language === 'zh' ? 'zh-CN' : 'en'; document.title = meta.title; document.querySelector('meta[name="description"]')?.setAttribute('content', meta.description); }, [language, meta]); + useEffect(() => { + const items = Array.from(document.querySelectorAll('[data-reveal]')); + if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { items.forEach((item) => item.classList.add('is-visible')); return undefined; } + const observer = new IntersectionObserver((entries) => entries.forEach((entry) => { if (entry.isIntersecting) { entry.target.classList.add('is-visible'); observer.unobserve(entry.target); } }), { threshold: .13 }); + items.forEach((item) => observer.observe(item)); + return () => observer.disconnect(); + }, [language]); + + return
+ {language === 'zh' ? '跳到主要内容' : 'Skip to main content'} + +
+
+

{t.eyebrow}

{t.titleLine1}{t.titleLine2}{language === 'en' ? ' ' : ''}{t.titleAccent}

{t.summary}

    {t.proof.map((item) =>
  • {item}
  • )}
+
{t.visualAlt}
KNOWLEDGECONNECTSPEOPLEANDPOSSIBILITIES
+
+ +
{t.capabilitiesKicker}

{t.capabilitiesTitle}

{t.capabilitiesSummary}

{t.capabilities.map(([title, description], index) => { const Icon = capabilityIcons[index]; return

{title}

{description}

; })}
+ +
{t.systemKicker}

{t.systemTitle.map((line) => {line})}

{t.systemSummary}

+ +
{t.processKicker}

{t.processTitle}

{t.processSummary}

{t.process.map(([number, title, description], index) => { const Icon = processIcons[index]; return
{number}

{title}

{description}

; })}
+ +
{t.trustKicker}

{t.trustTitle.map((line) => {line})}

{t.trustSummary}

{t.trustItems.map(([title, description], index) => { const Icon = trustIcons[index]; return

{title}

{description}

; })}
+ +
{t.ctaKicker}

{t.ctaTitle.map((line) => {line})}

{t.ctaSummary}

{t.ctaButton}
+
+ +
; +} diff --git a/src/chat-assistant/chat-assistant.css b/src/chat-assistant/chat-assistant.css new file mode 100644 index 0000000..03ab701 --- /dev/null +++ b/src/chat-assistant/chat-assistant.css @@ -0,0 +1,219 @@ +:root { + --ca-bg: #fff; + --ca-surface: #f6f8fc; + --ca-surface-blue: #edf4ff; + --ca-ink: #07152f; + --ca-text: #3f4f6a; + --ca-muted: #71809a; + --ca-line: #dce3ee; + --ca-blue: #0b63f6; + --ca-blue-strong: #004ed5; + --ca-mint: #13a98c; + --ca-shell: min(1320px, calc(100vw - 72px)); + --ca-display: Inter, "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif; + --ca-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; + --ca-ease: cubic-bezier(.2, .75, .2, 1); +} + +* { box-sizing: border-box; } +html { scroll-behavior: smooth; scroll-padding-top: 84px; } +body { margin: 0; min-width: 320px; overflow-x: hidden; background: var(--ca-bg); color: var(--ca-ink); font-family: var(--ca-display); -webkit-font-smoothing: antialiased; } +body, button, input { font-family: var(--ca-display); } +a { color: inherit; text-decoration: none; } +button { color: inherit; } +img { display: block; max-width: 100%; } +::selection { color: #fff; background: var(--ca-blue); } +:focus-visible { outline: 3px solid rgba(11, 99, 246, .35); outline-offset: 3px; } + +.assistant-page { min-height: 100vh; background: var(--ca-bg); } +.assistant-shell { width: var(--ca-shell); margin-inline: auto; } +.assistant-skip { position: fixed; z-index: 3000; top: 12px; left: 12px; padding: 10px 15px; border-radius: 8px; color: #fff; background: var(--ca-blue); transform: translateY(-150%); transition: transform .2s; } +.assistant-skip:focus { transform: translateY(0); } + +.assistant-nav { position: fixed; z-index: 1000; inset: 0 0 auto; height: 76px; border-bottom: 1px solid rgba(220, 227, 238, .88); background: rgba(255, 255, 255, .94); box-shadow: 0 8px 30px rgba(42, 64, 103, .035); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); } +.assistant-nav-inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 28px; } +.assistant-brand { display: inline-flex; align-items: center; gap: 11px; flex: 0 0 auto; } +.assistant-brand img { width: 39px; height: 39px; object-fit: contain; } +.assistant-brand > span { display: flex; flex-direction: column; gap: 4px; } +.assistant-brand strong { font-size: 16px; font-weight: 780; letter-spacing: .035em; } +.assistant-brand small { color: var(--ca-muted); font: 600 8px/1 var(--ca-mono); letter-spacing: .15em; } +.assistant-nav-links { display: flex; align-items: center; gap: 28px; } +.assistant-nav-links > a:not(.assistant-nav-cta) { position: relative; padding-block: 10px; font-size: 14px; font-weight: 650; } +.assistant-nav-links > a:not(.assistant-nav-cta)::after { content: ""; position: absolute; inset: auto 0 2px; height: 2px; background: var(--ca-blue); transform: scaleX(0); transform-origin: left; transition: transform .2s ease; } +.assistant-nav-links > a:not(.assistant-nav-cta):hover::after { transform: scaleX(1); } +.assistant-language { min-height: 38px; padding: 0 12px; border: 1px solid var(--ca-line); border-radius: 8px; background: #fff; font-size: 12px; font-weight: 700; cursor: pointer; } +.assistant-language:hover { border-color: #aab9d0; background: var(--ca-surface); } +.assistant-nav-cta, .assistant-button-primary { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 46px; padding: 0 20px; border: 1px solid var(--ca-blue); border-radius: 9px; color: #fff; background: var(--ca-blue); font-size: 14px; font-weight: 760; box-shadow: 0 10px 28px rgba(11, 99, 246, .17); transition: transform .2s var(--ca-ease), background .2s ease, box-shadow .2s ease; } +.assistant-nav-cta:hover, .assistant-button-primary:hover { background: var(--ca-blue-strong); transform: translateY(-2px); box-shadow: 0 15px 36px rgba(11, 99, 246, .23); } +.assistant-menu { display: none; place-items: center; width: 42px; height: 42px; border: 1px solid var(--ca-line); border-radius: 9px; background: #fff; cursor: pointer; } + +.assistant-hero { padding: 110px 0 20px; overflow: hidden; background: #fff; } +.assistant-hero-grid { display: grid; grid-template-columns: minmax(510px, .94fr) minmax(0, 1.06fr); align-items: start; gap: 32px; } +.assistant-hero-copy { padding-top: 35px; } +.assistant-eyebrow, .assistant-kicker { display: inline-flex; align-items: center; gap: 12px; margin: 0; color: var(--ca-blue); font: 750 11px/1.4 var(--ca-mono); letter-spacing: .15em; text-transform: uppercase; } +.assistant-eyebrow::after { content: ""; width: 34px; height: 1px; background: var(--ca-blue); } +.assistant-hero h1 { margin: 28px 0 0; font-size: clamp(48px, 4.1vw, 62px); line-height: 1.05; letter-spacing: -.07em; } +.assistant-hero h1 > span { display: block; } +.assistant-hero h1 em { color: var(--ca-blue); font-style: normal; } +.assistant-hero-summary { max-width: 500px; margin: 30px 0 0; color: var(--ca-text); font-size: 17px; line-height: 1.85; } +.assistant-hero-actions { display: flex; gap: 12px; margin-top: 34px; } +.assistant-button-secondary { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 20px; border: 1px solid #c8d3e2; border-radius: 9px; color: var(--ca-ink); background: #fff; font-size: 14px; font-weight: 750; transition: border-color .2s ease, background .2s ease, transform .2s var(--ca-ease); } +.assistant-button-secondary:hover { border-color: #9badc5; background: var(--ca-surface); transform: translateY(-2px); } +.assistant-proof { display: flex; flex-wrap: wrap; gap: 12px 24px; margin: 28px 0 0; padding: 0; color: var(--ca-text); list-style: none; } +.assistant-proof li { display: inline-flex; align-items: center; gap: 9px; font-size: 12px; font-weight: 620; } +.assistant-proof li span { width: 6px; height: 6px; border-radius: 50%; background: var(--ca-blue); } +.assistant-hero-visual { position: relative; margin: 0; overflow: hidden; border: 1px solid #dbe3ee; border-radius: 25px; background: var(--ca-surface); box-shadow: 0 35px 90px rgba(48, 70, 109, .13); } +.assistant-hero-visual::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .7); pointer-events: none; } +.assistant-hero-visual img { width: 100%; aspect-ratio: 1.31; object-fit: cover; object-position: center; } +.assistant-hero-visual figcaption { position: absolute; right: 15px; top: 50%; display: flex; flex-direction: column; gap: 4px; color: #697994; font: 600 7px/1.2 var(--ca-mono); letter-spacing: .08em; transform: translateY(-50%); } + +.assistant-capabilities { padding: 38px 0 124px; border-top: 1px solid #eef1f6; background: var(--ca-bg); } +.assistant-section-center { max-width: 780px; margin: 0 auto 58px; text-align: center; } +.assistant-section-center h2, .assistant-section-left h2, .assistant-section-split h2, .assistant-cta h2 { margin: 20px 0 0; font-size: clamp(38px, 4vw, 58px); line-height: 1.12; letter-spacing: -.055em; } +.assistant-section-center > p, .assistant-section-left > p, .assistant-section-split > p, .assistant-cta p { color: var(--ca-text); font-size: 16px; line-height: 1.8; } +.assistant-section-center > p { margin: 20px auto 0; } +.capability-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border-top: 1px solid var(--ca-line); border-bottom: 1px solid var(--ca-line); } +.capability-grid article { min-height: 250px; padding: 30px 22px; } +.capability-grid article + article { border-left: 1px solid var(--ca-line); } +.capability-icon { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 50%; color: var(--ca-blue); background: var(--ca-surface-blue); } +.capability-grid article:nth-child(even) .capability-icon { color: var(--ca-mint); background: #eaf8f4; } +.capability-grid h3 { margin: 28px 0 12px; font-size: 17px; letter-spacing: -.025em; } +.capability-grid p { margin: 0; color: var(--ca-muted); font-size: 12px; line-height: 1.72; } + +.assistant-system { padding: 126px 0; border-top: 1px solid #eef1f6; background: var(--ca-surface); } +.assistant-system-grid, .assistant-trust-grid { display: grid; grid-template-columns: minmax(320px, .72fr) minmax(620px, 1.3fr); gap: 86px; align-items: start; } +.assistant-section-left h2 span, .assistant-cta h2 span { display: block; } +.assistant-section-left > p { margin: 26px 0 0; } +.industry-explorer { overflow: hidden; border: 1px solid var(--ca-line); border-radius: 18px; background: #fff; box-shadow: 0 20px 65px rgba(58, 79, 116, .08); } +.industry-tab-label { padding: 17px 22px 11px; color: var(--ca-muted); font: 700 9px/1 var(--ca-mono); letter-spacing: .12em; text-transform: uppercase; } +.industry-tabs { display: grid; grid-template-columns: repeat(4, 1fr); padding: 0 12px 12px; border-bottom: 1px solid var(--ca-line); } +.industry-tabs button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; border: 0; border-radius: 8px; color: var(--ca-text); background: transparent; font-size: 13px; font-weight: 700; cursor: pointer; } +.industry-tabs button:hover { background: var(--ca-surface); } +.industry-tabs button.is-active { color: var(--ca-blue); background: var(--ca-surface-blue); } +.industry-detail { padding: 30px; } +.industry-detail-heading { display: flex; align-items: flex-start; gap: 16px; } +.industry-detail-heading > span { display: grid; place-items: center; width: 48px; height: 48px; flex: 0 0 48px; border-radius: 12px; color: var(--ca-blue); background: var(--ca-surface-blue); } +.industry-detail-heading small { color: var(--ca-blue); font: 700 9px/1 var(--ca-mono); letter-spacing: .12em; text-transform: uppercase; } +.industry-detail h3 { margin: 7px 0 0; font-size: 23px; letter-spacing: -.035em; } +.industry-detail > p { margin: 20px 0 0; color: var(--ca-text); font-size: 14px; line-height: 1.75; } +.industry-detail-grid { display: grid; grid-template-columns: .95fr 1.05fr; gap: 0; margin-top: 28px; border-top: 1px solid var(--ca-line); } +.industry-detail-grid > div { padding-top: 24px; } +.industry-detail-grid > div + div { margin-left: 26px; padding-left: 26px; border-left: 1px solid var(--ca-line); } +.industry-detail-grid strong { font-size: 12px; } +.industry-detail-grid ul { display: grid; gap: 11px; margin: 15px 0 0; padding: 0; list-style: none; } +.industry-detail-grid li { display: flex; align-items: center; gap: 8px; color: var(--ca-text); font-size: 12px; } +.industry-detail-grid li svg { color: var(--ca-mint); } +.industry-detail-grid p { margin: 15px 0 0; color: var(--ca-text); font-size: 12px; line-height: 1.72; } + +.assistant-process { padding: 124px 0; background: #fff; } +.assistant-section-split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(340px, .65fr); align-items: end; gap: 80px; margin-bottom: 60px; } +.assistant-section-split > p { margin: 0; } +.process-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--ca-line); border-bottom: 1px solid var(--ca-line); } +.process-grid article { position: relative; min-height: 300px; padding: 28px; } +.process-grid article + article { border-left: 1px solid var(--ca-line); } +.process-number { color: var(--ca-blue); font: 750 10px/1 var(--ca-mono); letter-spacing: .12em; } +.process-icon { display: grid; place-items: center; width: 48px; height: 48px; margin-top: 46px; border-radius: 50%; color: var(--ca-blue); background: var(--ca-surface-blue); } +.process-grid h3 { margin: 28px 0 11px; font-size: 20px; } +.process-grid p { margin: 0; color: var(--ca-muted); font-size: 13px; line-height: 1.72; } + +.assistant-trust { padding: 126px 0; background: var(--ca-surface-blue); } +.assistant-trust .assistant-kicker { color: var(--ca-blue-strong); } +.trust-list { border-top: 1px solid #cbd9ee; } +.trust-list article { display: grid; grid-template-columns: 52px 1fr; gap: 20px; padding: 27px 0; border-bottom: 1px solid #cbd9ee; } +.trust-list article > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; color: var(--ca-blue); background: #fff; } +.trust-list h3 { margin: 0; font-size: 19px; } +.trust-list p { margin: 10px 0 0; color: var(--ca-text); font-size: 13px; line-height: 1.75; } + +.assistant-cta { padding: 138px 0; text-align: center; background: #fff; } +.assistant-cta-inner { max-width: 850px; display: flex; flex-direction: column; align-items: center; } +.assistant-cta p { max-width: 700px; margin: 25px auto 0; } +.assistant-cta .assistant-button-primary { margin-top: 34px; } + +.assistant-footer { padding: 28px 0 32px; border-top: 1px solid var(--ca-line); background: var(--ca-surface); } +.assistant-footer-row { display: flex; align-items: center; justify-content: space-between; gap: 24px; } +.assistant-footer-company { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; } +.assistant-footer-company > span, .assistant-footer-signal { color: var(--ca-muted); font: 600 9px/1.5 var(--ca-mono); } +.assistant-footer-company a { color: var(--ca-muted); font-size: 11px; } +.assistant-footer-company a:hover { color: var(--ca-blue); } +.assistant-footer-police { display: inline-flex; align-items: center; gap: 5px; } +.assistant-footer-police img { width: 18px; height: 20px; object-fit: contain; } +.assistant-footer-signal { flex: 0 0 auto; letter-spacing: .08em; } + +[data-reveal] { opacity: 1; transform: none; transition: opacity .7s ease, transform .7s var(--ca-ease); } +[data-reveal].is-visible { opacity: 1; transform: none; } + +@media (max-width: 1160px) { + :root { --ca-shell: min(100% - 48px, 1060px); } + .assistant-nav-links { gap: 18px; } + .assistant-hero-grid { grid-template-columns: minmax(390px, .8fr) minmax(500px, 1.1fr); gap: 26px; } + .assistant-hero h1 { font-size: clamp(46px, 4.5vw, 54px); } + .assistant-hero h1 span:last-child em { display: block; } + .capability-grid { grid-template-columns: repeat(3, 1fr); } + .capability-grid article:nth-child(4) { border-left: 0; } + .capability-grid article:nth-child(n+4) { border-top: 1px solid var(--ca-line); } + .assistant-system-grid, .assistant-trust-grid { gap: 50px; } +} + +@media (max-width: 900px) { + .assistant-menu { display: grid; } + .assistant-nav-links { position: fixed; inset: 76px 0 auto; display: grid; gap: 0; padding: 14px 24px 22px; border-bottom: 1px solid var(--ca-line); background: rgba(255, 255, 255, .98); opacity: 0; pointer-events: none; transform: translateY(-10px); transition: opacity .2s ease, transform .2s var(--ca-ease); } + .assistant-nav-links.is-open { opacity: 1; pointer-events: auto; transform: none; } + .assistant-nav-links > a:not(.assistant-nav-cta) { padding: 14px 4px; border-bottom: 1px solid var(--ca-line); } + .assistant-nav-links > a:not(.assistant-nav-cta)::after { display: none; } + .assistant-language { width: 100%; margin-top: 12px; } + .assistant-nav-cta { margin-top: 10px; } + .assistant-hero { min-height: 0; padding-top: 134px; } + .assistant-hero-grid { grid-template-columns: 1fr; } + .assistant-hero-copy { max-width: 720px; padding-top: 0; } + .assistant-hero-visual { margin-top: 20px; } + .assistant-system-grid, .assistant-trust-grid { grid-template-columns: 1fr; } + .assistant-section-left { max-width: 720px; } + .assistant-section-split { grid-template-columns: 1fr; gap: 22px; } + .process-grid { grid-template-columns: repeat(2, 1fr); } + .process-grid article:nth-child(3) { border-left: 0; } + .process-grid article:nth-child(n+3) { border-top: 1px solid var(--ca-line); } +} + +@media (max-width: 640px) { + :root { --ca-shell: min(100% - 28px, 560px); } + .assistant-nav { height: 68px; } + .assistant-brand small { display: none; } + .assistant-nav-links { inset: 68px 0 auto; } + .assistant-hero { padding: 116px 0 70px; } + .assistant-hero h1 { margin-top: 24px; font-size: clamp(43px, 13vw, 58px); } + .assistant-hero h1 span:last-child em { display: block; } + .assistant-hero-summary { margin-top: 24px; font-size: 15px; line-height: 1.75; } + .assistant-hero-actions { display: grid; } + .assistant-button-primary, .assistant-button-secondary { width: 100%; } + .assistant-proof { display: grid; gap: 10px; } + .assistant-hero-visual { border-radius: 15px; } + .assistant-hero-visual img { aspect-ratio: 1.12; object-position: 44% center; } + .assistant-hero-visual figcaption { display: none; } + .assistant-capabilities, .assistant-system, .assistant-process, .assistant-trust { padding: 88px 0; } + .assistant-section-center { margin-bottom: 42px; text-align: left; } + .assistant-section-center h2, .assistant-section-left h2, .assistant-section-split h2, .assistant-cta h2 { font-size: clamp(35px, 10vw, 47px); } + .capability-grid { grid-template-columns: 1fr; } + .capability-grid article { display: grid; grid-template-columns: 48px 1fr; gap: 4px 16px; min-height: 0; padding: 22px 8px; } + .capability-grid article + article { border-left: 0; border-top: 1px solid var(--ca-line); } + .capability-icon { grid-row: 1 / 3; width: 48px; height: 48px; } + .capability-grid h3 { margin: 2px 0 4px; } + .industry-tabs { grid-template-columns: repeat(2, 1fr); } + .industry-detail { padding: 22px; } + .industry-detail h3 { font-size: 20px; } + .industry-detail-grid { grid-template-columns: 1fr; } + .industry-detail-grid > div + div { margin: 20px 0 0; padding: 22px 0 0; border-top: 1px solid var(--ca-line); border-left: 0; } + .process-grid { grid-template-columns: 1fr; } + .process-grid article { min-height: 0; padding: 25px 8px 28px; } + .process-grid article + article { border-left: 0; border-top: 1px solid var(--ca-line); } + .process-icon { margin-top: 28px; } + .trust-list article { grid-template-columns: 46px 1fr; gap: 14px; } + .trust-list article > span { width: 44px; height: 44px; } + .assistant-cta { padding: 100px 0; } + .assistant-footer-row, .assistant-footer-company { align-items: flex-start; flex-direction: column; } +} + +@media (prefers-reduced-motion: reduce) { + html { scroll-behavior: auto; } + *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } + [data-reveal] { opacity: 1; transform: none; } +} diff --git a/src/chat-assistant/main.jsx b/src/chat-assistant/main.jsx new file mode 100644 index 0000000..3ca65af --- /dev/null +++ b/src/chat-assistant/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { ChatAssistantProductPage } from './ChatAssistantProductPage'; +import './chat-assistant.css'; + +createRoot(document.getElementById('root')).render( + + + +); diff --git a/vite.config.js b/vite.config.js index f160df3..524761e 100644 --- a/vite.config.js +++ b/vite.config.js @@ -17,7 +17,8 @@ export default defineConfig({ rollupOptions: { input: { home: resolve(process.cwd(), 'index.html'), - harness: resolve(process.cwd(), 'products/roncarve-harness/index.html') + harness: resolve(process.cwd(), 'products/roncarve-harness/index.html'), + chatAssistant: resolve(process.cwd(), 'products/chat-assistant/index.html') } } } diff --git a/箴言助手-Chat-Assistant-产品页设计文档.md b/箴言助手-Chat-Assistant-产品页设计文档.md new file mode 100644 index 0000000..b615b06 --- /dev/null +++ b/箴言助手-Chat-Assistant-产品页设计文档.md @@ -0,0 +1,80 @@ +# 箴言助手 Chat Assistant 产品页设计文档 + +## 1. 产品命名与定位 + +- 中文名:箴言助手 +- 英文名:Chat Assistant +- 产品定位:连接企业数据、领域知识、业务工具与表达策略,为垂直行业提供有依据、可落地、可追溯的智能建议。 +- 演示场景:保险顾问服务与保障建议。 +- 扩展方式:用新的业务数据、知识资源、技能、工具、意图、表达模板和治理策略替换保险资源包,复用对话、编排、权限、观测与审计底座。 + +## 2. 当前项目能力总结 + +以下总结以 `D:\workspace\bankchat` 当前代码、README 和设计文档为依据。产品页只表达代码中已经存在的能力边界,不把路线图能力包装成现状。 + +### 2.1 对话与上下文 + +- 新建、保存和查询会话,按会话加载最近历史消息,并支持较早上下文摘要。 +- 通过 SSE 流式输出回答、工具调用与模型原生 thinking 状态;模型不支持 thinking 时明确降级,不影响正式回答。 +- 支持在输入中显式选择已发布技能及产品、活动、权益对象,并将控制信息与用户正文分开存储。 +- 支持用户档案和表达风格偏好,风格只调整语言表达,不覆盖事实、合规规则和工具结果。 + +### 2.2 业务事实与建议 + +- 保险演示场景复用客户与客户画像、产品、活动、权益查询能力,并以保障建议方式呈现。 +- Agent 可把会话问题、历史上下文、业务查询结果与合规表达资源组合为建议。 +- 快捷动作采用白名单和确定性工具预执行,数据库管理工具元数据,运行体仍由代码控制。 + +### 2.3 可配置的行业资源体系 + +- 意图、技能、工具、方案、表达模板、内容、字典与策略均具有独立资源模型。 +- 资源支持启用、发布、版本历史和回退,并可在解决方案总览中查看关系。 +- 行业扩展不依赖改造聊天外壳,核心工作是建立新的数据对象、行业技能、业务工具与表达策略。 + +### 2.4 数据接入与治理 + +- 数据源支持配置、连通性测试、启停与历史记录。 +- 数据范围支持同步、预览、发布与停用,运行时通过受控目录查询。 +- 字段元数据、敏感字段保护和查询审计形成数据访问边界。 + +### 2.5 模型与运行配置 + +- 使用 OpenAI-compatible API,可配置不同厂商的 Base URL、模型和调用参数。 +- 模型配置支持连通性测试、激活、历史版本与回退,敏感凭据由后端加密存储和脱敏展示。 + +### 2.6 分析、追踪与审计 + +- 会话效果分析包括概要、时序、意图、工具和会话记录。 +- Trace 记录资源选择、工具调用、模型节点、状态与耗时,支持问题回放。 +- 管理操作进入追加式审计事件,并提供查询、详情、选项与完整性校验能力。 + +### 2.7 身份与权限 + +- 浏览器统一通过 Java 网关访问,Python Agent API 仅承载编排与流式生成。 +- 支持 Roncarve IAM OIDC Authorization Code + PKCE 登录与显式应用准入。 +- 外部身份按 `(issuer, subject)` 绑定,不按邮箱自动合并;系统管理员、管理员和普通用户职责分离。 + +## 3. 产品页信息架构 + +1. Hero:用“让行业经验,成为每一次决策的底气”建立核心价值,并展示真实产品对话界面。 +2. 六大能力:企业数据、领域知识、智能建议、来源追溯、行业扩展、安全合规。 +3. 行业扩展:以保险为演示示例,交互切换制造、零售和专业服务场景。 +4. 落地路径:连接、理解、建议、追溯。 +5. 安全可信:统一身份、数据范围与审计观测。 +6. 转化区:邮件预约产品演示。 + +## 4. 视觉方向 + +- 参考“荣刻驭境”的品牌层级、导航比例、大标题力度和企业级质感。 +- 与荣刻驭境的深色粒子主题区分,采用白色与浅灰蓝基底、荣刻蓝主色和克制薄荷绿辅助色。 +- 首屏使用选定方案 1 的真实产品工作台视觉;正文使用清晰分隔、充足留白和少量表面层级,不堆叠卡片。 +- 桌面端以左右分栏为主;移动端改为单列,能力与流程按阅读顺序展开。 +- 中英文共享同一信息架构,并持久化语言偏好。 + +## 5. 实现范围 + +- 新增 `/products/chat-assistant/` 多页应用入口。 +- 新增响应式 React 产品页、行业场景交互、移动导航和中英文切换。 +- 首页产品菜单增加“箴言助手”入口。 +- 更新 Vite 多页构建、Nginx 规范路径和站点地图。 +- 通过现有 Docker Compose 在 `127.0.0.1:8081` 提供本地预览。