oauth-backend/lib/report.py
tv0924@icloud.com a5186a7e44 [Add] csrf 포팅
2025-06-08 01:13:07 +09:00

28 lines
1,009 B
Python

import csv
import os
from typing import List, Dict, Any
def save_report(
report_data: List[Dict[str, Any]],
file_path: str = 'data/report.csv'
) -> None:
"""
report_data 안의 각 레포트를 한 줄씩 CSV에 추가로 저장합니다.
파일이 없으면 헤더를 먼저 쓰고, 있으면 레코드만 이어서 씁니다.
"""
fieldnames = ['target', 'status', 'title', 'description', 'uri']
file_exists = os.path.exists(file_path)
with open(file_path, mode='a', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
# 파일이 없던 새로 만들 때만 헤더 작성
if not file_exists:
writer.writeheader()
for row in report_data:
# None 방지 & 줄바꿈 이스케이프
escaped = {
k: str(v).replace('\n', '\\n') if v is not None else ''
for k, v in row.items()
}
writer.writerow(escaped)