Files
novalon-website/docs/superpowers/plans/2026-04-25-remove-phone-and-update-logo-font.md
T
张翔 fe6e4b1c54 refactor: P0 - remove testimonial, migrate footer & mobile menu to NAVIGATION_V2
- Remove TestimonialSection from homepage (no customers yet)
- Footer: dark theme, NAVIGATION_V2 + MEGA_DROPDOWN_DATA links
- Mobile Menu: NAVIGATION_V2 with collapsible dropdown support
2026-04-30 22:00:00 +08:00

12 KiB
Raw Blame History

移除联系电话和更新 Logo 字体 实现计划

面向 AI 代理的工作者: 必需子技能:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用复选框(- [ ])语法来跟踪进度。

目标: 移除网站中"电话咨询"按钮,并更新 Logo SVG 使用青柳隶书字体

架构: 移除 3 个组件中的"电话咨询"按钮及相关 import,使用青柳隶书字体重新生成 Logo SVG path

技术栈: React, TypeScript, Next.js, SVG


文件结构

文件 操作 职责
src/components/services/service-cta-section.tsx 修改 移除"电话咨询"按钮和 Phone 图标 import
src/components/products/product-cta-section.tsx 修改 移除"电话咨询"按钮和 Phone 图标 import
src/app/(marketing)/solutions/[id]/solution-detail-client.tsx 修改 移除"电话咨询"按钮和 Phone 图标 import
public/logo.svg 替换 使用青柳隶书字体重新生成 SVG path
public/logo-white.svg 替换 使用青柳隶书字体重新生成 SVG path

任务 1:移除 service-cta-section.tsx 中的"电话咨询"按钮

文件:

  • 修改:src/components/services/service-cta-section.tsx

  • 步骤 1:读取文件内容

运行:读取 src/components/services/service-cta-section.tsx

  • 步骤 2:移除 Phone 图标 import

修改文件,将:

import { Phone } from 'lucide-react';

改为:

(删除整行)

  • 步骤 3:移除"电话咨询"按钮

修改文件,删除以下代码块:

              <RippleButton
                href="tel:+8613800138000"
                rippleColor="rgba(255, 255, 255, 0.2)"
                className="bg-transparent border-2 border-white text-white px-8 py-4 rounded-lg text-lg font-semibold inline-flex items-center justify-center w-full sm:w-auto"
              >
                <Phone className="w-4 h-4 mr-2" />
                电话咨询
              </RippleButton>
  • 步骤 4:验证修改

运行:pnpm build 预期:构建成功,无错误

  • 步骤 5Commit
git add src/components/services/service-cta-section.tsx
git commit -m "refactor(services): 移除电话咨询按钮

- 移除 service-cta-section 中的电话咨询按钮
- 移除 Phone 图标 import
- 公司暂无对外联系电话"

任务 2:移除 product-cta-section.tsx 中的"电话咨询"按钮

文件:

  • 修改:src/components/products/product-cta-section.tsx

  • 步骤 1:读取文件内容

运行:读取 src/components/products/product-cta-section.tsx

  • 步骤 2:移除 Phone 图标 import

修改文件,将:

import { Phone } from 'lucide-react';

改为:

(删除整行)

  • 步骤 3:移除"电话咨询"按钮

修改文件,删除以下代码块:

              <RippleButton
                href="tel:+8613800138000"
                rippleColor="rgba(255, 255, 255, 0.2)"
                className="bg-transparent border-2 border-white text-white px-8 py-4 rounded-lg text-lg font-semibold inline-flex items-center justify-center w-full sm:w-auto"
              >
                <Phone className="w-4 h-4 mr-2" />
                电话咨询
              </RippleButton>
  • 步骤 4:验证修改

运行:pnpm build 预期:构建成功,无错误

  • 步骤 5Commit
git add src/components/products/product-cta-section.tsx
git commit -m "refactor(products): 移除电话咨询按钮

- 移除 product-cta-section 中的电话咨询按钮
- 移除 Phone 图标 import
- 公司暂无对外联系电话"

任务 3:移除 solution-detail-client.tsx 中的"电话咨询"按钮

文件:

  • 修改:src/app/(marketing)/solutions/[id]/solution-detail-client.tsx

  • 步骤 1:读取文件内容

运行:读取 src/app/(marketing)/solutions/[id]/solution-detail-client.tsx

  • 步骤 2:查找并移除"电话咨询"按钮

找到包含"电话咨询"的按钮代码并删除:

                <Button variant="outline" asChild>
                  <a href="tel:+8613800138000">
                    <Phone className="w-4 h-4 mr-2" />
                    电话咨询
                  </a>
                </Button>
  • 步骤 3:检查并移除 Phone 图标 import(如果不再使用)

检查文件中是否还有其他地方使用 Phone 图标。如果没有,删除:

import { Phone } from 'lucide-react';
  • 步骤 4:验证修改

运行:pnpm build 预期:构建成功,无错误

  • 步骤 5Commit
git add src/app/\(marketing\)/solutions/\[id\]/solution-detail-client.tsx
git commit -m "refactor(solutions): 移除电话咨询按钮

- 移除 solution-detail-client 中的电话咨询按钮
- 移除 Phone 图标 import(如果不再使用)
- 公司暂无对外联系电话"

任务 4:使用青柳隶书字体重新生成 Logo SVG

文件:

  • 替换:public/logo.svg

  • 替换:public/logo-white.svg

  • 步骤 1:检查青柳隶书字体文件

运行:检查 src/app/fonts/AoyagiReisho.ttf 是否存在

  • 步骤 2:使用 Python 脚本生成新的 Logo SVG

创建并运行 Python 脚本,使用青柳隶书字体生成"睿新致遠"的 SVG path

#!/usr/bin/env python3
"""
使用青柳隶书字体生成 Logo SVG path
"""
import os
from fontTools.ttLib import TTFont
from fontTools.pens.svgPathPen import SvgPathPen
from fontTools.pens.t2CharStringPen import T2CharStringPen

def get_glyph_path(font_path, text, size=48):
    """
    获取文本的 SVG path
    """
    font = TTFont(font_path)
    glyf_table = font['glyf']
    
    paths = []
    x_offset = 0
    
    for char in text:
        glyph_name = font.getBestCmap().get(ord(char))
        if glyph_name:
            glyph = glyf_table[glyph_name]
            if glyph.numberOfContours > 0:
                pen = SvgPathPen(None)
                glyph.draw(pen, glyf_table)
                path = pen.getCommands()
                paths.append(f'<g transform="translate({x_offset}, 0) scale({size/1000})"><path d="{path}" /></g>')
                x_offset += size * 1.2
    
    return '\n'.join(paths)

def generate_logo_svg():
    """
    生成 Logo SVG
    """
    font_path = 'src/app/fonts/AoyagiReisho.ttf'
    text = '睿新致遠'
    
    if not os.path.exists(font_path):
        print(f"错误:字体文件不存在:{font_path}")
        return
    
    # 生成 SVG path
    paths = get_glyph_path(font_path, text)
    
    # 创建 SVG
    svg_template = f'''<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 120" width="480" height="120">
  <defs>
    <!-- 印章纹理滤镜 -->
    <filter id="sealTexture" x="0%" y="0%" width="100%" height="100%">
      <feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="3" result="noise"/>
      <feDisplacementMap in="SourceGraphic" in2="noise" scale="2" xChannelSelector="R" yChannelSelector="G"/>
    </filter>
  </defs>

  <!-- 红色印章 - 手绘不规则风格 -->
  <g transform="translate(12, 12)">
    <!-- 印章外框 - 不规则手绘路径 -->
    <path d="M8,2 
             C25,-2 45,-2 72,3 
             C82,5 85,12 84,25 
             C83,40 85,55 84,70 
             C83,82 78,88 65,89 
             C45,91 25,90 10,88 
             C2,86 -2,78 1,65 
             C3,50 2,35 1,20 
             C0,10 3,4 8,2 Z" 
          fill="#C41E3A"/>
    <!-- 印章内框 - 手绘风格 -->
    <path d="M14,10 
             C28,8 55,8 72,12 
             C78,14 79,20 78,30 
             C77,45 78,60 77,72 
             C76,80 72,84 62,85 
             C45,86 28,85 16,83 
             C10,82 8,76 9,65 
             C10,50 9,35 8,22 
             C7,15 10,11 14,10 Z" 
          fill="none" stroke="#fff" stroke-width="1.5" opacity="0.5"/>
    <!-- 睿新致遠 - 青柳隶书字体路径 -->
    {paths}
  </g>

  <!-- 公司名称 -->
  <g transform="translate(110, 60)">
    <!-- 睿新致遠 - 青柳隶书字体路径 -->
    {paths}
    <!-- NOVALON - 英文字体 -->
    <text x="24" y="42" font-family="Arial, sans-serif" font-size="14.5" font-weight="500" fill="currentColor" letter-spacing="10.5">NOVALON</text>
  </g>
</svg>'''
    
    return svg_template

if __name__ == '__main__':
    svg_content = generate_logo_svg()
    if svg_content:
        with open('public/logo.svg', 'w', encoding='utf-8') as f:
            f.write(svg_content)
        print("Logo SVG 已生成:public/logo.svg")

运行脚本:

python3 scripts/generate-logo-svg.py
  • 步骤 3:生成白色版本 Logo

复制生成的 Logo SVG 并修改颜色:

cp public/logo.svg public/logo-white.svg

修改 public/logo-white.svg,将 fill="#C41E3A" 改为 fill="white"

  • 步骤 4:验证 Logo 显示

运行:pnpm dev 访问:http://localhost:3000 预期:Logo 正确显示,使用青柳隶书字体

  • 步骤 5Commit
git add public/logo.svg public/logo-white.svg
git commit -m "style(logo): 使用青柳隶书字体更新 Logo

- 使用青柳隶书字体重新生成 Logo SVG path
- 更新 logo.svg 和 logo-white.svg
- 确保品牌字体一致性"

任务 5:运行完整测试并验证

文件:

  • 无文件修改

  • 步骤 1:运行构建

运行:pnpm build 预期:构建成功,无错误

  • 步骤 2:运行 E2E 测试

运行:pnpm test 预期:所有测试通过

  • 步骤 3:手动验证关键页面

访问以下页面验证:

验证内容:

  • Logo 显示正确

  • 无"电话咨询"按钮

  • 联系表单电话字段正常显示

  • 步骤 4:最终 Commit(如有遗漏)

如果有遗漏的修改,在此步骤提交。


任务 6:部署到生产环境

文件:

  • 无文件修改

  • 步骤 1:推送代码到远程

运行:git push origin main 预期:推送成功

  • 步骤 2:构建生产版本

运行:pnpm build 预期:构建成功

  • 步骤 3:部署到生产服务器

运行:./deploy-dist.sh 预期:部署成功

  • 步骤 4:验证生产环境

访问:https://novalon.cn 验证内容:

  • Logo 显示正确
  • 无"电话咨询"按钮
  • 联系表单电话字段正常显示

自检清单

1. 规格覆盖度

规格需求 对应任务
移除 service-cta-section.tsx 中的"电话咨询"按钮 任务 1
移除 product-cta-section.tsx 中的"电话咨询"按钮 任务 2
移除 solution-detail-client.tsx 中的"电话咨询"按钮 任务 3
更新 Logo SVG 使用青柳隶书字体 任务 4
保留联系表单电话字段 无需修改(已确认)
测试验证 任务 5
部署生产 任务 6

2. 占位符扫描

  • 无"待定"、"TODO"、"后续实现"等占位符
  • 所有代码步骤包含完整代码
  • 所有命令步骤包含完整命令
  • 无"类似任务 N"的引用

3. 类型一致性

  • 所有文件路径使用精确路径
  • 所有组件名称一致
  • 所有 import 语句正确

执行选项

计划已完成并保存到 docs/superpowers/plans/2026-04-25-remove-phone-and-update-logo-font.md。两种执行方式:

1. 子代理驱动(推荐) - 每个任务调度一个新的子代理,任务间进行审查,快速迭代

2. 内联执行 - 在当前会话中使用 executing-plans 执行任务,批量执行并设有检查点

选哪种方式?