업무용 스크립트 요청문에 입력·출력·오류 원칙 담기
“자동화해 줘”를 실행 가능한 작업 설명으로 바꿉니다. 민감정보 없는 합성 샘플과 손으로 확인한 기대 결과를 붙여, 팀별 작업 기록 집계 스크립트를 요청하는 문장을 완성합니다.
AI 채팅 도우미는 짧은 일일 업무 기록을 읽기 쉬운 주간 보고서로 정리할 수 있지만, 총 작업시간과 완료 건수 같은 수치는 별도로 확인해야 합니다. 작은 합성 업무 로그와 AI 작성 프롬프트, Python 대조 스크립트를 사용해 검증하는 방법을 설명합니다.
이런 분께짧은 일일 업무 로그를 기록하고 있으며, 작업시간과 완료 건수를 직접 검증하면서 AI로 주간 보고서를 작성하고 싶은 사람을 위한 글입니다.
AI는 짧고 단편적인 업무 기록을 읽기 쉬운 문장으로 재구성하는 데 유용하지만, 계산 결과의 기준 자료로 사용해서는 안 됩니다. 주간 보고서의 문장은 자연스러워도 총합이 바뀌거나, 같은 작업을 두 번 세거나, 예정된 작업을 완료된 것으로 표현할 수 있습니다. 더 안전한 방법은 문장 작성과 수치 대조를 분리하는 것입니다.
다음 업무 로그는 합성 데이터입니다. 각 행에는 하나의 작업, 해당 작업에 사용한 시간, 그리고 그 주 안에 완료되었는지가 기록되어 있습니다. 이런 항목을 구조화해 두면 나중에 수치를 대조하기가 훨씬 쉽습니다.
| date | task | hours | status |
|---|---|---|---|
| 2026-09-14 | Clean customer CSV | 2.0 | completed |
| 2026-09-14 | Draft import script | 1.5 | completed |
| 2026-09-15 | Test import script | 2.5 | completed |
| 2026-09-16 | Investigate duplicate IDs | 1.0 | completed |
| 2026-09-17 | Update validation rules | 2.0 | completed |
| 2026-09-18 | Prepare user notes | 1.5 | in progress |
손으로 계산하면 작업시간은 2.0 + 1.5 + 2.5 + 1.0 + 2.0 + 1.5 = 10.5시간입니다. 6개 작업 중 5개가 completed 상태이므로 완료 작업 수는 5개입니다. 마지막 작업은 아직 in progress 상태이므로 완료 작업으로 세면 안 됩니다.
업무 로그를 AI 채팅 도우미에 붙여 넣고, 제공된 데이터만 다시 정리하도록 명확히 제한합니다. 또한 나중에 검증할 수 있도록 AI가 계산한 총 작업시간과 완료 건수도 함께 쓰게 합니다.
AI에게 요청할 내용: 아래 업무 로그만 사용해서 간결한 주간 보고서를 작성해줘. 보고서는 완료한 업무, 진행 중인 업무, 주간 합계의 세 부분으로 구성해줘. 기록에 없는 결과나 작업은 만들지 마. 총 기록시간과 완료한 작업 수를 명시하고, 원래 작업의 의미는 바꾸지 마.
일반적인 AI 답변은 다음과 비슷할 수 있습니다. 이번 주에는 고객 데이터를 정리하고, 가져오기 스크립트를 작성하고 테스트했으며, 중복 ID를 조사하고 검증 규칙을 업데이트했습니다. 사용자 안내문 작성은 아직 진행 중입니다. 총 기록시간은 10.5시간이며 완료된 작업은 5개입니다.
같은 합성 예제를 date, task, hours, status 열을 가진 work_log.csv로 저장합니다. 대조 스크립트는 AI가 작성한 문장에서 숫자를 다시 추출하지 않고 이 원본 파일을 직접 읽어야 합니다.
| 항목 | 로그에서 계산한 예상값 |
|---|---|
| 행 수 | 6 |
| 총 작업시간 | 10.5 |
| 완료 작업 수 | 5 |
| 진행 중 작업 수 | 1 |
이 구분이 중요합니다. CSV는 근거 데이터이고, 주간 보고서는 그 근거를 읽기 쉽게 표현한 결과물입니다.
다음 Python 3.12 스크립트는 work_log.csv를 읽고, 필수 열을 확인하고, 총 작업시간과 상태별 건수를 계산한 뒤 outputs/weekly_reconciliation.txt에 대조 결과를 저장합니다. 기존 outputs 디렉터리는 덮어쓰지 않습니다.
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}")이 예제에서 독립적으로 확인한 값은 총 작업시간 10.5시간과 완료 작업 5개입니다. AI 초안에 포함된 모든 수치 표현을 이 값과 비교합니다.
| 확인 항목 | 로그 결과 | AI 초안 | 판정 |
|---|---|---|---|
| 총 작업시간 | 10.5 | 10.5 | 일치 |
| 완료 작업 수 | 5 | 5 | 일치 |
| 진행 중 작업 수 | 1 | 사용자 안내문 작성은 진행 중 | 내용 일치 |
이 예제에서는 CSV 한 행을 하나의 완료 가능한 작업으로 계산합니다. 실제 조직에서는 티켓, 산출물, 프로젝트, 마일스톤을 기준으로 셀 수 있으므로 대조 전에 무엇을 한 건으로 계산할지 규칙을 정해야 합니다. 또한 이 스크립트는 단순한 시간 합계와 상태만 확인하므로, 업무 로그 자체가 정확한지 또는 업무 품질이 충분했는지는 판단할 수 없습니다.
2026-09-21 · hand-checked example · Python 3.12
설명과 예제는 직접 작성했습니다. 관련 동작과 개념은 아래 공식 자료에서 확인할 수 있습니다.