From 3ea5cf849e2f1562cbfb8faddc26220617b0c41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Tue, 21 Apr 2026 16:57:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(cases):=20=E6=96=B0=E5=A2=9E=E6=99=BA?= =?UTF-8?q?=E6=85=A7=E5=86=9C=E4=B8=9A=E6=A1=88=E4=BE=8B=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=94=BF=E5=BA=9C=E6=A1=88=E4=BE=8B=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增农业种植灌溉信息化建设咨询项目案例 - 更新政府案例:添加关键成果数据、优化客户评价 - 同步更新测试用例和页面组件 --- .../(marketing)/cases/[id]/client.test.tsx | 132 +++++++++++++---- src/app/(marketing)/cases/[id]/page.tsx | 10 +- src/app/(marketing)/cases/page.tsx | 12 +- src/components/sections/cases-section.tsx | 2 +- src/lib/constants/cases.ts | 133 +++++++++++------- src/lib/constants/index.ts | 2 + src/lib/constants/stats.ts | 2 +- 7 files changed, 206 insertions(+), 87 deletions(-) diff --git a/src/app/(marketing)/cases/[id]/client.test.tsx b/src/app/(marketing)/cases/[id]/client.test.tsx index b1a46be..f61ffde 100644 --- a/src/app/(marketing)/cases/[id]/client.test.tsx +++ b/src/app/(marketing)/cases/[id]/client.test.tsx @@ -2,6 +2,23 @@ import { render, screen } from '@testing-library/react'; import '@testing-library/jest-dom'; import { CaseDetailClient } from './client'; +interface TestCaseItem { + id: string; + title: string; + excerpt: string; + content: string; + category: string; + slug: string; + date: string; + image?: string; + challenge: string; + solution: string; + keyMoments: { title: string; description: string }[]; + results: { label: string; value: string }[]; + testimonial: { quote: string; author: string; role: string }; + duration: string; +} + jest.mock('next/navigation', () => ({ useRouter: () => ({ push: jest.fn(), @@ -11,12 +28,14 @@ jest.mock('next/navigation', () => ({ })); jest.mock('next/link', () => { - return ({ children, href }: { children: React.ReactNode; href: string }) => { + const MockLink = ({ children, href }: { children: React.ReactNode; href: string }) => { return {children}; }; + MockLink.displayName = 'MockLink'; + return MockLink; }); -const mockCaseItem = { +const mockCaseItem: TestCaseItem = { id: 'test-case', title: '测试案例标题', excerpt: '这是一个测试案例的描述', @@ -24,6 +43,23 @@ const mockCaseItem = { category: '制造业', slug: 'test-case', date: '2026-03-27', + challenge: '这是客户面临的挑战描述', + solution: '这是我们的解决方案描述', + keyMoments: [ + { title: '关键时刻一', description: '关键时刻一的详细描述' }, + { title: '关键时刻二', description: '关键时刻二的详细描述' }, + ], + results: [ + { label: '运营成本', value: '降低25%' }, + { label: '设备故障响应', value: '缩短85%' }, + { label: '排产周期', value: '从1周缩至半天' }, + ], + testimonial: { + quote: '这是客户证言内容', + author: '测试客户', + role: 'CTO', + }, + duration: '2年', }; describe('CaseDetailClient', () => { @@ -33,90 +69,124 @@ describe('CaseDetailClient', () => { describe('Rendering', () => { it('should render case detail page', () => { - render(); + render(); const main = screen.getByRole('main'); expect(main).toBeInTheDocument(); }); it('should render case title', () => { - render(); + render(); const title = screen.getByRole('heading', { level: 1 }); expect(title).toBeInTheDocument(); expect(title).toHaveTextContent('测试案例标题'); }); - it('should render case client name', () => { - render(); + it('should render case excerpt', () => { + render(); const excerpts = screen.getAllByText('这是一个测试案例的描述'); expect(excerpts.length).toBeGreaterThan(0); }); it('should render case industry badge', () => { - render(); + render(); const categories = screen.getAllByText('制造业'); expect(categories.length).toBeGreaterThan(0); }); - it('should render case description', () => { - render(); - const excerpts = screen.getAllByText('这是一个测试案例的描述'); - expect(excerpts.length).toBeGreaterThan(0); + it('should render challenge content', () => { + render(); + expect(screen.getByText('这是客户面临的挑战描述')).toBeInTheDocument(); }); - it('should render case results', () => { - render(); - const excerpts = screen.getAllByText('这是一个测试案例的描述'); - expect(excerpts.length).toBeGreaterThan(0); + it('should render solution content', () => { + render(); + expect(screen.getByText('这是我们的解决方案描述')).toBeInTheDocument(); }); - it('should render case tags', () => { - render(); - const categories = screen.getAllByText('制造业'); - expect(categories.length).toBeGreaterThan(0); + it('should render results data', () => { + render(); + expect(screen.getByText('降低25%')).toBeInTheDocument(); + expect(screen.getByText('缩短85%')).toBeInTheDocument(); + }); + + it('should render testimonial', () => { + render(); + expect(screen.getByText('这是客户证言内容')).toBeInTheDocument(); + const authors = screen.getAllByText('测试客户'); + expect(authors.length).toBeGreaterThan(0); + const roles = screen.getAllByText('CTO'); + expect(roles.length).toBeGreaterThan(0); }); it('should render contact button', () => { - render(); + render(); const contactButton = screen.getByRole('link', { name: /联系我们/i }); expect(contactButton).toBeInTheDocument(); }); + + it('should render duration in sidebar', () => { + render(); + expect(screen.getByText('2年')).toBeInTheDocument(); + }); }); describe('Sections', () => { it('should render customer challenges section', () => { - render(); + render(); const section = screen.getByText('客户遇到的成长瓶颈'); expect(section).toBeInTheDocument(); }); it('should render solution section', () => { - render(); + render(); const section = screen.getByText('我们如何智连未来'); expect(section).toBeInTheDocument(); }); - it('should render growth story section', () => { - render(); + it('should render growth story section with key moments', () => { + render(); const section = screen.getByText('共同成长的故事'); expect(section).toBeInTheDocument(); + expect(screen.getByText('关键时刻一')).toBeInTheDocument(); + expect(screen.getByText('关键时刻二')).toBeInTheDocument(); }); - it('should render achievements section', () => { - render(); + it('should render achievements section with results', () => { + render(); const section = screen.getByText('今天,他们走到了哪里'); expect(section).toBeInTheDocument(); }); it('should render testimonial section', () => { - render(); + render(); const section = screen.getByText('客户证言精选'); expect(section).toBeInTheDocument(); }); }); + describe('Conditional Rendering', () => { + it('should not render key moments section when empty', () => { + const caseWithoutMoments = { ...mockCaseItem, keyMoments: [] }; + render(); + expect(screen.queryByText('共同成长的故事')).not.toBeInTheDocument(); + }); + + it('should not render results section when empty', () => { + const caseWithoutResults = { ...mockCaseItem, results: [] }; + render(); + expect(screen.queryByText('今天,他们走到了哪里')).not.toBeInTheDocument(); + }); + + it('should not render testimonial section when absent', () => { + const caseWithoutTestimonial = { ...mockCaseItem, testimonial: undefined }; + render(); + expect(screen.queryByText('客户证言精选')).not.toBeInTheDocument(); + }); + }); + describe('Navigation', () => { it('should have back button', () => { - render(); + render(); const backButton = screen.getByRole('button', { name: /返回/i }); expect(backButton).toBeInTheDocument(); }); @@ -124,16 +194,16 @@ describe('CaseDetailClient', () => { describe('Accessibility', () => { it('should have main landmark', () => { - render(); + render(); const main = screen.getByRole('main'); expect(main).toBeInTheDocument(); }); it('should have proper heading hierarchy', () => { - render(); + render(); const h1 = screen.getByRole('heading', { level: 1 }); expect(h1).toBeInTheDocument(); - + const h2s = screen.getAllByRole('heading', { level: 2 }); expect(h2s.length).toBeGreaterThan(0); }); diff --git a/src/app/(marketing)/cases/[id]/page.tsx b/src/app/(marketing)/cases/[id]/page.tsx index 6dea24b..ac81432 100644 --- a/src/app/(marketing)/cases/[id]/page.tsx +++ b/src/app/(marketing)/cases/[id]/page.tsx @@ -37,10 +37,16 @@ export default async function CaseDetailPage({ params }: { params: Promise<{ id: id: caseItem.id, title: caseItem.title, excerpt: caseItem.description, - content: caseItem.content || '', + content: caseItem.solution || '', category: caseItem.industry, slug: caseItem.id, - date: '2026-01-15', + date: caseItem.date, image: caseItem.image, + challenge: caseItem.challenge, + solution: caseItem.solution, + keyMoments: caseItem.keyMoments, + results: caseItem.results, + testimonial: caseItem.testimonial, + duration: caseItem.duration, }} />; } diff --git a/src/app/(marketing)/cases/page.tsx b/src/app/(marketing)/cases/page.tsx index c806f6d..b9e6198 100644 --- a/src/app/(marketing)/cases/page.tsx +++ b/src/app/(marketing)/cases/page.tsx @@ -145,12 +145,14 @@ export default function CasesPage() {
- 3年合作 - - - - 数字化转型 + {caseItem.duration}合作 + {caseItem.tags.slice(0, 1).map((tag) => ( + + + {tag} + + ))}

diff --git a/src/components/sections/cases-section.tsx b/src/components/sections/cases-section.tsx index 91af57c..2b81ae0 100644 --- a/src/components/sections/cases-section.tsx +++ b/src/components/sections/cases-section.tsx @@ -63,7 +63,7 @@ export function CasesSection() {

- 客户企业 + {caseItem.client}

{caseItem.title} diff --git a/src/lib/constants/cases.ts b/src/lib/constants/cases.ts index b8c017b..6c43356 100644 --- a/src/lib/constants/cases.ts +++ b/src/lib/constants/cases.ts @@ -41,81 +41,81 @@ export interface CaseItem { export const CASES: CaseItem[] = [ { id: 'case-1', - title: '生物科技技术资源优化咨询项目', - client: '某知名生物科技公司', - industry: '生物科技', + title: '藏区酒店信息化管理建设项目', + client: '某藏区精品酒店', + industry: '酒店管理', description: - '为某知名生物科技公司提供全面的技术咨询服务,帮助客户梳理现有技术资源体系,合理配置和运用已有技术能力,避免重复建设,减少不必要的IT支出,实现技术资产价值最大化。', + '为某偏远藏区精品酒店提供信息化管理建设服务,帮助客户克服高原地区网络条件受限、人员信息化基础薄弱等特殊困难,实现从纯手工运营向数字化管理的跨越,提升旅游旺季接待能力和运营效率。', challenge: - '该生物科技公司经过十年快速发展,内部积累了超过40个独立IT系统和实验室信息管理平台。研发、生产、质控三大部门各自采购了功能重叠的软件工具,年度IT总支出高达2800万元,但系统间数据孤岛严重,实验数据从采集到出具分析报告平均需要7个工作日,严重制约了新药研发的推进速度。此外,由于缺乏统一的技术治理架构,合规审计每次都需要耗费大量人工整理材料。', + '该酒店位于川西高原藏区,是当地规模较大的精品酒店,拥有86间客房,每年接待大量自驾游和徒步游客。然而,酒店运营完全依赖手工操作——前台用纸质登记本记录客人信息,客房状态靠手写白板展示,财务用Excel记账,库存管理全凭人工盘点。由于藏区网络信号不稳定、部分员工信息化基础薄弱,此前尝试引入的市面标准酒店管理系统经常断线卡顿,员工不会用也不愿用,最终沦为摆设。旅游旺季时,前台排队登记常常让客人等待超过20分钟,客房清扫调度混乱导致客人入住时房间尚未打扫完毕,OTA平台上的差评中超过40%与入住效率和房间状态有关。', solution: - '我们首先对客户全部技术资产进行了为期三周的深度盘点,梳理出40+系统中存在功能重叠的12组、完全闲置的系统6个。在此基础上,制定了"三步走"整合方案:第一阶段合并重叠系统,统一数据标准;第二阶段搭建企业级数据中台,打通研发-生产-质控全链路数据流;第三阶段引入智能化运维体系,建立持续优化的技术治理机制。整个过程中,我们特别注重合规性要求,确保所有整合方案符合GMP和FDA 21 CFR Part 11标准。', + '我们深入藏区实地调研后,针对高原酒店的特殊环境量身定制了轻量化、高可用的信息化管理方案。在网络适配方面,系统采用本地优先架构——核心功能支持离线运行,数据在本地缓存,网络恢复后自动同步,彻底解决了信号不稳定导致的系统不可用问题。在易用性方面,界面设计遵循"三步完成"原则,每个操作流程不超过三步点击,并配备藏汉双语界面和语音操作引导,让信息化基础薄弱的当地员工也能快速上手。核心功能模块包括:智能前台系统,支持身份证识别快速入住和扫码退房;客房管理系统,通过移动端实现清扫任务自动派发和房间状态实时更新;财务库存模块,自动生成每日营收报表和物资消耗预警。目前系统已在酒店全面上线运行。', keyMoments: [ { - title: '关键发现:隐藏的"僵尸系统"', + title: '攻克网络难题:离线模式保障系统可用', description: - '在技术资产盘点过程中,我们发现客户每年仍在为6个几乎无人使用的遗留系统支付维护费用,累计年浪费超过180万元。这一发现直接促成了客户高层对整个项目的全力支持。', + '系统上线初期,高原频繁的网络波动导致标准SaaS模式频繁断线。我们紧急调整技术方案,用一周时间开发并部署了本地优先+异步同步架构,核心业务流程在断网状态下可正常使用,网络恢复后数据自动回传。这一改造使系统可用率从不足60%提升至99%以上,彻底消除了员工"系统不好用"的抵触心理。', }, { - title: '数据中台上线:7天变4小时', + title: '旺季实战:入住效率提升5倍', description: - '数据中台正式上线后,实验数据从采集到分析报告的周期从原来的7个工作日缩短至4小时。研发团队负责人在上线当天表示:"这是近五年来最激动人心的一天。"', + '系统上线后恰逢国庆旅游旺季,日均入住量达到平时的3倍。得益于身份证识别快速入住和客房状态实时同步,前台平均办理时间从20分钟缩短至4分钟,客房清扫调度井然有序,旺季期间"到店无房可住"的投诉从去年同期的17起降至0起。OTA平台评分从3.8分提升至4.5分。', }, ], results: [ - { label: 'IT年度支出', value: '降低35%' }, - { label: '数据处理效率', value: '提升50倍' }, - { label: '闲置系统清理', value: '6个' }, + { label: '入住办理', value: '20分钟→4分钟' }, + { label: '系统可用率', value: '60%→99%' }, + { label: 'OTA评分', value: '3.8→4.5' }, ], testimonial: { quote: - '睿新致远团队对生物科技行业的理解远超我们的预期。他们不仅帮我们省了钱,更重要的是建立了一套可持续演进的技术治理体系,让我们的IT投入真正转化为研发竞争力。', + '之前也买过酒店管理系统,但网络一断就成了摆设,员工也不会用。睿新致远不一样,他们专门跑到藏区来实地看我们的情况,做的系统能离线用、界面简单、还有藏语,我们的员工两天就学会了。现在旺季再也不手忙脚乱了。', author: '客户企业', - role: 'CTO', + role: '酒店总经理', }, - tags: ['技术咨询', '资源优化', '生物科技'], + tags: ['酒店管理', '信息化建设', '藏区服务'], image: '/images/cases/biotech.jpg', - duration: '2年', - date: '2025-09-20', + duration: '6个月', + date: '2026-04-15', }, { id: 'case-2', - title: '制造企业技术资源规划咨询项目', + title: '制造企业办公信息化建设项目', client: '某大型制造企业', - industry: '智能制造', + industry: '制造业', description: - '为某大型制造企业提供专业的技术咨询与资源规划服务,帮助客户全面梳理现有技术资源,制定合理的资源配置方案,优化技术架构,减少不必要的成本支出,提升整体运营效率。', + '为某大型制造企业建设统一的办公信息化平台,涵盖OA协同办公、人事管理、财务报销、行政审批等核心模块,帮助企业告别纸质办公和"人肉流转",实现办公效率的全面提升。', challenge: - '该制造企业在全国拥有8个生产基地、3个研发中心,但各基地的技术系统建设各自为政——有的基地仍在使用15年前的本地部署ERP,有的基地已经上了云端MES却无法与总部财务系统对接。生产计划排程依赖人工Excel汇总,每次月度排产需要3名计划员耗费整整一周。更棘手的是,设备故障响应平均需要4小时,导致非计划停机损失每年超过2000万元。', + '该制造企业员工规模超过3000人,但日常办公仍以纸质流程为主——一份请假申请需要找3位领导签字,一次差旅报销从提交到打款平均需要21天,跨部门文件审批依赖纸质传阅,经常出现"文件找不到、进度查不到、责任追不到"的窘境。各部门使用不同版本的Excel表格管理业务数据,信息孤岛严重。更关键的是,总部与分散在全国的8个分支机构之间缺乏统一的协同平台,远程协作效率极低,每次月度经营分析会都需要各基地提前一周手工汇总数据。', solution: - '我们为客户设计了"统一底座、分级赋能"的技术架构蓝图。核心是在总部部署统一的工业互联网平台,向下兼容各基地现有系统,通过标准化接口实现数据汇聚;向上为各基地提供智能排产、预测性维护、质量追溯等共享服务。在实施路径上,我们选择了信息化基础最薄弱的华南基地作为试点,用6个月完成全流程数字化改造,形成可复制的标准化模板,再逐步推广到其余基地。同时引入AI驱动的设备预测性维护模型,将被动维修转变为主动预防。', + '我们为客户规划并实施了统一的办公信息化平台,采用"核心模块优先+分批推广"的策略。第一优先级上线OA协同办公和行政审批模块,覆盖请假、出差、用章、采购等高频流程,实现全流程线上化和移动端审批。第二优先级上线人事管理和财务报销模块,打通员工入离职、考勤排班与薪资核算的全链路,同时实现发票识别、智能审单和自动对账,将报销周期从21天压缩至3天。第三阶段规划建设知识管理、会议协作和经营分析看板等增值模块,构建企业级数字化办公生态。目前OA和行政审批模块已在总部全面上线,财务报销模块正在试点中。', keyMoments: [ { - title: '华南基地试点:从质疑到标杆', + title: '审批流程再造:21天变3天', description: - '项目启动初期,华南基地的厂长对"统一平台"方案持强烈保留态度。我们邀请他参与方案设计的每一个评审环节,并根据一线工人的实际反馈调整了12处交互细节。试点上线三个月后,该基地的人均产出提升了22%,厂长主动请缨成为全集团推广的"内部布道师"。', + '我们与客户各部门逐一梳理了87条审批流程,识别出32条可以合并或简化的流程,并针对每条流程设计了最优的线上审批路径。OA系统上线后,平均审批时长从原来的5.2天缩短至0.8天,差旅报销周期从21天压缩至3天,员工满意度调查得分从62分提升至89分。', }, { - title: '预测性维护:避免了一场重大事故', + title: '移动审批上线:领导随时随地批', description: - 'AI预测性维护系统上线仅两个月,就成功提前48小时预警了一台核心冲压设备的轴承疲劳问题。如果按以往的被动维修模式,这次故障将导致整条产线停工5天,损失约350万元。', + '在系统上线第二个月,我们推出了移动端审批功能。上线首周,移动端审批量即占总审批量的67%。一位分管生产的副总反馈:"以前出差一周回来,办公桌上堆满了待签文件,现在高铁上就能批完,再也不用加班补签了。"', }, ], results: [ - { label: '运营成本', value: '降低25%' }, - { label: '设备故障响应', value: '缩短85%' }, - { label: '排产周期', value: '从1周缩至半天' }, + { label: '平均审批时长', value: '缩短85%' }, + { label: '报销周期', value: '21天→3天' }, + { label: '员工满意度', value: '62→89分' }, ], testimonial: { quote: - '最让我佩服的是睿新致远不搞"一刀切"。他们充分尊重每个基地的实际情况,用试点证明价值,用数据说服人心。这种务实的作风在咨询行业非常难得。', + '以前觉得上OA系统就是买个软件装上,睿新致远让我们明白办公信息化的核心是流程再造。他们不是简单地把线下流程搬到线上,而是帮我们重新思考了每一条流程是否合理、能不能更快。这种"先梳理再上线"的方法论非常专业。', author: '客户企业', - role: 'COO', + role: '行政总监', }, - tags: ['技术咨询', '资源规划', '智能制造'], + tags: ['办公信息化', 'OA协同', '流程再造'], image: '/images/cases/manufacturing-consulting.jpg', - duration: '3年', - date: '2026-01-15', + duration: '8个月', + date: '2026-04-10', }, { id: 'case-3', @@ -125,35 +125,74 @@ export const CASES: CaseItem[] = [ description: '为某市级政府单位提供数字化整体解决方案,涵盖业务流程优化、信息系统整合、在线服务平台建设等,有效提高办事效率,提升公共服务水平和群众满意度。', challenge: - '该市级政府单位承担着面向全市120万市民的行政审批和公共服务职能。然而,市民办理一项常规审批平均需要跑3个窗口、提交15份纸质材料、等待12个工作日。疫情期间,线下服务被迫暂停,但线上办理渠道几乎为零,导致大量业务积压。同时,内部22个科室各自维护独立的业务台账,跨科室协办事项平均流转时间超过20天,群众投诉率居高不下。', + '该市级政府单位承担着面向全市120万市民的行政审批和公共服务职能。然而,市民办理一项常规审批平均需要跑3个窗口、提交15份纸质材料、等待12个工作日。同时,内部22个科室各自维护独立的业务台账,跨科室协办事项平均流转时间超过20天,群众投诉率居高不下。随着"数字政府"建设的深入推进,该单位亟需加快数字化转型步伐。', solution: - '我们为客户规划并实施了"一网通办"数字化政务服务平台。方案以"数据多跑路、群众少跑腿"为核心理念,包含三大工程:一是建设统一的政务数据共享交换平台,打通22个科室的数据壁垒,实现"一次采集、多方复用";二是开发面向市民的"全流程网办"系统,覆盖85%的高频事项,支持PC端和移动端;三是构建智能审批辅助引擎,对标准化事项实现"秒批秒办",对复杂事项提供"智能预审+人工复核"的半自动模式。在实施过程中,我们特别注重适老化设计,为老年市民保留了电话预约和线下辅助通道。', + '我们为客户规划了"一网通办"数字化政务服务平台。方案以"数据多跑路、群众少跑腿"为核心理念,包含三大工程:一是建设统一的政务数据共享交换平台,打通22个科室的数据壁垒,实现"一次采集、多方复用";二是开发面向市民的"全流程网办"系统,覆盖85%的高频事项,支持PC端和移动端;三是构建智能审批辅助引擎,对标准化事项实现"秒批秒办",对复杂事项提供"智能预审+人工复核"的半自动模式。在实施过程中,我们特别注重适老化设计,为老年市民保留了电话预约和线下辅助通道。目前项目已完成整体方案设计和数据共享平台搭建,网办系统正在开发中。', keyMoments: [ { - title: '疫情期间紧急上线:72小时攻坚战', + title: '需求调研:走访22个科室', description: - '疫情反复期间,线下服务窗口再次关闭。我们接到紧急需求后,团队72小时连续作战,优先上线了市民最急需的5项高频服务的线上办理功能。上线首周即受理业务3200件,有效缓解了积压压力。市政府领导专门发来感谢信。', + '项目启动后,我们用两周时间逐一走访了全部22个科室,深入了解每个科室的业务流程和数据流转现状。调研中发现的"重复录入"问题尤为突出——同一份企业资料平均被不同科室录入6次,这一发现为后续数据共享方案提供了强有力的支撑。', }, { - title: '适老化改造:让数字化不落下任何人', + title: '适老化方案获高度评价', description: - '在系统试运行阶段,我们收到多位老年市民的反馈,表示"不会用智能手机"。我们迅速增加了大字版界面、语音引导功能和电话预约通道,并组织社区志愿者培训。改造后,60岁以上市民的线上办理率从8%提升至35%。', + '在方案评审阶段,我们提出的适老化设计方案——包括大字版界面、语音引导、电话预约通道和社区志愿者协助机制——获得了评审专家的一致好评。评审组长评价:"这是少数真正考虑到了每一位市民的方案。"', }, ], results: [ - { label: '办事效率', value: '提升55%' }, - { label: '群众满意度', value: '提升40%' }, - { label: '平均办理时长', value: '缩短45%' }, + { label: '科室调研', value: '22个全覆盖' }, + { label: '高频事项覆盖', value: '85%' }, + { label: '数据共享平台', value: '已搭建完成' }, ], testimonial: { quote: - '睿新致远不仅懂技术,更懂"为人民服务"的含义。他们的适老化设计让我们看到了数字化转型的温度——技术进步不应该让任何一个人掉队。', + '睿新致远不仅懂技术,更懂"为人民服务"的含义。他们的适老化设计让我们看到了数字化转型的温度——技术进步不应该让任何一个人掉队。项目推进节奏稳健,我们对合作前景非常期待。', author: '客户单位', role: '信息化负责人', }, tags: ['解决方案', '政务服务', '数字化转型'], image: '/images/cases/government.jpg', - duration: '2.5年', - date: '2026-03-10', + duration: '10个月', + date: '2026-04-18', + }, + { + id: 'case-4', + title: '农业种植灌溉信息化建设咨询项目', + client: '某农户专业合作社', + industry: '智慧农业', + description: + '为某农户专业合作社提供种植灌溉信息化建设咨询服务,帮助合作社及辖区农户从传统经验灌溉向数据驱动的精准灌溉转型,以低成本、易操作的方案实现节水降本、提质增效。', + challenge: + '该合作社位于新疆塔城地区,由5户种植大户联合成立,承包经营耕地超过6000亩,以小麦、玉米和甜菜为主。塔城地区虽然依托额敏河和雪山融水,但水资源时空分布极不均衡,春旱频发,灌溉用水配额逐年收紧。长期以来,灌溉完全靠经验——"看天浇水、估摸着放",大水漫灌方式导致水利用率不足40%,水资源浪费严重。合作社曾尝试引入智慧农业系统,但市面上的方案要么针对大规模农场、投入动辄上百万,要么功能复杂、需要专业团队运维,不适合他们这种"几个农户管几千亩地"的模式。每到春灌用水高峰期,农户之间因争水引发的矛盾频发,干旱年份减产损失更为严重。合作社迫切需要一套"买得起、自己能管、真管用"的灌溉信息化方案。', + solution: + '我们深入塔城田间地头实地调研后,为合作社量身定制了"低成本、易运维、接地气"的智慧灌溉方案。在硬件方面,采用国产高性价比传感器,根据6000亩耕地的地块分布,按片区部署土壤墒情监测点和简易气象站,总投入控制在合作社可承受的范围内。在平台方面,搭建轻量级的灌溉数据服务平台,整合传感器数据、当地气象预报和灌区供水计划,结合塔城地区春旱频发、作物以旱作为主的特点,通过简化的灌溉建议模型生成通俗易懂的灌溉指导——"今天该浇多少水、什么时间浇",直接推送到农户手机微信上。在运维方面,系统设计充分考虑了"几个农户自己管"的场景,设备采用太阳能供电、无线传输、免布线安装,日常无需专业IT人员维护。目前系统已全面部署上线,覆盖全部6000亩耕地。', + keyMoments: [ + { + title: '免布线安装:两天完成全部部署', + description: + '考虑到农户人手有限、无法承担复杂的施工安装,我们选用了太阳能供电、4G无线传输的传感器设备,免布线、即插即用。整个监测网络仅用两天时间就完成了全部部署和调试,5户农户全程参与,边装边学,部署完成即能独立使用。', + }, + { + title: '春灌调度:数据化解争水矛盾', + description: + '往年春灌用水高峰期,5户农户因用水先后顺序和分配比例争执不下,每年都要找村委会协调。系统上线后,各片区土壤墒情和用水量数据实时可见,合作社据此制定了"缺水优先、轮灌调度"的公平分配方案。一个灌溉季下来,争水矛盾彻底化解,农户之间关系反而比以前更融洽了。', + }, + ], + results: [ + { label: '灌溉用水量', value: '降低28%' }, + { label: '水利用率', value: '从40%提升至65%' }, + { label: '覆盖耕地', value: '6000亩' }, + ], + testimonial: { + quote: + '我们几个人管着几千亩地,最怕的就是浇水——跑一遍地就得大半天,水还经常不够分。现在手机上就能看到哪块地缺水、该浇多少,省了人工还省了水。睿新致远的方案实在,设备装上去不用管,自己就能用。', + author: '客户单位', + role: '合作社理事长', + }, + tags: ['智慧农业', '精准灌溉', '惠农服务'], + image: '/images/cases/agriculture.jpg', + duration: '10个月', + date: '2026-04-20', }, ]; diff --git a/src/lib/constants/index.ts b/src/lib/constants/index.ts index 053c2dc..e7f9e0a 100644 --- a/src/lib/constants/index.ts +++ b/src/lib/constants/index.ts @@ -5,3 +5,5 @@ export { SERVICES } from './services'; export { PRODUCTS } from './products'; export { NEWS, type NewsItem, type NewsCategory } from './news'; export { CASES } from './cases'; +export { TEAM_MEMBERS, type TeamMember } from './team'; +export { METHODOLOGY, type MethodologyPhase } from './methodology'; diff --git a/src/lib/constants/stats.ts b/src/lib/constants/stats.ts index 176592e..50ca99c 100644 --- a/src/lib/constants/stats.ts +++ b/src/lib/constants/stats.ts @@ -25,7 +25,7 @@ function getStats(): StatItem[] { { value: `${uniqueClients}+`, label: '企业客户' }, { value: `${caseCount}+`, label: '成功案例' }, { value: `${caseCount}+`, label: '项目交付' }, - { value: `${yearsOfExperience}+`, label: '年行业经验' }, + { value: `${yearsOfExperience}+`, label: '年团队经验' }, ]; }