2026-09-04 ServiceOn Blog 작업일지입니다. 오늘은 8건의 작업을 진행했습니다.
빌드 결과물 위치
현상/기능
- 빌드 하면 빌드한 파일의 위치가 너무 어렵다. 쉽게 찾을 수 있게
작업
- 패키징 출력: `deploy/` → 레포 루트 `dist/`
- `pnpm build`가 Next 빌드 후 `dist/web`, `dist/admin`까지 생성
- Next만: `pnpm build:next`. CI rsync 경로 `dist/` → `/var/www/blog/`
- 안내: `README.md` 상단, `dist/0_여기가_빌드결과입니다.txt`
히스토리 하루 카드 (기존 n8n 파이프라인)
현상/기능
- DB에 저장되어 화면에 나올 때는 history 항목 하나하나가 카드 하나로 나온다. AI를 통해 하루를 묶어서 어떤 작업을 어떻게 했는지 나타나게. DB에 저장되면 n8n에서 읽어 AI로 가공 후 하루 작업이력이 하나의 카드에 나타나야 한다
- 워크플로우 만들지 말고 기존에 사용하는 워크플로우 안에 추가로 만들어
작업
- 새 워크플로 없음. `SO-블로그 파이프라인`에 히스토리 분기 추가
- Schedule Trigger(06:00) → 기존 뉴스 수집과 병렬로 `Fetch History Raw`
- `History Day Backfill` 수동 트리거: 히스토리만 실행, 뉴스 HTTP 안 탐
- 원본 `history-sync://` 를 날짜·프로젝트로 묶어 `history-day://all/날짜`, `history-day://{slug}/날짜` 카드 upsert
- 공개 `/history`·홈·상세 이전다음: 하루 카드가 있는 날짜는 원본 항목 숨김
- shared: `isHistoryRawSource`, `isHistoryDaySource`, `pickHistoryPostsForFeed`
- 백필 2회 실행. 하루 카드 80장(전체 날짜 56 + 프로젝트 24). 남은 날짜는 다음 Backfill 또는 매일 06:00에 이어서 채움
히스토리 자동 동기화 (작업 스케줄러)
현상/기능
- 그럼 매일 자동으로 안되잖아
- git 이나 구글드라이브로 연동시키고 n8n에서 매일 가져오게 할 수 있나
작업
- 사전 조사: git 원격은 7개 중 Ruga 1개뿐, 구글 드라이브 데스크톱 미설치, n8n 자격증명은 MariaDB만 → 작업 스케줄러 채택
- `scripts/history-sync-task.vbs` 신규. 창 없이 node 실행, `logs/history-sync.log` 누적, 1MB 넘으면 회전, 종료 코드 반환
- 배치(.cmd)는 UTF-8 인코딩으로 cmd 파싱이 깨져 폐기하고 VBS 단일 파일로 통합. VBS 는 CP949 저장
- 스케줄러 `ServiceOn Blog - History Sync` 등록. 매일 09:00, 놓친 실행은 켜질 때 보충
- `source_url = history-sync://<slug>` 표시 추가
- `pruneProject` 추가. md 에서 사라진 과거 동기화 글 삭제. 표시 또는 `slug|날짜|제목` 해시가 맞는 글만 지워 수기 작성 글은 보존
- 검증: 잔여 49편(Ruga 구버전 파싱분) 정리, 총 377편. `/history` 날짜 그룹 71개, ruga 14개로 md 와 일치
히스토리 수집 스크립트
현상/기능
- 일단 실행해봐
작업
- `scripts/history-sources.json` 경로 목록
- `scripts/` + `pnpm history:sync`
- 로컬 md 읽기 → 운영 DB 히스토리 글. 다른 프로젝트 코드 변경 없음
작업 이력 형식
현상/기능
- 기록이 대분류 페이지 / 중분류 수정일자로 되어 있다. 대분류 수정일자 / 중분류 페이지로 모두 변경
작업
- `.cursor/rules/project_history.md` 전체 재배치. 본문 내용은 유지
페이지 (히스토리 상세 하단)
현상/기능
- 히스토리 아래 항목은 뉴스 항목들이다. 이부분도 모두 히스토리가 나와야 한다. 없으면 없는대로
작업
- `posts/[id]`: 이전/다음·관련 카드를 같은 주제만 사용
- 히스토리 글은 히스토리만, 없으면 비움. AI 뉴스도 뉴스만
페이지 (파비콘)
현상/기능
- 파비콘 아이콘을 우리 아이콘으로 변경
작업
- 공개/관리자 `app/favicon.ico`, `icon.svg`, `apple-icon.png`
- 헤더 워드마크와 같은 전원 O (남색 배경 + 시안 스트로크)
- Next 기본 `favicon.ico` 대체
페이지 (히스토리 프로젝트)
현상/기능
- 형식이 아니라 히스토리의 내용을 분류하고자 한다. 프로젝트 선택 → 일자별 작업내역 → 클릭하면 작업내용
작업
- 관리자 `/projects` CRUD + 포스트 폼(히스토리일 때만 프로젝트)
- 공개 `HistoryClient`: 프로젝트 칩 + 일자별 목록. 형식 필터 제거
- 상세 브레드크럼: `홈 > 히스토리 > 프로젝트 > 제목`
- `/history?project=slug`. 미분류 글은 `none`
- 공개 목록은 search(all) 후 `matchesCategorySlug(dev_history)` (DB 저장명이 한글이어도 포함)
- 확인용 시드: 프로젝트 `ServiceOn Blog`, 작업일지 2편(배정 1 / 미분류 1)