面向服务工程师的现场应用(全球)
我们参与了一款现场应用的改版,全球服务工程师在上门维修现场用它查看维修工单、管理上门日程、汇报作业结果。这款应用要在通信不稳定的海外地区使用,断网期间录入的作业结果一旦丢失,现场完成的工作就会从记录中消失。我们做了断网时保存在设备上、恢复连接后自动发送到服务器的同步,并确保应用转到后台时传输不会中途停止。
断网也留在设备上的现场作业记录
服务工程师用这款现场应用查看维修工单、管理客户上门日程、汇报作业结果。断网状态下录入的作业数据保存在设备内的数据库和文件中,重新连接后自动发送到服务器。海外现场的通信状况参差不齐,不丢数据是这款应用的核心要求。

应用退到后台后仍在继续的同步
当时的智能手机操作系统,对应用退到后台后可运行的时间限制得很严。现场应用转入后台时,会向操作系统申请延长 180 秒运行时间,并设计成在这段时间内完成同步。这样即使工程师切换到其他应用,正在进行的传输也能在允许的范围内走完。

比对发送前后状态,防止作业结果遗漏
在断网与重新连接之间,设备和服务器上的数据可能出现不一致。现场应用会把作业结果存为文件,并经过校验处理。通过确认发送到服务器之前与之后的状态,确保现场作业结果不会在中途遗漏。

在网页之上接入设备功能的多语言现场应用
这款面向服务工程师的现场应用,是把网页装进应用外框的结构。我们在其中负责开发单靠网页做不到的设备端功能,例如文件保存、本机存储和后台处理。各国工程师用各自的语言使用这款应用,因此我们检查了多语言界面,以及在通信不稳定处也能继续作业的异常流程。

项目亮点
断网时存于设备、恢复连接后自动发送的离线同步
应用转入后台后仍继续的同步
比对发送前后的状态,防止作业结果遗漏
洞察
GA4 client_storage: 'none'은 정말 쿠키를 막을까?
두 달 전 이 블로그에 「GA4 쿠키 없이 쓰기」라는 글을 썼습니다. clientstorage: 'none' 으로 쿠키 저장을 끄고, 자체 분석이 쓰던 익명 ID 를 clientid 로 넘기면 쿠키 0개로 GA4 를 쓸 수 있다는 내…
GA4 Measurement Protocol: gtag.js 없이 서버에서 이벤트 보내기
랜딩 페이지의 전송량을 파일 단위로 쪼개 보다가, 가장 큰 파일이 우리 코드가 아니라는 것을 알았습니다. Google Analytics 의 gtag.js 였고, 방문 한 번에 176KB 를 받고 있었습니다. 페이지 전체가 1,094K…
중소 제조업 AI 도입 순서: DX를 먼저 끝내야 할까?
공장을 가진 중소·중견 제조기업 16만여 곳 가운데 스마트공장을 도입한 곳은 19.5%입니다. 회사가 작을수록 이 비율은 더 떨어집니다. 중소벤처기업부가 2025년 4월에 낸 제1차 스마트제조혁신 실태조사 결과입니다. 그림: 기업 규…
Next.js loading.tsx와 404: 버튼이 화면보다 먼저 살아나게 하기
관리 화면 왼쪽 위에 사이드바를 접고 펴는 ☰ 버튼이 있습니다. 폭 하나 바꾸는 버튼인데, 대시보드에서 누르면 2초 넘게 아무 반응이 없었습니다. 레이아웃만 바꾸는 일이 왜 이렇게 오래 걸리는지부터 들여다봤습니다. Next.js 16…



