from docx import Document from docx.shared import Pt, Inches, Cm, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT from docx.oxml.ns import qn, nsdecls from docx.oxml import parse_xml import os doc = Document() style = doc.styles['Normal'] font = style.font font.name = '맑은 고딕' font.size = Pt(10) style.element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕') sections = doc.sections for section in sections: section.top_margin = Cm(2) section.bottom_margin = Cm(2) section.left_margin = Cm(2) section.right_margin = Cm(2) # ── Title ── title = doc.add_heading('AX 과제 선정 기준 체크리스트 평가 보고서', level=0) title.alignment = WD_ALIGN_PARAGRAPH.CENTER p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.RIGHT run = p.add_run('평가일: 2026년 2월 23일') run.font.size = Pt(9) run.font.color.rgb = RGBColor(0x66, 0x66, 0x66) doc.add_paragraph() def set_cell_shading(cell, color): shading = parse_xml(f'') cell._tc.get_or_add_tcPr().append(shading) def add_eval_section(doc, num, title_text, dept, applicant, empno, summary, evaluations): """evaluations: list of (criteria_title, status_icon, detail_text)""" heading = doc.add_heading(f'과제 {num}. {title_text}', level=1) info_table = doc.add_table(rows=1, cols=4) info_table.alignment = WD_TABLE_ALIGNMENT.LEFT info_table.style = 'Light Grid Accent 1' headers = ['소속', '신청자', '사번', '참여 가능 시간'] values = [dept, applicant, empno, summary] for i, (h, v) in enumerate(zip(headers, values)): cell = info_table.rows[0].cells[i] cell.text = '' p = cell.paragraphs[0] run_h = p.add_run(f'{h}: ') run_h.bold = True run_h.font.size = Pt(9) run_v = p.add_run(v) run_v.font.size = Pt(9) doc.add_paragraph() eval_table = doc.add_table(rows=len(evaluations) + 1, cols=3) eval_table.style = 'Light Grid Accent 1' eval_table.alignment = WD_TABLE_ALIGNMENT.LEFT hdr_cells = eval_table.rows[0].cells hdr_texts = ['선정 기준', '판정', '평가 내용'] col_widths = [Cm(5), Cm(2), Cm(10)] for i, (txt, w) in enumerate(zip(hdr_texts, col_widths)): hdr_cells[i].text = '' hdr_cells[i].width = w p = hdr_cells[i].paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(txt) run.bold = True run.font.size = Pt(9) set_cell_shading(hdr_cells[i], '2E75B6') run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) for row_idx, (criteria, status, detail) in enumerate(evaluations, 1): cells = eval_table.rows[row_idx].cells cells[0].width = col_widths[0] cells[1].width = col_widths[1] cells[2].width = col_widths[2] p0 = cells[0].paragraphs[0] r0 = p0.add_run(criteria) r0.font.size = Pt(9) r0.bold = True p1 = cells[1].paragraphs[0] p1.alignment = WD_ALIGN_PARAGRAPH.CENTER r1 = p1.add_run(status) r1.font.size = Pt(10) r1.bold = True if '✓' in status: set_cell_shading(cells[1], 'E2EFDA') elif '△' in status: set_cell_shading(cells[1], 'FFF2CC') elif '✗' in status: set_cell_shading(cells[1], 'FCE4EC') p2 = cells[2].paragraphs[0] r2 = p2.add_run(detail) r2.font.size = Pt(9) doc.add_paragraph() # ───────────────────────────────────────────── # 과제 1: 박미경 # ───────────────────────────────────────────── add_eval_section( doc, 1, 'ETC마케팅본부 목표 달성 DashBoard', '대웅제약_ETC마케팅본부_마케팅기획팀', '박미경', '2190270', '하루 4시간 이상 (적극 참여)', [ ('① 업무 규칙·요구사항 명확성', '✓ 명확', '사업기 목표달성, MBO시스템, 성공모델 확산/파생사례, 검증4단계 등 4가지 항목의 데이터를 주 1회 업데이트하고 ' '사업팀/품목/PM별 필터링하여 대시보드로 공유하는 명확한 프로세스가 존재함.'), ('② 현업 참여 의지', '✓ 적극', '하루 4시간 이상 적극 참여 가능으로 선택. 선정 기준(1주일 매일 6시간)에는 다소 부족하나, 적극적 의지 확인됨.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV 형태로 데이터 보유. 과제 선발 후 샘플 데이터 즉시 제공 가능. ' '다만 SF CRM 데이터 자동 연계 시 SF CRM팀과의 협업 필요.'), ('④ 예상 AI Tool·인프라', '—', '☑ BI 대시보드 (시각화 대시보드 구현)\n' '☑ LLM (결산 보고서 자동 작성)\n' '☑ 노코드 워크플로우 n8n (데이터 자동 업데이트)\n' '☐ SF CRM 연동 시 사내 서버/클라우드 필요 가능'), ('⑤ 목표 달성 기준', '✓ 명확', '- 주 3~5시간 수기 업데이트·검수 시간 → 자동화로 대폭 단축\n' '- 대시보드 로딩시간 3~5초 → 개선\n' '- AI 기반 결산 자동 작성으로 보고 편의성 증대'), ('⑥ 예상 효과', '—', '[정량적] 주 3~5시간 수작업 절감, 데이터 검수 시간 단축\n' '[정성적] 데이터 정확성 향상, 사업부장/사업팀장/PM 보고 편의성 대폭 개선, 의사결정 속도 향상'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 외부 시스템 연동 제한: SF CRM 데이터 자동 연계 시 SF CRM팀과의 협업 및 권한 조율 필요\n' '☐ 방대한 누적 데이터 용량으로 인한 성능 이슈 가능'), ] ) # ───────────────────────────────────────────── # 과제 2: 김희영 # ───────────────────────────────────────────── add_eval_section( doc, 2, 'MR 거래처 채권현황 실시간 조회 웹앱', '한올_마케팅기획본부_영업관리팀', '김희영', '200056', '본부내 자체적으로 진행 (AX특공대 불필요)', [ ('① 업무 규칙·요구사항 명확성', '✓ 명확', 'SAP 데이터 기반 채권현황(회전일 150일 이상) 조회 → 웹앱으로 MR에게 제공하는 명확한 요구사항.'), ('② 현업 참여 의지', '✗ 불확실', '"본부내 자체적으로 진행(AX특공대 불필요)"로 선택. ' 'AX팀과의 적극적 소통·검증 참여 의지가 불확실함. 선정 기준(1주일 매일 6시간) 충족 어려움.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', '웹앱 형태 요청. 과제 선발 후 샘플 데이터 즉시 제공 가능. ' '다만 SAP 시스템 접근 및 데이터 연동이 핵심 전제조건임.'), ('④ 예상 AI Tool·인프라', '—', '☑ 웹앱 개발 (모바일 대응)\n' '☑ 상용 API / 사내 서버 필요 (SAP 데이터 연동)\n' '☐ AI 요소보다 시스템 개발·연동 성격이 강함'), ('⑤ 목표 달성 기준', '✓ 명확', '- 건당 10분 유관부서 문의 → 모바일 즉시 조회로 전환\n' '- 매일 평균 5건 × 10분 = 50분/일, 주 250분 절감\n' '- MR 및 내근직 본질업무 집중 환경 구축'), ('⑥ 예상 효과', '—', '[정량적] 주 250분(약 4.2시간) 업무시간 절감, 유관부서 문의 건수 제로화\n' '[정성적] MR 영업현장 편의성 대폭 향상, 내근/외근 본질업무 집중도 개선'), ('⑦ 리스크·제약사항', '✗ 높음', '☑ 외부 시스템 연동 제한: SAP 시스템 연동이 필수이나, 영업부 SAP 사용 불가 환경\n' '☑ AX 과제보다 IT 시스템 개발 과제에 가까움 (AI 활용 요소 미약)\n' '☐ 참여 의지 불확실로 과제 진행 리스크'), ] ) # ───────────────────────────────────────────── # 과제 3: 김지숙 # ───────────────────────────────────────────── add_eval_section( doc, 3, 'CPS 지출보고 증빙 검토·승인 자동화', '대웅제약_영업기획실_영업지원팀', '김지숙', '2190153', '하루 4시간 이상 (적극 참여)', [ ('① 업무 규칙·요구사항 명확성', '✓ 명확', 'CPS 시스템 내 상신문서 조회 → JPG 증빙파일 다운로드 → 증빙 적정성·CP 규정 준수 확인 → 승인/반려의 ' '명확한 검토 프로세스. 오류 판단 기준(촬영일자, 참석인원 대비 수량, 간이영수증 등)도 구체적.'), ('② 현업 참여 의지', '✓ 적극', '하루 4시간 이상 적극 참여 가능. 매일 7시간 해당 업무에 투입 중이므로 높은 참여 동기 확인됨.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV 및 이미지/스캔 파일 형태. 과제 선발 후 샘플 데이터 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '—', '☑ OCR (증빙 이미지 인식·판독)\n' '☑ LLM (이상 문서 자동 선별·규정 준수 검증)\n' '☑ 노코드 워크플로우 n8n (일괄 처리 자동화)\n' '☐ CPS 시스템 연동 필요 시 사내 서버 필요'), ('⑤ 목표 달성 기준', '✓ 명확', '- 일 1,500건 × 건당 3분 수작업 → 자동 인식·선별로 대폭 단축\n' '- 매일 7시간 → 이상 문서만 집중 검토로 업무시간 80%+ 절감 기대\n' '- 오류 탐지율 향상 (사람 육안 → AI 자동 탐지)'), ('⑥ 예상 효과', '—', '[정량적] 일 7시간 → 1~2시간으로 단축 (약 70~85% 절감), 월 30,000건 처리 속도 대폭 향상\n' '[정성적] 오류 탐지 정확도 향상, 승인 지연 리스크 감소, 영업현장 지급 일정 안정화'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 개인정보 규제: 민감한 개인정보 포함 데이터 (주의 필요)\n' '☑ 외부 시스템 연동 제한: CPS 시스템과의 연동이 필요할 수 있음\n' '☐ 증빙 이미지 품질에 따른 OCR 정확도 변동 가능'), ] ) # ───────────────────────────────────────────── # 과제 4: 박지현 # ───────────────────────────────────────────── add_eval_section( doc, 4, 'ETC 로컬 스타 산출 자동화', '대웅제약_영업기획실_영업지원팀', '박지현', '2230551', '하루 2~3시간 (다른 업무 병행, 제한적 참여)', [ ('① 업무 규칙·요구사항 명확성', '✓ 매우 명확', '4단계 프로세스(실적 데이터 기초 작업 → 스타 파일 반영·검증 → 예외·소급 금액 반영 → 대상자 확정·리스트업)가 ' '매우 구체적. VLOOKUP/SUMIFS 등 엑셀 함수 기반 로직이 명확하게 정의되어 있음.'), ('② 현업 참여 의지', '△ 제한적', '"하루 2~3시간, 다른 업무 병행, 제한적 참여" 선택. ' '선정 기준(1주일 매일 6시간)에 크게 미달. 과제 진행 시 소통 시간 확보 협의 필요.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV 형태. 과제 선발 후 샘플 데이터 즉시 제공 가능. ' '다만 인사팀(영업부 담당자별 배치일자)과의 협업 필요.'), ('④ 예상 AI Tool·인프라', '—', '☑ 노코드 워크플로우 n8n (엑셀 자동 가공·매핑)\n' '☐ AI 요소보다 RPA/자동화 성격이 강함\n' '☐ 복잡한 엑셀 로직의 프로그래밍 전환 필요'), ('⑤ 목표 달성 기준', '✓ 명확', '- 1일 8시간 수작업 → 원클릭 자동화로 획기적 단축\n' '- 직전 3개월 파일 반복 작업 제거\n' '- 10개 엑셀 파일 연동 자동화'), ('⑥ 예상 효과', '—', '[정량적] 월 8시간+ 수작업 시간 절감, 파일 간 반복 작업 제거\n' '[정성적] 수기 작업 오류 감소, 담당자 변경 시 업무 연속성 확보'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 타부서 협업: 인사팀 데이터(영업부 담당자별 배치일자) 확인 필요\n' '☐ 참여 시간 제한적(2~3시간)으로 과제 일정 지연 리스크\n' '☐ 복잡한 엑셀 로직 자동화 시 예외 케이스 처리 필요'), ] ) # ───────────────────────────────────────────── # 과제 5: 김진우(정신영) - Emma 메일링 # ───────────────────────────────────────────── add_eval_section( doc, 5, 'Emma 메일링 업그레이드 (해외 매체 기사 솔팅·발송)', '엠서클_하이닥사업부_하이닥팀', '김진우(정신영)', '01534', '진행 상황에 따라 팀장님과 논의 후 시간 조정 예정', [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '해외 매체 약 20여개 기사 솔팅 후 이메일 발송이라는 큰 틀은 있으나, ' '"선정 기준에 따른 기사 선별" 기준이 구체적이지 않음. 기사 선별 기준, UI 개편 범위 등 추가 정의 필요.'), ('② 현업 참여 의지', '△ 불확실', '"진행 상황에 따라 팀장님과 논의 후 시간 조정 예정"으로 기재. ' '선정 기준(1주일 매일 6시간) 충족 가능성 불확실. 사전에 AI팀 팀장님께 공유한 점은 긍정적.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV, 텍스트, 정형 DB 형태. 과제 선발 후 샘플 데이터 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '—', '☑ LLM (기사 선별·요약·번역)\n' '☑ 노코드 워크플로우 n8n (크롤링·메일링 자동화)\n' '☑ 상용 API (크롤링, 이메일 발송)\n' '☐ IT 추진팀(기존 emma 개발팀) 협업 필요'), ('⑤ 목표 달성 기준', '✓ 명확', '- 기자당 약 30분 → 메일링 발송 시 5분 이내 (약 83% 단축)\n' '- 기사 스크롤링 약 1,000여개 자동 처리'), ('⑥ 예상 효과', '—', '[정량적] 기자당 25분 절감, 기사 1,000여개 자동 스크리닝·솔팅\n' '[정성적] 기사 선별 품질 향상, UI 개편으로 사용자 경험 개선'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 외부 시스템 연동 제한: 기존 emma 시스템(IT 추진팀 개발)과의 연동·개편 필요\n' '☐ 기사 선별 기준의 명확한 정의 필요 (담당자 "감"에 의존 가능성)\n' '☐ 닥터빌 홈페이지 내 페이지 제작 옵션 → 범위 확대 리스크'), ] ) # ───────────────────────────────────────────── # 과제 6: 김진우(정신영) - 논문 기사 자동화 # ───────────────────────────────────────────── add_eval_section( doc, 6, '최신연구 논문 기사 제작 자동화', '엠서클_하이닥사업부_하이닥팀', '김진우(정신영)', '01534', '진행사항 확인 후 팀장님과 논의하여 시간 조정 예정', [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '과거 1차 제작 경험이 있으나, 담당자 퇴사로 홀딩 상태. ' '업그레이드 요건이 구체적이지 않으며, 기존 시스템 상태 파악이 선행되어야 함.'), ('② 현업 참여 의지', '△ 불확실', '"진행사항 확인 후 팀장님과 논의하여 시간 조정 예정"으로 기재. ' '선정 기준(1주일 매일 6시간) 충족 가능성 불확실.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', '텍스트, 정형 DB 형태. 과제 선발 후 샘플 데이터 즉시 제공 가능. 논문 크롤링 데이터 100여개 이상.'), ('④ 예상 AI Tool·인프라', '—', '☑ LLM (논문 요약·기사 작성)\n' '☑ 상용 API (논문 크롤링)\n' '☐ 하이닥 CMS 연동 필요'), ('⑤ 목표 달성 기준', '✓ 명확', '- 기사 1건당 4시간 → 1시간 이내 (75% 단축)\n' '- 최신연구 논문 최근 1주일 내 100여개 이상 자동 크롤링·선별'), ('⑥ 예상 효과', '—', '[정량적] 건당 3시간 절감, 기사 발행 속도 및 발행량 대폭 증가\n' '[정성적] 최신 연구 트렌드 신속 반영, 기사 품질 일관성 확보'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 기존 담당자 퇴사로 기술 인수인계 이슈 (기존 시스템 상태 파악 필요)\n' '☑ 외부 시스템 연동: 하이닥 CMS 내 기사 발행 연동 필요\n' '☐ AI 생성 기사의 의료 정보 정확성 검증 체계 필요'), ] ) # ───────────────────────────────────────────── # 과제 7: 이승민 # ───────────────────────────────────────────── add_eval_section( doc, 7, '처방마감자료 생성 및 메일 발송 자동화', '대웅제약_영업기획실_영업지원팀', '이승민', '2240556', '하루 2~3시간 (다른 업무 병행, 제한적 참여)', [ ('① 업무 규칙·요구사항 명확성', '✓ 매우 명확', '6단계 프로세스가 상세하게 기술됨: DCM 데이터 다운로드·검증 → 약가목록집 VLOOKUP(3차) → ' '회전관리장 조직 VLOOKUP → N/A 건 정리·메일 발송 → 재매핑 → 자동 메일 발송. ' 'BIO 중복제외리스트 생성도 명확.'), ('② 현업 참여 의지', '△ 제한적', '"하루 2~3시간, 다른 업무 병행, 제한적 참여" 선택. ' '선정 기준(1주일 매일 6시간)에 크게 미달. 월 1회 업무이므로 집중 참여 기간 조율 가능성은 있음.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV, 사내 시스템 데이터. 과제 선발 후 샘플 데이터 즉시 제공 가능. ' '처방마감자료 25만행+, 회전관리장 20만행 이하의 대용량 데이터.'), ('④ 예상 AI Tool·인프라', '—', '☑ 노코드 워크플로우 n8n (데이터 매핑·메일 발송 자동화)\n' '☐ AI 요소보다 RPA/자동화 성격이 강함 (VLOOKUP 자동화, 메일 발송)\n' '☐ 대용량 데이터 처리를 위한 서버 필요 가능'), ('⑤ 목표 달성 기준', '✓ 명확', '- 월 4시간+ 수작업 → 자동 매핑·메일 발송으로 대폭 단축\n' '- VLOOKUP 1시간+ → 자동 매핑으로 수분 이내 처리\n' '- 신규처 요청 메일 자동화, BIO 중복제외리스트 자동 생성'), ('⑥ 예상 효과', '—', '[정량적] 월 4시간+ 절감, VLOOKUP 매핑 시간 90%+ 단축, PC 자원 점유 해소\n' '[정성적] 처방마감자료 정확성 확보, 처방·DCM 마감 동시 진행 시 병목 해소, 재작업 최소화'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 개인정보 규제: MR 사번 등 개인정보 포함\n' '☑ 사내 시스템 연동: 영업 DCM, 약가목록집, 회전관리장 등 사내 시스템 데이터 접근 필요\n' '☐ 참여 시간 제한적(2~3시간)으로 과제 일정 지연 가능'), ] ) # ───────────────────────────────────────────── # 과제 8: 백송이 # ───────────────────────────────────────────── add_eval_section( doc, 8, '매출 대시보드 제작 (통합 데이터 시각화)', '디엔컴퍼니_재무기획실_전략기획팀', '백송이', '2500685', '하루 4시간 이상 (적극 참여)', [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '"아직 정형화된 틀이 없는 상태로 신규 구축을 계획"이라고 명시. ' '각 팀(전략기획팀, RPM, ME)의 데이터 취합·시각화라는 방향은 있으나, ' '지표 정의·대시보드 구조 등 구체적 요구사항 정의가 선행되어야 함.'), ('② 현업 참여 의지', '✓ 적극', '하루 4시간 이상 적극 참여 가능. 주 12시간을 해당 업무에 투입 중이므로 높은 참여 동기 확인됨.'), ('③ 데이터 디지털화 여부', '✓ 즉시 가능', 'Excel/CSV 형태. 과제 선발 후 관리 파일 및 예상 결과 폼 공유 예정. ' '다만 조직별 포맷·기준이 상이하여 데이터 표준화 작업이 선행 필요.'), ('④ 예상 AI Tool·인프라', '—', '☑ BI 대시보드 (매출 데이터 시각화)\n' '☑ LLM (데이터 정합성 검증·지표 자동 산출)\n' '☑ 노코드 워크플로우 n8n (데이터 자동 취합·가공)'), ('⑤ 목표 달성 기준', '△ 구체화 필요', '- 주 12시간 수작업 취합·가공 → 자동화로 단축 (구체적 목표 수치 미기재)\n' '- 지표 정의 일관성 확보\n' '- 신규 구축이므로 단계적 목표 설정 필요'), ('⑥ 예상 효과', '—', '[정량적] 주 12시간 데이터 취합·가공 시간 절감, 보고 속도 단축\n' '[정성적] 지표 일관성 확보, 담당자 의존도 감소, 실행 전환 속도 향상, 통합 데이터 기반 의사결정 체계 구축'), ('⑦ 리스크·제약사항', '△ 일부', '☐ 다부서 데이터 통합 필요 (영업부, ME팀, 전략기획팀 등 조직별 포맷 상이)\n' '☐ 요구사항 미확정 상태에서 범위 확대 리스크 (scope creep)\n' '☐ 신규 구축이므로 기대 수준 조율 필요'), ] ) # ── 종합 요약 테이블 ── doc.add_page_break() doc.add_heading('종합 평가 요약', level=1) summary_table = doc.add_table(rows=9, cols=9) summary_table.style = 'Light Grid Accent 1' summary_table.alignment = WD_TABLE_ALIGNMENT.CENTER headers = ['과제', '① 규칙 명확성', '② 참여 의지', '③ 데이터 준비', '④ AI Tool', '⑤ 목표 기준', '⑥ 예상 효과', '⑦ 리스크'] for i, h in enumerate(headers): cell = summary_table.rows[0].cells[i] cell.text = '' p = cell.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(h) run.bold = True run.font.size = Pt(8) set_cell_shading(cell, '2E75B6') run.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) summary_data = [ ['1. 박미경\nDashBoard', '✓', '✓', '✓', 'BI/LLM/n8n', '✓', '높음', '△'], ['2. 김희영\n채권조회', '✓', '✗', '✓', '웹앱/API', '✓', '중간', '✗'], ['3. 김지숙\n증빙검토', '✓', '✓', '✓', 'OCR/LLM/n8n', '✓', '매우 높음', '△'], ['4. 박지현\n스타산출', '✓', '△', '✓', 'n8n/RPA', '✓', '높음', '△'], ['5. 김진우\n메일링', '△', '△', '✓', 'LLM/n8n/API', '✓', '중간', '△'], ['6. 김진우\n논문기사', '△', '△', '✓', 'LLM/API', '✓', '중간', '△'], ['7. 이승민\n처방마감', '✓', '△', '✓', 'n8n/RPA', '✓', '높음', '△'], ['8. 백송이\n매출대시보드', '△', '✓', '✓', 'BI/LLM/n8n', '△', '높음', '△'], ] for row_idx, row_data in enumerate(summary_data, 1): for col_idx, val in enumerate(row_data): cell = summary_table.rows[row_idx].cells[col_idx] cell.text = '' p = cell.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = p.add_run(val) run.font.size = Pt(8) if col_idx > 0: if val == '✓' or val == '매우 높음': set_cell_shading(cell, 'E2EFDA') elif val in ('△', '중간'): set_cell_shading(cell, 'FFF2CC') elif val == '✗': set_cell_shading(cell, 'FCE4EC') elif val == '높음': set_cell_shading(cell, 'E2EFDA') # ── 종합 의견 ── doc.add_paragraph() doc.add_heading('종합 의견', level=2) opinions = [ ('과제 3 (김지숙 - 증빙 검토 자동화)', '가장 높은 선정 적합도. 업무 규칙 명확, 적극적 참여 의지, OCR·LLM 등 AI 활용도 높음, ' '일 1,500건 대량 처리로 효과가 극대화됨. 개인정보 포함에 대한 보안 대책 수립 필요.'), ('과제 1 (박미경 - 목표 달성 DashBoard)', '높은 선정 적합도. 명확한 프로세스와 적극적 참여 의지. BI 대시보드 + LLM 결산 자동 작성 조합으로 AI 활용 가치 높음. ' 'SF CRM 연동 범위 사전 확정 필요.'), ('과제 4 (박지현 - 로컬 스타 산출)', '업무 로직이 매우 명확하여 자동화 적합. 다만 참여 시간(2~3시간) 제한적이며, AI보다 RPA 성격이 강함. ' '참여 시간 확대 협의 후 선정 권장.'), ('과제 7 (이승민 - 처방마감자료)', '업무 로직 매우 명확, 대용량 데이터 처리 자동화 효과 큼. 참여 시간 제한적(2~3시간)이나 월 1회 업무이므로 ' '집중 기간 조율 가능. 개인정보 보안 대책 수립 필요.'), ('과제 8 (백송이 - 매출 대시보드)', '적극적 참여 의지와 높은 효과 기대. 다만 요구사항이 아직 미확정 상태이므로 ' '요건 정의 워크숍 후 착수 권장. 신규 구축 특성상 범위 관리 중요.'), ('과제 5, 6 (김진우 - 메일링/논문기사)', '두 과제 모두 LLM 활용 가치는 있으나, 참여 의지가 불확실하고 요구사항 구체화 필요. ' '과제 6은 기존 시스템 상태 파악이 선행되어야 함. 참여 시간·요건 확정 후 재검토 권장.'), ('과제 2 (김희영 - 채권현황 조회)', '참여 의지 불확실(AX특공대 불필요 기재), AI 활용 요소 미약(IT 시스템 개발 성격), ' 'SAP 연동 제약 등으로 AX 과제 선정 부적합. IT 개발 과제로 별도 검토 권장.'), ] for title, opinion in opinions: p = doc.add_paragraph() run_t = p.add_run(f'■ {title}: ') run_t.bold = True run_t.font.size = Pt(10) run_o = p.add_run(opinion) run_o.font.size = Pt(10) base_dir = os.path.dirname(os.path.abspath(__file__)) output_path = os.path.join(base_dir, 'outputs', '20260223.doc') os.makedirs(os.path.dirname(output_path), exist_ok=True) doc.save(output_path) print(f'Report saved: {output_path}')