feat(products): refine page copy and retarget primary CTA to /services

产品列表页文案与转化打磨:Hero 改为「自研产品矩阵 × 数字化核心系统」并聚焦
价值主张;主 CTA 由预约接待改为「了解我们的服务」并落点到 /services(次 CTA
保持 /solutions 查看行业方案);CTA 区文案「以自研产品支撑数字化落地」+ 组合
方案入口改为 /solutions。同步更新集成测试断言。
This commit is contained in:
2026-08-19 14:47:19 +08:00
parent 08f19ad6ca
commit 30018bf94a
2 changed files with 21 additions and 21 deletions
@@ -212,15 +212,15 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
const { default: ProductsContentV3 } = await import('./products-content-v3'); const { default: ProductsContentV3 } = await import('./products-content-v3');
render(<ProductsContentV3 products={allMockProducts} />); render(<ProductsContentV3 products={allMockProducts} />);
expect(screen.getByText('用自研产品组合')).toBeInTheDocument(); expect(screen.getByText('自研产品矩阵')).toBeInTheDocument();
expect(screen.getByText('核心系统升级')).toBeInTheDocument(); expect(screen.getByText('数字化核心系统')).toBeInTheDocument();
}); });
it('should render hero description text', async () => { it('should render hero description text', async () => {
const { default: ProductsContentV3 } = await import('./products-content-v3'); const { default: ProductsContentV3 } = await import('./products-content-v3');
render(<ProductsContentV3 products={allMockProducts} />); render(<ProductsContentV3 products={allMockProducts} />);
expect(screen.getByText(/从数据智能到业务协同/)).toBeInTheDocument(); expect(screen.getByText(/从业务系统到数据智能/)).toBeInTheDocument();
}); });
it('should render enterprise products section', async () => { it('should render enterprise products section', async () => {
@@ -305,8 +305,8 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
const { default: ProductsContentV3 } = await import('./products-content-v3'); const { default: ProductsContentV3 } = await import('./products-content-v3');
render(<ProductsContentV3 products={allMockProducts} />); render(<ProductsContentV3 products={allMockProducts} />);
expect(screen.getByText('预约免费咨询')).toBeInTheDocument(); expect(screen.getByText('联系我们')).toBeInTheDocument();
expect(screen.getByText('浏览行业方案')).toBeInTheDocument(); expect(screen.getByText('查看行业方案')).toBeInTheDocument();
}); });
it('should render stats section with product count', async () => { it('should render stats section with product count', async () => {
@@ -323,7 +323,7 @@ describe('ProductsContentV3 - 产品列表页集成测试', () => {
render(<ProductsContentV3 products={[]} />); render(<ProductsContentV3 products={[]} />);
// Hero section should still render // Hero section should still render
expect(screen.getByText('用自研产品组合')).toBeInTheDocument(); expect(screen.getByText('自研产品矩阵')).toBeInTheDocument();
// The enterprise section should still render (even without products) // The enterprise section should still render (even without products)
expect(screen.getAllByText('企业套装').length).toBeGreaterThanOrEqual(1); expect(screen.getAllByText('企业套装').length).toBeGreaterThanOrEqual(1);
@@ -89,7 +89,7 @@ function HeroSection() {
transition={{ duration: 1.2, delay: 0.15, ease: EASE_OUT }} transition={{ duration: 1.2, delay: 0.15, ease: EASE_OUT }}
className="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold text-ink leading-[0.92] tracking-tighter mb-8 sm:mb-10 md:mb-12" className="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold text-ink leading-[0.92] tracking-tighter mb-8 sm:mb-10 md:mb-12"
> >
<div className="block">用自研产品组合</div> <div className="block">自研产品矩阵</div>
<div className="block mt-5"> <div className="block mt-5">
<span className="relative inline-block"> <span className="relative inline-block">
<span className="text-brand font-extrabold">支撑企业</span> <span className="text-brand font-extrabold">支撑企业</span>
@@ -102,7 +102,7 @@ function HeroSection() {
/> />
</span> </span>
</div> </div>
<div className="block mt-5">核心系统升级</div> <div className="block mt-5">数字化核心系统</div>
</motion.h1> </motion.h1>
<motion.p <motion.p
@@ -111,8 +111,8 @@ function HeroSection() {
transition={{ duration: 1, delay: 0.45, ease: EASE_OUT }} transition={{ duration: 1, delay: 0.45, ease: EASE_OUT }}
className="text-lg sm:text-xl lg:text-2xl text-text-secondary max-w-2xl leading-relaxed mb-8 sm:mb-10 md:mb-12" className="text-lg sm:text-xl lg:text-2xl text-text-secondary max-w-2xl leading-relaxed mb-8 sm:mb-10 md:mb-12"
> >
从数据智能到业务协同,每一款产品都经过实战验证。 从业务系统到数据智能,深度自研、互为补充。
6 大核心产品互为补充,常以组合形式出现在行业解决方案中。 6 大企业套装与专业产品线,覆盖企业数字化核心场景。
</motion.p> </motion.p>
<motion.div <motion.div
@@ -122,8 +122,8 @@ function HeroSection() {
className="flex flex-wrap gap-6" className="flex flex-wrap gap-6"
> >
<Button size="xl" asChild> <Button size="xl" asChild>
<a href="/contact"> <a href="/services">
预约产品演示 了解我们的服务
<ArrowRight className="w-5 h-5 ml-2" /> <ArrowRight className="w-5 h-5 ml-2" />
</a> </a>
</Button> </Button>
@@ -398,7 +398,7 @@ function SuiteCombosSection({ products }: { products: Product[] }) {
return ( return (
<a <a
key={idx} key={idx}
href="/contact" href="/solutions"
className="group p-10 lg:p-12 bg-white hover:bg-bg-secondary transition-all duration-500 overflow-hidden" className="group p-10 lg:p-12 bg-white hover:bg-bg-secondary transition-all duration-500 overflow-hidden"
> >
<div> <div>
@@ -432,7 +432,7 @@ function SuiteCombosSection({ products }: { products: Product[] }) {
whileHover={{ x: 6 }} whileHover={{ x: 6 }}
transition={EASE_SPRING} transition={EASE_SPRING}
> >
<span>咨询组合方案</span> <span>了解行业方案</span>
<ArrowRight className="w-4 h-4" /> <ArrowRight className="w-4 h-4" />
</motion.div> </motion.div>
</div> </div>
@@ -454,24 +454,24 @@ function CTASection() {
<div className="max-w-container mx-auto px-6 lg:px-10 relative z-10"> <div className="max-w-container mx-auto px-6 lg:px-10 relative z-10">
<ScrollReveal className="text-center max-w-3xl mx-auto"> <ScrollReveal className="text-center max-w-3xl mx-auto">
<h2 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-ink tracking-tight leading-tight mb-6 sm:mb-8"> <h2 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-ink tracking-tight leading-tight mb-6 sm:mb-8">
找到适合你的<br /> 以<span className="text-brand">自研产品</span><br />
<span className="text-brand">数字化方案</span> 支撑数字化落地
</h2> </h2>
<p className="text-xl text-text-secondary mb-12 max-w-2xl mx-auto leading-relaxed"> <p className="text-xl text-text-secondary mb-12 max-w-2xl mx-auto leading-relaxed">
无论你是需要单一产品,还是完整的数字化转型方案, 从企业套装到专业产品,以自研能力与专业服务,
我们的专家团队都能为你量身定制最佳路径。 陪伴企业完成数字化升级。
</p> </p>
<div className="flex flex-wrap justify-center gap-6"> <div className="flex flex-wrap justify-center gap-6">
<Button size="xl" asChild> <Button size="xl" asChild>
<a href="/contact"> <a href="/services">
预约免费咨询 了解我们的服务
<ArrowRight className="w-5 h-5 ml-2" /> <ArrowRight className="w-5 h-5 ml-2" />
</a> </a>
</Button> </Button>
<Button size="xl" variant="outline" asChild> <Button size="xl" variant="outline" asChild>
<a href="/solutions">浏览行业方案</a> <a href="/contact">联系我们</a>
</Button> </Button>
</div> </div>
</ScrollReveal> </ScrollReveal>