产品页组件改写
目标与硬约束
在 web/app/(landing) 范围内完成主页、产品能力页、解决方案页、企业页、集成页、内容页及法律/介绍页的改写。优先修改页面配置、数据对象、现有组件 props 和已有静态资源引用;禁止新增页面级 CSS、CSS module、Tailwind 样式、inline style 或从零绘制新的视觉组件。若需求无法由现有组件承载,先说明缺口并请求用户确认,不要偷偷手写样式。
工作流
- 读取 组件目录,并用
rg搜索用户给出的文本、路由、组件名、DOM 文本或资源 URL。 - 将浏览器控制台选中的元素映射到源码:优先使用
data-*、id、可见文本、href/src、React 组件命名和父级结构;再检查页面入口及配置对象。不要只凭 CSS class 猜测。 - 阅读命中的页面入口、组件实现、类型定义和相邻
index.ts导出,确认修改属于共享组件还是页面专属配置。共享组件改动必须检查所有调用方。 - 先复用已存在的页面模板或变体:主页用
Landing组件组合;能力/解决方案页用SolutionsPageConfig;法律/长文介绍页用ProsePage;未接入占位页沿用CapabilityPage。静态资源优先替换已有web/public文件或引用路径,不生成新视觉样式。 - 用最小补丁实施:文案集中在 config/constants/content;组件改写保留既有 className、布局、动画、响应式和无障碍语义;不要为了改文字复制一套组件。
- 验证
rg无旧文案残留(除明确保留的技术专名),运行bun run type-check与相关测试;必要时运行bun run lint:check。报告修改文件、复用的组件、未能由现有组件实现的部分。
控制台选中元素协议
用户可以发送 DevTools 选中的 $0 信息、元素 HTML、可见文本、页面 URL 或截图。按以下顺序定位:
- 页面:由 URL pathname 映射
web/app/(landing)/*/page.tsx,再追到同目录的实现文件。 - 组件:由可见文案/链接/图片源搜索,沿 JSX 父子树和 import 路径向上追到命名组件。
- 重复元素:结合父级语义、数组数据项、
aria-label、链接 href 和相邻文本确认索引,不修改所有实例除非用户明确要求。 - 仅有运行时 class:把 class 当作线索,必须回到 JSX/配置/组件源代码确认;不要直接改生成的 DOM 或构建产物。
资源替换规则
先盘点 web/public 和现有 import 的静态资源,判断是替换同尺寸资源、修改既有资源路径,还是仅提供用户替换指导。若用户尚未提供新资源,不伪造资源;给出准确的目标文件、引用点、尺寸/比例和命名要求。保留 next/image、预加载、alt 文本和已有 fallback 行为。
交付检查
确认:没有新增样式文件或手写样式;所有新文案落在已有内容入口;共享组件的调用方未被意外破坏;页面路由、SEO/JSON-LD、CTA 链接、图片 alt 和移动端结构仍有效;类型检查通过。对于未接入页面,不把占位 CapabilityPage 误当成完整产品页。
Repository resources
References
Repository resources