---
title: "📓 작업일지 — pace_sec_per_km 정수 반올림 (엑셀/가져오기·코치챗 저장 400 오류 차단)"
category: "worklog"
parent: "Claude Code 작업일지"
updated: "2026-08-07"
priority: "High"
purpose: "running_logs.pace_sec_per_km 컬럼이 integer 타입인데 소수 원값을 그대로 저장해, 거리·시간이 나누어떨어지지 않는 대부분의 러닝 기록이 DB 400으로 거부되던 결함을 수정한 기록."
read_when: ["pace_sec_per_km", "러닝 기록 저장 400 오류", "RunningExcel", "UniverRunning", "coachChat recordSave", "정수 반올림"]
document_type: "개발일지"
source_status: "generated"
knowledge_group: "03_history"
work_timestamp: "20260807_163518"
source_of_truth: "https://dallog-tools.hansbridge.co.kr/knowledge/"
context: "달록 본레포(ccy-hansbridge/dallog), 커밋 f33740d9(2026-08-07). pace_sec_per_km 정수 반올림 — 엑셀/가져오기 저장 400 오류 차단."
---

# 작업일지 — pace_sec_per_km 정수 반올림 (엑셀/가져오기·코치챗 저장 400 오류 차단)

> `running_logs.pace_sec_per_km` 컬럼은 integer 타입인데, 페이스(초/km)를 `sec / dist`로 계산한 소수 원값을 그대로 insert하는 저장 경로 3곳이 남아 있었다. 거리·시간이 나누어떨어지는 경우가 아니면 대부분 소수가 나와, 해당 러닝 기록 저장이 DB 400 오류로 거부되던 결함이다.

## 1. 무엇을 했나

- 러닝 기록 저장 경로 중 `pace_sec_per_km`을 `sec / dist` 소수 원값으로 그대로 저장하던 3곳(엑셀 가져오기 그리드, Univer 러닝 에디터, 코치챗 기록 저장)에 모두 `Math.round()`를 적용.
- 다른 저장 경로(`LogEntry`, `recordEdit`, 웨어러블 어댑터)는 이미 반올림 처리 중이던 패턴이었으므로, 이번 수정으로 저장 경로 간 처리 방식을 통일.
- 데모(demo-dallog)에서 실사용자 데이터로 원인을 진단·검증 완료. 커밋 메시지에 따르면 대상 파일 3개는 main·demo 현재 커밋 기준 동일 상태였고, 이번 변경 3줄 외 데모 미완성 UI/UX 변경분은 섞이지 않음.
- 커밋 메시지 기준, 로컬 pre-commit 훅(`scripts/deleted-path-ref-guard.cjs`)이 demo-dallog 전용 스크립트라 main 기반 브랜치에는 파일이 없어 훅 실행 자체가 MODULE_NOT_FOUND로 실패(가드 위반은 아님) → 오너 확인 후 `--no-verify`로 1회 우회.

## 2. 주요 변경 파일

| 파일 | 내용 |
|---|---|
| `src/components/excel/RunningExcel.tsx` | `pace_sec_per_km: dist && sec ? sec / dist : null` → `Math.round(sec / dist)` (1줄) |
| `src/components/excel/univerEditor/UniverRunning.tsx` | 동일 패턴 `Math.round()` 적용 (1줄) |
| `src/lib/coachChat/recordSave.ts` | 동일 패턴 `Math.round()` 적용 + 관련 주석 갱신(기존 "반올림은 표시 단계에서만" 주석이 컬럼 타입과 어긋난 설명이었음을 정정) |

### 변경 예시 (`recordSave.ts`)

```diff
-  // pace 도 RunningExcel 과 동일하게 sec/dist 원값을 저장(반올림은 표시 단계에서만) — 수동/채팅 저장 일관성.
+  // pace_sec_per_km 컬럼이 integer라 반올림 필수(소수 저장 시 DB 400) — RunningExcel·UniverRunning 동일 수정.
   const payload = {
     recorded_at: p.recorded_at,
     distance_km: p.distance_km,
     duration_sec: sec,
-    pace_sec_per_km: p.distance_km && sec ? sec / p.distance_km : null,
+    pace_sec_per_km: p.distance_km && sec ? Math.round(sec / p.distance_km) : null,
```

## 3. 관련 커밋

- `f33740d9` fix(running): pace_sec_per_km 정수 반올림 — 엑셀/가져오기 저장 400 오류 차단 (2026-08-07)

## 4. 남은 이슈

커밋 메시지 기준 별도로 언급된 남은 이슈는 없음.
