AI 업무 활용

일일 업무 로그를 AI로 주간 보고서로 만들고 수치까지 대조하기

AI 채팅 도우미는 짧은 일일 업무 기록을 읽기 쉬운 주간 보고서로 정리할 수 있지만, 총 작업시간과 완료 건수 같은 수치는 별도로 확인해야 합니다. 작은 합성 업무 로그와 AI 작성 프롬프트, Python 대조 스크립트를 사용해 검증하는 방법을 설명합니다.

목차 보기

이런 분께짧은 일일 업무 로그를 기록하고 있으며, 작업시간과 완료 건수를 직접 검증하면서 AI로 주간 보고서를 작성하고 싶은 사람을 위한 글입니다.

준비사항
  • Python 3.12
  • 일일 업무 로그가 들어 있는 일반 CSV 파일

01AI가 작성한 주간 보고서의 수치를 왜 다시 대조해야 할까?

AI는 짧고 단편적인 업무 기록을 읽기 쉬운 문장으로 재구성하는 데 유용하지만, 계산 결과의 기준 자료로 사용해서는 안 됩니다. 주간 보고서의 문장은 자연스러워도 총합이 바뀌거나, 같은 작업을 두 번 세거나, 예정된 작업을 완료된 것으로 표현할 수 있습니다. 더 안전한 방법은 문장 작성과 수치 대조를 분리하는 것입니다.

  • 업무 로그를 사실 확인의 기준 자료로 사용합니다.
  • AI에는 로그에 있는 내용만 요약하도록 요청합니다.
  • 작업시간과 건수는 구조화된 데이터에서 별도로 계산합니다.
  • AI 보고서의 수치와 독립적으로 계산한 결과를 비교합니다.
  • 보고서를 보내거나 게시하기 전에 차이가 있으면 수정합니다.

02작은 합성 업무 로그로 시작하기

다음 업무 로그는 합성 데이터입니다. 각 행에는 하나의 작업, 해당 작업에 사용한 시간, 그리고 그 주 안에 완료되었는지가 기록되어 있습니다. 이런 항목을 구조화해 두면 나중에 수치를 대조하기가 훨씬 쉽습니다.

datetaskhoursstatus
2026-09-14Clean customer CSV2.0completed
2026-09-14Draft import script1.5completed
2026-09-15Test import script2.5completed
2026-09-16Investigate duplicate IDs1.0completed
2026-09-17Update validation rules2.0completed
2026-09-18Prepare user notes1.5in progress

손으로 계산하면 작업시간은 2.0 + 1.5 + 2.5 + 1.0 + 2.0 + 1.5 = 10.5시간입니다. 6개 작업 중 5개가 completed 상태이므로 완료 작업 수는 5개입니다. 마지막 작업은 아직 in progress 상태이므로 완료 작업으로 세면 안 됩니다.

03기억이 아니라 로그만 바탕으로 보고서를 작성하게 하기

업무 로그를 AI 채팅 도우미에 붙여 넣고, 제공된 데이터만 다시 정리하도록 명확히 제한합니다. 또한 나중에 검증할 수 있도록 AI가 계산한 총 작업시간과 완료 건수도 함께 쓰게 합니다.

AI에게 요청할 내용: 아래 업무 로그만 사용해서 간결한 주간 보고서를 작성해줘. 보고서는 완료한 업무, 진행 중인 업무, 주간 합계의 세 부분으로 구성해줘. 기록에 없는 결과나 작업은 만들지 마. 총 기록시간과 완료한 작업 수를 명시하고, 원래 작업의 의미는 바꾸지 마.

일반적인 AI 답변은 다음과 비슷할 수 있습니다. 이번 주에는 고객 데이터를 정리하고, 가져오기 스크립트를 작성하고 테스트했으며, 중복 ID를 조사하고 검증 규칙을 업데이트했습니다. 사용자 안내문 작성은 아직 진행 중입니다. 총 기록시간은 10.5시간이며 완료된 작업은 5개입니다.

04대조용 구조화 데이터를 따로 유지하기

같은 합성 예제를 date, task, hours, status 열을 가진 work_log.csv로 저장합니다. 대조 스크립트는 AI가 작성한 문장에서 숫자를 다시 추출하지 않고 이 원본 파일을 직접 읽어야 합니다.

항목로그에서 계산한 예상값
행 수6
총 작업시간10.5
완료 작업 수5
진행 중 작업 수1

이 구분이 중요합니다. CSV는 근거 데이터이고, 주간 보고서는 그 근거를 읽기 쉽게 표현한 결과물입니다.

05Python으로 작업시간과 건수 다시 계산하기

다음 Python 3.12 스크립트는 work_log.csv를 읽고, 필수 열을 확인하고, 총 작업시간과 상태별 건수를 계산한 뒤 outputs/weekly_reconciliation.txt에 대조 결과를 저장합니다. 기존 outputs 디렉터리는 덮어쓰지 않습니다.

python
from pathlib import Path
import csv

input_path = Path("work_log.csv")
output_dir = Path("outputs")

if output_dir.exists():
    raise SystemExit("outputs already exists; remove or rename it before running again")

if not input_path.exists():
    raise SystemExit("work_log.csv was not found")

required_fields = {"date", "task", "hours", "status"}
rows = []

with input_path.open("r", encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)

    if reader.fieldnames is None:
        raise SystemExit("CSV has no header")

    missing = required_fields - set(reader.fieldnames)
    if missing:
        raise SystemExit(f"Missing columns: {sorted(missing)}")

    for line_number, row in enumerate(reader, start=2):
        try:
            hours = float(row["hours"])
        except ValueError:
            raise SystemExit(f"Invalid hours value on line {line_number}")

        if hours < 0:
            raise SystemExit(f"Negative hours on line {line_number}")

        status = row["status"].strip().lower()
        if status not in {"completed", "in progress"}:
            raise SystemExit(f"Unexpected status on line {line_number}: {status}")

        rows.append({
            "date": row["date"].strip(),
            "task": row["task"].strip(),
            "hours": hours,
            "status": status,
        })

total_hours = sum(row["hours"] for row in rows)
completed_count = sum(row["status"] == "completed" for row in rows)
in_progress_count = sum(row["status"] == "in progress" for row in rows)

output_dir.mkdir()
report_path = output_dir / "weekly_reconciliation.txt"

report = (
    f"Rows: {len(rows)}\n"
    f"Total hours: {total_hours:.1f}\n"
    f"Completed activities: {completed_count}\n"
    f"In-progress activities: {in_progress_count}\n"
)

report_path.write_text(report, encoding="utf-8")

print(report, end="")
print(f"Saved: {report_path}")

06AI 보고서와 계산 결과 비교하기

이 예제에서 독립적으로 확인한 값은 총 작업시간 10.5시간과 완료 작업 5개입니다. AI 초안에 포함된 모든 수치 표현을 이 값과 비교합니다.

확인 항목로그 결과AI 초안판정
총 작업시간10.510.5일치
완료 작업 수55일치
진행 중 작업 수1사용자 안내문 작성은 진행 중내용 일치
  1. AI 보고서에 있는 모든 숫자를 대조 결과와 비교합니다.
  2. 완료 작업과 진행 중 작업이 섞이지 않았는지 확인합니다.
  3. 작업 설명을 원본 로그와 비교해 AI가 결과를 새로 만들어내지 않았는지 확인합니다.
  4. AI가 계산한 합계와 로그 계산값이 다르면 구조화된 로그의 계산값을 기준으로 보고서 문장을 수정합니다.

07자주 하는 실수와 한계

  • 원본 로그가 아니라 AI 보고서 안의 숫자를 다시 더해 총합을 확인하는 것.
  • 일부 행이 아직 진행 중인데도 모든 행을 완료 작업으로 세는 것.
  • 하나의 프로젝트에 대한 여러 로그 행을 하나의 작업으로 볼지 여러 작업으로 볼지 기준을 정하지 않는 것.
  • 기록에 명시되지 않은 성과를 AI가 추론해서 넣도록 두는 것.
  • 로그의 상태 표현을 바꾸면서 스크립트가 허용하는 상태값은 수정하지 않는 것.
  • 총합을 계산하기 전에 누락 행, 잘못된 시간 값, 중복 기록을 확인하지 않는 것.

이 예제에서는 CSV 한 행을 하나의 완료 가능한 작업으로 계산합니다. 실제 조직에서는 티켓, 산출물, 프로젝트, 마일스톤을 기준으로 셀 수 있으므로 대조 전에 무엇을 한 건으로 계산할지 규칙을 정해야 합니다. 또한 이 스크립트는 단순한 시간 합계와 상태만 확인하므로, 업무 로그 자체가 정확한지 또는 업무 품질이 충분했는지는 판단할 수 없습니다.

실행·검증 기록

2026-09-21 · hand-checked example · Python 3.12

  • 합성 예제 6개 행의 작업시간이 2.0, 1.5, 2.5, 1.0, 2.0, 1.5인지 손으로 확인했습니다.
  • 해당 값을 손으로 더해 총 10.5시간인지 확인했습니다.
  • 5개 행이 completed이고 1개 행이 in progress인지 손으로 확인했습니다.
  • 비교 표에 동일한 총 10.5시간과 완료 작업 5개 결과가 사용되었는지 확인했습니다.
  • 스크립트가 work_log.csv를 읽고 필수 열과 상태를 검증한 뒤 outputs/weekly_reconciliation.txt에만 결과를 쓰도록 구성되어 있는지 확인했습니다.
  • 스크립트가 기존 outputs 디렉터리를 덮어쓰지 않고 중단하도록 구성되어 있는지 확인했습니다.
검증 범위의 한계
  • 코드는 제가 직접 실행하지 않았습니다.
  • 예제는 합성 데이터이며 실제 직원, 조직 또는 보고 시스템을 나타내지 않습니다.
  • 스크립트는 CSV의 각 행이 하나의 계산 가능한 작업이라고 가정합니다.
  • 스크립트는 기록된 작업시간과 상태를 대조할 수 있지만 원본 로그가 사실인지, 누락 없이 작성되었는지, 올바르게 분류되었는지는 검증할 수 없습니다.

사이트 전체의 작성·검증 원칙

참고 출처

설명과 예제는 직접 작성했습니다. 관련 동작과 개념은 아래 공식 자료에서 확인할 수 있습니다.