'use client'; import { useRef } from 'react'; import { motion } from 'framer-motion'; import { ScrollReveal, StaggerReveal } from '@/components/ui/scroll-reveal'; import { Badge } from '@/components/ui/badge'; import { StaticLink } from '@/components/ui/static-link'; import { HeroParticleField, type HeroVariant } from '@/components/sections/hero-particle-field'; import { ArrowRight, Lightbulb, Database, Layers, Code, Puzzle, Server, Quote, Calendar } from 'lucide-react'; import { cn } from '@/lib/utils'; import { EASE_OUT } from '@/components/ui/page-decoration'; import { CTAButton } from '@/components/ui/cta-button'; import { MetricsBasisNote } from '@/components/ui/metrics-basis-note'; import { COMPANY_INFO, TRUST_SIGNALS, EARLY_ACCESS } from '@/lib/constants'; import { canonicalCtaLabel, CTA_LABELS } from '@/lib/constants/cta-labels'; import { canonicalTrustSource } from '@/lib/constants/company'; import { weakestBasis } from '@/lib/constants/metrics-basis'; import { useSiteConfig } from '@/lib/site-config'; import { useReducedMotion } from '@/hooks/use-reduced-motion'; import { type NewsItem } from '@/lib/constants/news'; import { NEWS } from '@/lib/constants/news'; // ===== 服务图标映射:将字符串键名映射为 Lucide 组件 ===== const SERVICE_ICON_MAP: Record = { Lightbulb: , Code: , Server: , Puzzle: , }; // ===== 服务数据降级兜底(4 条,保证 sm:grid-cols-2 网格完整,避免孤儿格)===== const FALLBACK_SERVICES = [ { subtitle: 'Strategy Consulting', title: '数字化转型战略咨询', desc: '从业务诊断到数字化路线图,帮助企业识别高价值场景,规划可落地的转型路径,确保每一分投入都能产生可衡量的业务回报。', highlights: ['业务诊断', '数字化蓝图', '实施路线图', 'ROI 评估'], metrics: [ { value: '40%', label: '平均运营效率提升' }, { value: '6个月', label: '战略到试点周期' }, ], href: '/services/consulting', icon: , }, { subtitle: 'Software Delivery', title: '企业软件定制开发', desc: '基于自研产品矩阵与工程化交付流程,提供从需求分析、架构设计到持续运维的全栈软件开发服务,支撑业务数字化落地。', highlights: ['需求分析', '架构设计', '敏捷开发', '持续运维'], metrics: [ { value: '6', label: '款自研产品' }, { value: '24/7', label: '运维支持' }, ], href: '/services/software', icon: , }, { subtitle: 'Data Intelligence', title: '数据智能与 AI 应用', desc: '构建企业级数据平台与 AI 能力,打通数据孤岛,沉淀数据资产,让决策从经验驱动转向数据驱动。', highlights: ['数据中台', 'AI 建模', '可视化分析', '预测决策'], metrics: [ { value: '98%', label: '数据质量达标率' }, { value: '10x', label: '分析效率提升' }, ], href: '/services/data', icon: , }, { subtitle: 'Solution Delivery', title: '行业解决方案落地', desc: '基于核心团队的行业实践,提供从方案设计、系统开发到上线运维的一站式交付,确保数字化转型真正落地生根。', highlights: ['行业套件', '定制开发', '系统集成', '持续运维'], metrics: [ { value: '6', label: '行业场景覆盖' }, { value: '99.9%', label: '系统可用性' }, ], href: '/services/solutions', icon: , }, ]; // ===== 行业洞察兜底数据(对标 Accenture Insights:类型标签 + 卡片)===== // 零编造原则:全部为可验证的方法论/观点类内容,链接真实页面;不做虚构研究报告 const FALLBACK_INSIGHTS = [ { tag: '方法论', title: '数字化转型诊断:从哪里开始,如何衡量', desc: '从业务目标出发的四步诊断法——梳理断点、量化差距、排定优先级、定义验收指标。', date: '2026-08', href: '/methodology', }, { tag: '观点', title: '私有化部署:为什么核心数据需要留在企业内', desc: '合规要求之外,数据主权正在成为企业数字化决策的第一优先级。', date: '2026-08', href: '/services/data', }, { tag: '方法论', title: '从需求到交付:全流程陪伴式实施如何降低转型风险', desc: '诊断 → 设计 → 交付 → 运维,每一阶段都有明确的交付物与衡量指标。', date: '2026-07', href: '/services/software', }, ]; // ===== 创始人观点兜底(对标 Accenture CEO Quote,人格化背书)===== // 零编造原则:不虚构具体人名/原话;姓名职务为空时仅展示观点立场,真实引言可在 CMS page-copy 配置 const FALLBACK_FOUNDER_QUOTE = { // 排版约束:3 行均势(17 / 18 / 13 字),避开"量。"孤儿字。 // 配合 blockquote 的 whitespace-pre-line 渲染换行。 text: '我们相信,数字化不是一次性项目,\n而是持续迭代的能力建设。\n每一份投入,都应当经得起衡量。', name: '睿新致远创始团队', role: '技术咨询 · 数字化转型同行者', }; // ===== 首页结构性文案类型(page-copy CMS 覆盖,未配置时走硬编码兜底)===== type HomePageCopy = Record; // 多行标题渲染:按 \n 分段,输出
换行 function StyledTitle({ lines }: { lines: (string | undefined)[] }) { return ( <> {lines.map((line, i) => ( {i > 0 &&
} {line}
))} ); } // ===== 品牌 CTA 按钮已抽离为可复用 UI 组件:@/components/ui/cta-button ===== // ===== Hero 区:浅色画布 + 精密工程网格科技感 + 品牌红单电压 ===== // 设计方向(2026-08-31 重设计,参考 Accenture Radical Relevance;2026-09-01 科技感升级): // - 声明先行:H1 → 主张 → CTA,一屏只负责「一句话说清你是谁 + 一个行动」 // - 数据指标下沉为独立成果带(HeroStatsBand),由滚动触发(Glance 层),不再挤在 hero 内 // - 单一电压:hero 内只有品牌红一个彩色;连线走墨色(浅底)/中性灰(深底),不抢品牌红 // - 字重收敛:大标题 700(原 900),对齐 Accenture「字重 9→3」的克制 // - 科技感引擎:HeroParticleField 变体(固定种子、reduced-motion/自动化降级 → 快照零漂移) // // ===== HERO_VARIANT 观感开关(默认 'grid':浅色底 + 工程网格科技感)===== // 定调:Hero 保持浅色背景(与全站浅色咨询风一致),科技感由「精密工程网格 + 动态粒子 + 墨色细连线」承担, // 不做深色 Hero。深色变体保留待选(改这一行即生效,无需改其它代码): // 'grid' 浅色工程网格 + 品牌红漂移节点 + 墨色细连线 ← 默认落地 // 'network' 深色节点网络(品牌红节点 + 中性灰连线) // 'constellation' 深色数据星图(品牌红脉冲节点 + 暗白次级点 + 竖向数据流) // 'spotlight' 深色聚光 + 粒子 + 工程网格(纵深最强,复用 L2 光标聚光) const HERO_VARIANT: HeroVariant = 'grid'; function HeroSection({ heroData }: { heroData?: Record | null; }) { const containerRef = useRef(null); const spotRef = useRef(null); const siteConfig = useSiteConfig(); const reduceMotion = useReducedMotion(); // 科技感变体开关(见文件顶部 HERO_VARIANT 注释):深色变体统一走深色画布 + 主题感知文字 const dark = HERO_VARIANT !== 'grid'; const showGrid = HERO_VARIANT === 'constellation' || HERO_VARIANT === 'spotlight'; // 深色工程网格 const showLightGrid = HERO_VARIANT === 'grid'; // 浅色工程网格(墨色 hairline,精密质感) const showCursorGlow = HERO_VARIANT === 'spotlight'; const heading = heroData?.heading || heroData?.headingBottom || '让每一家企业都拥有数据驱动的决策能力'; const subheading = heroData?.subheading || heroData?.description || ''; const ctaLabel = canonicalCtaLabel(heroData?.ctaLabel) || CTA_LABELS.consult; const ctaHref = heroData?.ctaHref || '/contact'; const secondaryCtaLabel = heroData?.secondaryCtaLabel || '查看产品矩阵'; const secondaryCtaHref = heroData?.secondaryCtaHref || '/products'; const slogan = siteConfig.slogan || COMPANY_INFO.slogan; // reduced-motion 守卫:与 ScrollReveal 同范式——reduce 时传空 initial/animate, // 元素直接以自然(可见)状态渲染,零位移/淡入;默认(非 reduce,含首帧 null)正常动画。 const rise = (y: number, delay: number, duration = 0.3) => ({ initial: reduceMotion ? {} : { opacity: 0, y }, animate: reduceMotion ? {} : { opacity: 1, y: 0 }, transition: { duration: reduceMotion ? 0 : duration, delay: reduceMotion ? 0 : delay, ease: EASE_OUT }, }); return (
{ if (!spotRef.current || !containerRef.current) return; const rect = containerRef.current.getBoundingClientRect(); spotRef.current.style.setProperty('--spot-x', `${e.clientX - rect.left}px`); spotRef.current.style.setProperty('--spot-y', `${e.clientY - rect.top}px`); }} > {/* L1 工程网格:浅底墨色 hairline(grid)/ 深底白色 hairline(constellation、spotlight) */} {showLightGrid && (
); } // ===== Hero 成果带:数据指标下沉为独立带(声明先行,Glance 层滚动触发)===== // 设计意图:hero 一屏只负责「一句话声明 + 一个行动」,硬指标移出后由滚动触发, // 既是 Accenture「single stream 逐步展开」的落地,也避免一屏信息过载。 function HeroStatsBand({ stats }: { stats?: Record[] }) { const hasValidStats = stats?.length && stats[0]?.value; const displayStats = hasValidStats ? stats!.slice(0, 3) : []; if (displayStats.length === 0) return null; return (
{displayStats.map((stat, i) => (
{stat.value} {stat.label}
))}
s.basis))} className="mt-6" />
); } // ===== 信任/成果区:可验证信任信号 ===== function TrustSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) { const eyebrow = pageCopy?.trustEyebrow || '值得信赖'; const titleLines = (pageCopy?.trustTitle || '以可衡量的成果\n赢得长期信任').split('\n'); const signals = (pageCopy?.trustSignals?.length ? pageCopy.trustSignals : TRUST_SIGNALS) as typeof TRUST_SIGNALS; return (
{eyebrow}

{signals.map((item, i) => (
{item.value} {item.label}

{item.desc}

数据来源:{canonicalTrustSource(item.source)}
))}
); } // ===== 章节式叙事区:问题 → 方法 → 结果(Storytelling-Driven)===== const NARRATIVE_ACTS = [ { number: '01', title: '诊断现状', desc: '从业务目标出发,梳理流程断点、数据孤岛与瓶颈环节,形成可量化的诊断结论。', href: '/services/consulting', cta: '了解诊断方法', }, { number: '02', title: '设计路径', desc: '基于诊断结论设计系统架构与实施路线图,明确每一阶段的交付物与衡量指标。', href: '/services/solutions', cta: '查看方案设计', }, { number: '03', title: '交付成果', desc: '以自研产品组合与专业实施团队完成交付,用真实运营数据验证业务改善,持续迭代。', href: '/products', cta: '浏览产品矩阵', }, ]; function NarrativeSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) { const narrativeTitle = (pageCopy?.narrativeTitle || '从问题到结果,\n一条可量化的路径').split('\n'); const NARRATIVE_ACTS_CMS = (pageCopy?.narrativeActs?.length ? pageCopy.narrativeActs : NARRATIVE_ACTS) as Array<{ number: string; title: string; desc: string; href: string; cta: string; }>; return (

{NARRATIVE_ACTS_CMS.map((act) => (

{act.title}

{act.desc}

))}
); } // ===== 行业洞察区(对标 Accenture Insights:类型标签 + 内容卡片,思想领导力支柱)===== function InsightsSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) { const eyebrow = (pageCopy?.insightsEyebrow as string) || 'Insights'; const titleLines = ((pageCopy?.insightsTitle as string) || '我们的思考,\n以实践为锚').split('\n'); const desc = (pageCopy?.insightsDescription as string) || '方法论、观点与共创进展——可验证的思考,不空谈趋势。'; const items = (pageCopy?.insightsItems?.length ? pageCopy.insightsItems : FALLBACK_INSIGHTS) as Array<{ tag: string; title: string; desc: string; date?: string; href: string; }>; return (
{eyebrow}

{desc}

查看全部洞察
); } // ===== 服务区:等宽三列卡片 + 兜底数据 ===== function ServicesSection({ services, pageCopy }: { services?: Record[]; pageCopy?: HomePageCopy | null }) { const hasValidData = services?.length && (services![0] as any)?.subtitle; const SERVICE_ITEMS = hasValidData ? services!.map((s: Record) => ({ ...s, icon: SERVICE_ICON_MAP[s.icon as string] || , })) as Record[] : FALLBACK_SERVICES; const servicesTitle = (pageCopy?.servicesTitle || '从战略到落地,\n可量化的一站式服务').split('\n'); return (
); } // ===== 创始人观点区(对标 Accenture CEO Quote:大引言 + 署名,人格化背书)===== function FounderQuoteSection({ pageCopy }: { pageCopy?: HomePageCopy | null }) { const eyebrow = (pageCopy?.founderQuoteEyebrow as string) || '创始团队观点'; const quoteText = (pageCopy?.founderQuoteText as string) || FALLBACK_FOUNDER_QUOTE.text; const quoteName = (pageCopy?.founderQuoteName as string) || FALLBACK_FOUNDER_QUOTE.name; const quoteRole = (pageCopy?.founderQuoteRole as string) || FALLBACK_FOUNDER_QUOTE.role; return (
{/* 背景纹理:极淡白色点阵(Bain 式深红区块 + 克制质感) */}
{eyebrow}
); } // ===== 共创流程(可验证方法论,不虚构客户)===== const CO_CREATION_STEPS = [ { step: '01', title: '业务诊断', desc: '深入理解业务场景,识别高价值切入点' }, { step: '02', title: '方案共创', desc: '与核心团队共同设计解决方案与实施路径' }, { step: '03', title: '验证发布', desc: '以真实运营数据验证成效,经授权后公开案例' }, ]; // ===== 案例区:Client Spotlight(对标 Accenture:深色大卡 spotlight + 其余小卡)===== function CasesSection({ cases, pageCopy }: { cases?: Record[]; pageCopy?: HomePageCopy | null }) { const hasValidData = cases?.length && cases[0]?.metrics; const CASE_ITEMS = hasValidData ? cases! : []; const casesEyebrow = pageCopy?.casesEyebrow || '共创进行时'; const casesTitleLines = (pageCopy?.casesTitle || '每一个项目,\n都以业务改善为衡量标准').split('\n'); const casesDesc = pageCopy?.casesDescription || '我们正与首批客户共同打磨产品与方案,以真实运营数据验证业务改善。'; const earlyLabel = pageCopy?.earlyAccessLabel || EARLY_ACCESS.label; const earlyDesc = pageCopy?.earlyAccessDesc || EARLY_ACCESS.desc; if (CASE_ITEMS.length === 0) { return (
{casesEyebrow}

{casesDesc}

{/* 背景纹理:极淡白色点阵(对标埃森哲深色 spotlight 画布) */}
{casesEyebrow}
); } const [spotlightCase, ...restCases] = CASE_ITEMS; const spotlightTestimonial = spotlightCase?.testimonial as Record | undefined; return (

查看全部案例
{/* Client Spotlight 大卡:深色画布 + 客户引言 + 量化成果(对标 Accenture) */} {spotlightCase && ( {/* 背景纹理:极淡白色点阵 */}
); } // ===== 新闻动态区(对标 Accenture News:最近 3 条 + 查看全部入口)===== function NewsSection({ news, pageCopy }: { news?: NewsItem[]; pageCopy?: HomePageCopy | null }) { const eyebrow = (pageCopy?.newsEyebrow as string) || '新闻动态'; const titleLines = ((pageCopy?.newsTitle as string) || '公司要闻\n与研发动态').split('\n'); const ctaLabel = (pageCopy?.newsCtaLabel as string) || '查看全部新闻'; const NEWS_ITEMS = (news?.length ? news.slice(0, 3) : NEWS.slice(0, 3)) as NewsItem[]; return (
{eyebrow}

{ctaLabel}
{NEWS_ITEMS.map((item, i) => (
{item.category}

{item.title}

{item.excerpt}

阅读全文
))}
); } // ===== CTA 区:克制强调,品牌红仅用于按钮 ===== function CTASection({ heroData, pageCopy }: { heroData?: Record | null; pageCopy?: HomePageCopy | null }) { const ctaTitleLine1 = heroData?.ctaTitleLine1 || pageCopy?.ctaTitleLine1 || '准备好开始了吗?'; const ctaTitleLine2 = heroData?.ctaTitleLine2 || pageCopy?.ctaTitleLine2 || '让数据真正转化为业务增长'; const ctaLabel = canonicalCtaLabel(heroData?.ctaLabel || (pageCopy?.ctaLabel as string)) || CTA_LABELS.consult; const ctaHref = heroData?.ctaHref || '/contact'; return (

{ctaTitleLine1}
{ctaTitleLine2}

{ctaLabel}
); } // ===== 主页面组件 ===== export default function HomeContentV15({ services, cases, stats, heroData, news, pageCopy }: { services?: Record[]; cases?: Record[]; stats?: Record[]; heroData?: Record | null; news?: NewsItem[]; pageCopy?: HomePageCopy | null; }) { return (
{/* 1. Hero:浅色 editorial 画布 + 品牌红单电压(参考 Accenture Radical Relevance) */} {/* 1.5 成果带:数据指标下沉,滚动触发(Glance 层,声明先行的承接) */} {/* 2. 信任区:量化数据成果展示 */} {/* 3. 章节式叙事:问题 → 方法 → 结果 */} {/* 4. 行业洞察:思想领导力支柱(对标 Accenture Insights) */} {/* 5. 服务区:等宽卡片 + 兜底数据 */} {/* 6. 创始人观点:人格化背书(对标 Accenture CEO Quote) */} {/* 7. 案例区:轻量快照卡片 */} {/* 8. 新闻动态:持续动态(对标 Accenture News) */} {/* 9. CTA:克制强调,品牌红仅用于按钮 */}
); }