Obsidian Templater로 Redmine 업무일지 자동화하기
왜 업무일지 템플릿이 필요한가
업무 기록을 남기는 건 대부분의 개발자가 공감하는 "해야 하는데 귀찮은 일"이다. Redmine 같은 이슈 트래커를 쓰더라도, 실제 작업 내용은 티켓 코멘트에 파편화되기 마련이다. 나중에 "그때 그 이슈 어떻게 해결했지?"를 찾으려면 티켓을 뒤져야 하고, 주간 보고를 쓸 때마다 기억에 의존하게 된다.
처음에는 AI에게 업무 대화를 넘기면 업무일지를 생성하는 프롬프트를 만들어 썼다. 잘 동작하지만, 매번 대화 내용을 복사하고 프롬프트를 붙여넣는 과정 자체가 허들이었다. 대부분의 업무 기록은 핵심만 빠르게 적으면 충분하다. 그래서 직접 기입하는 Templater 템플릿으로 전환했다.
설계 기준
템플릿을 만들 때 세 가지를 기준으로 잡았다.
첫째, 기입 속도. 빈 파일에 처음부터 구조를 잡는 게 아니라, 유형을 선택하면 필요한 섹션만 나와야 한다. 둘째, 검색 가능성. YAML frontmatter에 Redmine 번호, 요청자, 주차, 태그를 넣어서 Dataview로 필터링할 수 있어야 한다. 셋째, 최소 입력. 날짜, URL, 폴더 이동 같은 건 자동 처리해서 내가 입력할 건 실제 내용뿐이어야 한다.
작업 유형 8가지
범용 템플릿 하나로 통일하는 방법도 있지만, 작업 유형마다 기록해야 할 핵심이 다르다. Bug/Error라면 증상-원인-수정이 세트고, 데이터 보정이라면 보정 사유-영향 범위-쿼리가 세트다. 유형별로 분기하면 빈 섹션 없이 깔끔하게 채울 수 있다.
정리한 유형은 이렇다. 일반 작업(순정), 코드 변경(Code), SQL 작업, 버그/에러 수정(Bug/Error), 단순 문의, 설정/배포, API 연동, 데이터 보정. Templater의 suggester 함수로 실행 시 목록에서 선택한다.
Templater 구현 핵심
입력 수집
tp.system.prompt로 Redmine 번호, 제목, 요청자를 받고, tp.system.suggester로 유형을 선택한다. 추가 태그는 쉼표 구분 자유 입력이다.
const redmineNum = await tp.system.prompt("Redmine 번호");
const title = await tp.system.prompt("제목 (2~5단어)");
const selectedType = await tp.system.suggester(types, types, false, "작업 유형 선택");
유형별 분기
JavaScript 객체로 유형-본문 매핑을 만들어두면, 선택된 유형에 맞는 본문을 꺼내 쓸 수 있다.
const bodyMap = {
"Code": `## 수정 파일\n\n## 변경 코드\n`,
"Bug/Error": `## 증상\n\n## 원인\n\n## 수정 내용\n`,
// ...
};
const body = bodyMap[selectedType];
태그도 동일한 방식으로 유형별 기본 태그를 매핑한다.
자동 처리
파일명은 Redmine-{번호}-{제목} 형식으로 tp.file.rename이 처리하고, tp.file.move로 연도별 폴더에 자동 이동한다. Redmine URL은 번호만 받아서 도메인 뒤에 붙이면 끝이다.
YAML 설계
tags: ["업무일지", "Redmine", ...]
redmine: 12345
redmine_url: "http://example.com/issues/12345"
requester: "[[홍길동]]"
status: 진행중
reported: false
created: 2026-04-28
week: 2026-W18
requester를 wikilink로 감싼 건, 해당 사람과 관련된 작업을 Obsidian backlink로 추적하기 위해서다. week 필드는 Dataview에서 주간 보고용 쿼리를 돌릴 때 유용하다. reported는 보고 완료 여부 추적용 — false인 항목만 필터링하면 보고 누락을 방지할 수 있다.
마무리
AI 프롬프트 방식이 결과물의 품질은 높지만, 모든 업무에 그 정도 정리가 필요한 건 아니다. 일상적인 업무는 템플릿으로 빠르게 채우고, 블로그로 정리할 만한 건만 프롬프트를 돌리는 식으로 역할을 나눴다. 기록의 핵심은 "꾸준히 남기는 것"이고, 그러려면 기록 자체의 마찰을 줄여야 한다.