from docx import Document from docx.shared import Pt, Cm, RGBColor, Emu from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT, WD_ALIGN_VERTICAL from docx.enum.section import WD_ORIENT from docx.oxml.ns import qn, nsdecls from docx.oxml import parse_xml import os doc = Document() for section in doc.sections: section.orientation = WD_ORIENT.LANDSCAPE section.page_width = Cm(42.0) section.page_height = Cm(29.7) section.top_margin = Cm(1.5) section.bottom_margin = Cm(1.5) section.left_margin = Cm(2.0) section.right_margin = Cm(2.0) style = doc.styles['Normal'] font = style.font font.name = '맑은 고딕' font.size = Pt(9) style.element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕') style.paragraph_format.space_after = Pt(3) style.paragraph_format.space_before = Pt(1) NAVY = '1B3A5C' ACCENT = '2E75B6' LIGHT_ACCENT = 'D6E4F0' GREEN_BG = 'E2EFDA' YELLOW_BG = 'FFF2CC' RED_BG = 'FCE4EC' GRAY_BG = 'F2F2F2' WHITE = 'FFFFFF' def shade(cell, color): cell._tc.get_or_add_tcPr().append( parse_xml(f'')) def styled_run(para, text, size=9, bold=False, color=None, font_name=None): r = para.add_run(text) r.font.size = Pt(size) r.bold = bold if color: r.font.color.rgb = RGBColor.from_string(color) if font_name: r.font.name = font_name r.element.rPr.rFonts.set(qn('w:eastAsia'), font_name) return r def add_section_break(doc): from docx.oxml import OxmlElement p = doc.add_paragraph() run = p.add_run() br = OxmlElement('w:br') br.set(qn('w:type'), 'page') run._element.append(br) def make_header_cell(cell, text, sz=9): cell.text = '' shade(cell, ACCENT) p = cell.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER cell.vertical_alignment = WD_ALIGN_VERTICAL.CENTER r = p.add_run(text) r.bold = True r.font.size = Pt(sz) r.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF) # ============================================================ # COVER # ============================================================ for _ in range(4): doc.add_paragraph() p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER styled_run(p, 'AX 과제 신청 현황 및 선정 평가 보고', size=28, bold=True, color=NAVY) doc.add_paragraph() p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER styled_run(p, '2026년 2월 23일', size=14, color='666666') doc.add_paragraph() p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER styled_run(p, 'AX추진팀', size=14, color=ACCENT) for _ in range(6): doc.add_paragraph() p = doc.add_paragraph() p.alignment = WD_ALIGN_PARAGRAPH.CENTER styled_run(p, '본 보고서는 2026년 2월 19~23일 접수된 10건의 AX 과제 신청에 대해\n' '과제 선정 기준 체크리스트(7개 항목) 기반으로 평가한 결과를 정리한 것입니다.', size=11, color='888888') # ============================================================ # CHAPTER 1 — 신청 과제 요약 # ============================================================ add_section_break(doc) p = doc.add_paragraph() styled_run(p, '1', size=22, bold=True, color=ACCENT) styled_run(p, ' 신청 과제 요약', size=22, bold=True, color=NAVY) doc.add_paragraph() p = doc.add_paragraph() styled_run(p, '2026년 2월 19~23일 접수 기간 동안 총 ', size=10) styled_run(p, '5개 조직', size=10, bold=True, color=ACCENT) styled_run(p, '에서 ', size=10) styled_run(p, '10건', size=10, bold=True, color=ACCENT) styled_run(p, '의 AX 전환 과제가 신청되었습니다. ' '신청 과제는 대시보드 구축, 데이터 자동화, 증빙 검토, 기사 제작, 영업 인사이트 자동 생성 등 ' '다양한 영역에 걸쳐 있으며, 대부분 반복적 수작업 업무의 자동화·효율화를 목표로 하고 있습니다.', size=10) doc.add_paragraph() sum_tbl = doc.add_table(rows=11, cols=8) sum_tbl.style = 'Table Grid' sum_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER h = ['No.', '과제명', '소속', '신청자', '접수일', '참여 가능 시간', '데이터 형태', '핵심 키워드'] for i, t in enumerate(h): make_header_cell(sum_tbl.rows[0].cells[i], t, 8) data = [ ['1', 'ETC마케팅본부\n목표 달성 DashBoard', '대웅제약\nETC마케팅본부\n마케팅기획팀', '박미경', '2.19', '하루 4시간 이상\n(적극 참여)', 'Excel / CSV', 'BI 대시보드\nLLM 결산 자동작성'], ['2', 'MR 거래처 채권현황\n실시간 조회 웹앱', '한올\n마케팅기획본부\n영업관리팀', '김희영', '2.19', '본부내 자체 진행\n(AX특공대 불필요)', '웹앱', 'SAP 연동\n모바일 웹앱'], ['3', 'CPS 지출보고\n증빙 검토·승인 자동화', '대웅제약\n영업기획실\n영업지원팀', '김지숙', '2.19', '하루 4시간 이상\n(적극 참여)', 'Excel/CSV\n이미지/스캔', 'OCR · LLM\n이상탐지 자동화'], ['4', 'ETC 로컬 스타\n산출 자동화', '대웅제약\n영업기획실\n영업지원팀', '박지현', '2.19', '하루 2~3시간\n(제한적 참여)', 'Excel / CSV', '엑셀 자동화\nVLOOKUP 대체'], ['5', 'Emma 메일링\n업그레이드', '엠서클\n하이닥사업부\n하이닥팀', '김진우\n(정신영)', '2.20', '팀장 논의 후\n시간 조정 예정', 'Excel/CSV\n텍스트/정형DB', 'LLM 기사선별\n크롤링·메일링'], ['6', '최신연구 논문\n기사 제작 자동화', '엠서클\n하이닥사업부\n하이닥팀', '김진우\n(정신영)', '2.20', '팀장 논의 후\n시간 조정 예정', '텍스트\n정형 DB', 'LLM 기사작성\n논문 크롤링'], ['7', '처방마감자료 생성\n및 메일 발송 자동화', '대웅제약\n영업기획실\n영업지원팀', '이승민', '2.20', '하루 2~3시간\n(제한적 참여)', 'Excel/CSV\n사내시스템', '대용량 매핑\n메일 자동발송'], ['8', '매출 대시보드 제작\n(통합 데이터 시각화)', '디엔컴퍼니\n재무기획실\n전략기획팀', '백송이', '2.20', '하루 4시간 이상\n(적극 참여)', 'Excel / CSV', 'BI 대시보드\n데이터 통합'], ['9', 'ETC병원본부 영업 데이터\n자동 취합·인사이트 리포트', '대웅\nETC병원본부', '금예빈', '2.23', '대리 신청 건', 'Excel/CSV\n텍스트', 'LLM 인사이트\n데이터 자동취합'], ['10', '정책·업계 시황 기반\n영업 실행 인사이트 자동 생성', '대웅\nETC병원본부', '금예빈', '2.23', '대리 신청 건', 'Excel/CSV\n텍스트', 'LLM 기사수집\n전략 인사이트'], ] for ri, row in enumerate(data, 1): for ci, val in enumerate(row): c = sum_tbl.rows[ri].cells[ci] c.text = '' p = c.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER if ci in (0, 3, 4) else WD_ALIGN_PARAGRAPH.LEFT c.vertical_alignment = WD_ALIGN_VERTICAL.CENTER r = p.add_run(val) r.font.size = Pt(8) if ci == 0: r.bold = True if ri % 2 == 0: shade(c, GRAY_BG) doc.add_paragraph() box_tbl = doc.add_table(rows=1, cols=4) box_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER labels = ['총 신청 과제', '신청 조직', '접수 기간', '데이터 즉시 가능'] values = ['10건', '5개 조직', '2.19 ~ 2.23', '10건 (100%)'] colors = [ACCENT, '27AE60', 'E67E22', '8E44AD'] for i in range(4): c = box_tbl.rows[0].cells[i] c.text = '' shade(c, colors[i]) p = c.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER styled_run(p, labels[i] + '\n', size=9, bold=True, color=WHITE) styled_run(p, values[i], size=16, bold=True, color=WHITE) # ============================================================ # CHAPTER 2 — 신청 과제 상세 (10 projects) # ============================================================ projects = [ { 'num': 1, 'title': 'ETC마케팅본부 목표 달성 DashBoard', 'dept': '대웅제약 ETC마케팅본부 마케팅기획팀', 'applicant': '박미경', 'empno': '2190270', 'date': '2026.02.19', 'avail': '하루 4시간 이상 (적극 참여)', 'time_spent': '주 3~5시간 (데이터 검수시간 포함)', 'collab': 'SF CRM팀 (데이터 자동화 연계 시)', 'data_type': 'Excel / CSV', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '1개 파일, 10개 이상 시트 연동', 'privacy': '미포함', 'asis': ( '마케팅 PM의 본질업무인 \'사업기 목표달성, MBO시스템, 성공모델 확산/파생사례, 검증4단계\' 4가지 항목을 ' '주 1회(주차별/월 마감 시) 데이터를 수기로 업데이트하고, ' '사업팀/품목/PM별 필터링이 가능한 엑셀 대시보드 형태로 공유하고 있음.' ), 'pain': ( '① 데이터 RAW 수기 업데이트·검수에 주 1회 2~3시간 소요, 수치 불일치 시 추가 검토 시간 발생\n' '② 사업부장/사업팀장/PM이 수기로 목표 달성 현황을 작성하여 보고 편의성 부족\n' '③ 수년간 누적 데이터로 용량 방대, 대시보드 로딩시간 3~5초 소요' ), 'tobe': ( '- 사업부/사업팀/품목/PM 선택 시 결산보고를 AI가 자동으로 작성\n' '- 집중품목 자동 선별, 핵심 성과 상단 자동 정리\n' '- 데이터 각 사이트별 자동 연동으로 수기 업데이트 자동화\n' '- 선택한 데이터 내 순위(사업팀/PM/품목) 자동 제공' ), 'result_form': '대시보드, 챗봇', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✓ 명확', '사업기 목표달성 등 4가지 항목의 데이터를 주 1회 업데이트하고 사업팀/품목/PM별 필터링하여 ' '대시보드로 공유하는 명확한 프로세스가 존재함.'), ('② 현업 참여 의지', '✓ 적극 참여', '하루 4시간 이상 적극 참여 가능. 선정 기준(매일 6시간)에 다소 부족하나 적극적 의지 확인됨.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV 형태 보유. 즉시 제공 가능. 다만 SF CRM 데이터 연계 시 타부서 협업 필요.'), ('④ 예상 AI Tool·인프라', '해당', '☑ BI 대시보드 ☑ LLM (결산 자동 작성) ☑ 노코드 워크플로우 n8n (데이터 자동 업데이트)'), ('⑤ 목표 달성 기준', '✓ 명확', '주 3~5시간 수기 작업 → 자동화 단축 / 대시보드 로딩 3~5초 → 개선 / AI 결산 자동 작성'), ('⑥ 예상 효과', '높음', '[정량] 주 3~5시간 수작업 절감, 데이터 검수 시간 단축\n' '[정성] 데이터 정확성 향상, 보고 편의성 대폭 개선, 의사결정 속도 향상'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 외부 시스템 연동: SF CRM팀 협업·권한 조율 필요\n' '☐ 누적 데이터 용량으로 인한 성능 이슈 가능'), ] }, { 'num': 2, 'title': 'MR 거래처 채권현황 실시간 조회 웹앱', 'dept': '한올 마케팅기획본부 영업관리팀', 'applicant': '김희영', 'empno': '200056', 'date': '2026.02.19', 'avail': '본부내 자체적으로 진행 (AX특공대 불필요)', 'time_spent': '건당 10분, 매일 평균 5건(50분), 주 250분', 'collab': '없음', 'data_type': '웹앱', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '건당 처리', 'privacy': '미포함', 'asis': 'MR의 거래처 채권현황(회전일 150일 이상)에 대한 실시간 문의가 발생하면, 유관부서에서 SAP 확인을 통해 실시간 응대하는 구조.', 'pain': 'MR이 영업현장에서 필요한 실시간 데이터를 유관부서를 통해야만 확인 가능\n(영업부 SAP 사용 불가, 현장 PC 사용 곤란)\n→ 내근/외근 모두 본질업무 집중 환경 부재, 업무효율성 저하', 'tobe': '개발된 웹앱을 통해 MR이 영업현장에서 직접 모바일로 간편하게 본인 거래처에 대한 채권 확인이 가능하도록 전환', 'result_form': '웹앱', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✓ 명확', 'SAP 데이터 기반 채권현황(회전일 150일 이상) 조회 → 웹앱으로 MR에게 제공하는 명확한 요구사항.'), ('② 현업 참여 의지', '✗ 불확실', '"본부내 자체 진행(AX특공대 불필요)" 선택. AX팀과의 적극적 소통·검증 참여 의지 불확실.'), ('③ 데이터 디지털화', '✓ 즉시 가능', '웹앱 형태 요청. 즉시 제공 가능. 단, SAP 시스템 접근·연동이 핵심 전제조건.'), ('④ 예상 AI Tool·인프라', '해당', '☑ 웹앱 개발 (모바일) ☑ 상용 API / 사내 서버 (SAP 연동)\n※ AI 요소보다 IT 시스템 개발·연동 성격이 강함'), ('⑤ 목표 달성 기준', '✓ 명확', '건당 10분 문의 → 모바일 즉시 조회 전환, 주 250분 절감'), ('⑥ 예상 효과', '중간', '[정량] 주 250분(약 4.2시간) 절감, 유관부서 문의 건수 제로화\n[정성] MR 현장 편의성 향상, 본질업무 집중도 개선'), ('⑦ 리스크·제약사항', '✗ 높음', '☑ 외부 시스템 연동: SAP 연동 필수이나 영업부 SAP 사용 불가 환경\n☑ AI 활용 요소 미약 → IT 개발 과제 성격\n☐ 참여 의지 불확실로 과제 진행 리스크'), ] }, { 'num': 3, 'title': 'CPS 지출보고 증빙 검토·승인 자동화', 'dept': '대웅제약 영업기획실 영업지원팀', 'applicant': '김지숙', 'empno': '2190153', 'date': '2026.02.19', 'avail': '하루 4시간 이상 (적극 참여)', 'time_spent': '매일 7시간, 주 35시간 (비주기적)', 'collab': '없음', 'data_type': 'Excel / CSV, 이미지 / 스캔 파일', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '일 평균 1,500건, 월 30,000건 이상 (건당 이미지 1~3개)', 'privacy': '포함 (주의 필요)', 'asis': '26년 2월 말부터 CPS 지출보고 시스템 내 영업부 법인카드(방문디테일) 사용내역 최종 검토·승인 역할 신규 수행 예정.\n영업부 상신 문서에 대해 증빙 적정성 및 CP 규정 준수 여부 확인 후 승인/반려 처리.\n(CPS 접속 → 결재요구함 → 상신문서 조회 → JPG 증빙파일 다운로드·확인 → 승인/반려)', 'pain': '① 수작업 기반 검수: 문서당 증빙 이미지(1~3개) 건별 다운로드 후 개별 확인, 미리보기·자동 판독 기능 부재\n② 업무 시간 과다: 단순 다운로드/확인에 검수 시간 대부분 소모, 승인 지연 시 영업 지급 일정 영향\n③ 오류 탐지 효율 저하: 촬영일자 불일치, 참석인원 대비 수량 과다/미달, 간이영수증 미확인 등', 'tobe': '- 수작업 중심 → 자동화 구조로 전환\n- 증빙 이미지 인식(OCR)으로 일괄 확인, 다운로드 작업 최소화\n- 이상 문서 자동 선별 → 검수 집중도 향상 및 승인 처리 속도 개선', 'result_form': '파일 형태: Excel, CSV, Word 등', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✓ 매우 명확', '증빙 적정성·CP 규정 준수 확인의 명확한 검토 프로세스. 오류 판단 기준(촬영일자, 참석인원 대비 수량, 간이영수증 등)도 구체적.'), ('② 현업 참여 의지', '✓ 적극 참여', '하루 4시간 이상 적극 참여 가능. 매일 7시간 해당 업무 투입 중으로 높은 참여 동기.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV 및 이미지/스캔 파일 형태. 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ OCR (증빙 이미지 인식·판독) ☑ LLM (이상 문서 자동 선별·규정 검증)\n☑ 노코드 워크플로우 n8n (일괄 처리 자동화)'), ('⑤ 목표 달성 기준', '✓ 명확', '일 1,500건 × 건당 3분 → 자동 인식·선별로 대폭 단축\n매일 7시간 → 이상 문서만 집중 검토로 80%+ 절감 기대'), ('⑥ 예상 효과', '매우 높음', '[정량] 일 7시간 → 1~2시간 (70~85% 절감), 월 30,000건 처리속도 대폭 향상\n[정성] 오류 탐지 정확도 향상, 승인 지연 리스크 감소, 지급 일정 안정화'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 개인정보 규제: 민감 개인정보 포함\n☑ 외부 시스템 연동: CPS 시스템 연동 필요 가능\n☐ 증빙 이미지 품질에 따른 OCR 정확도 변동'), ] }, { 'num': 4, 'title': 'ETC 로컬 스타 산출 자동화', 'dept': '대웅제약 영업기획실 영업지원팀', 'applicant': '박지현', 'empno': '2230551', 'date': '2026.02.19', 'avail': '하루 2~3시간 (다른 업무 병행, 제한적 참여)', 'time_spent': '1일 기준 8시간 소요', 'collab': '인사팀 (영업부 담당자별 배치일자 확인)', 'data_type': 'Excel / CSV', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '1파일 당 10,237여개 데이터 (로컬부 한정)', 'privacy': '영업부 담당자별 배치일자 확인 필요', 'asis': '매월 약 10개 엑셀 파일을 활용하여 ETC 로컬 스타를 산출하는 반복 작업 수행.\n4단계 프로세스: ①실적 데이터 기초 작업(필터링·제외) → ②스타 파일 반영·검증(VLOOKUP/SUMIFS) → ③예외·소급 금액 반영 → ④대상자 확정·최종 리스트업', 'pain': '당월 스타 산출 시 직전 3개월 \'최종실적\' 각 파일에 동일한 작업을 수행해야 하므로 불필요한 수작업 발생.\n1일 기준 8시간이 소요되는 반복 작업.', 'tobe': '원클릭 자동화를 통해 각 파일별 수작업 시간을 획기적으로 축소', 'result_form': '파일 형태: Excel, CSV, Word 등', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✓ 매우 명확', '4단계 프로세스가 매우 구체적. VLOOKUP/SUMIFS 등 엑셀 함수 기반 로직이 명확히 정의됨.'), ('② 현업 참여 의지', '△ 제한적', '하루 2~3시간, 제한적 참여. 선정 기준(매일 6시간)에 크게 미달. 참여 시간 확대 협의 필요.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV 형태. 즉시 제공 가능. 인사팀(배치일자) 협업 필요.'), ('④ 예상 AI Tool·인프라', '해당', '☑ 노코드 워크플로우 n8n (엑셀 자동 가공·매핑)\n※ AI보다 RPA/자동화 성격이 강함'), ('⑤ 목표 달성 기준', '✓ 명확', '1일 8시간 수작업 → 원클릭 자동화로 획기적 단축, 3개월 반복 작업 제거'), ('⑥ 예상 효과', '높음', '[정량] 월 8시간+ 수작업 절감, 파일 간 반복 작업 제거\n[정성] 수기 작업 오류 감소, 담당자 변경 시 업무 연속성 확보'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 타부서 협업: 인사팀 데이터 필요\n☐ 참여 시간 제한(2~3시간)으로 일정 지연 리스크'), ] }, { 'num': 5, 'title': 'Emma 메일링 업그레이드 (해외 매체 기사 솔팅·발송)', 'dept': '엠서클 하이닥사업부 하이닥팀', 'applicant': '김진우(정신영)', 'empno': '01534', 'date': '2026.02.20', 'avail': '진행 상황에 따라 팀장님과 논의 후 시간 조정 예정', 'time_spent': '각 기자당 약 30분 (메일링 발송 시 5분 이내 기대)', 'collab': 'IT 추진팀 (기존 emma 개발팀)', 'data_type': 'Excel/CSV, 텍스트, 정형 DB', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '기사 스크롤링 약 1,000여개 예상', 'privacy': '미포함', 'asis': 'Emma 메일링 시스템을 통해 해외 매체 약 20여개 기사를 솔팅 후 이메일 발송하는 업무.', 'pain': '① 주요 매체 추가 필요\n② 현재 단순 크롤링 방식 → 선정 기준에 따른 기사 선별·UI 개편·기사 요약 기능 부재', 'tobe': '선정 기준에 따른 기사 선별 후 발송 / UI 개편 / 기사 요약 기능 추가.\n닥터빌 홈페이지 내 페이지 제작도 고려 중.', 'result_form': '파일 형태: Excel/CSV/Word, 메일링/닥터빌 내 페이지', 'eval': [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '기사 솔팅·발송이라는 큰 틀은 있으나, "선정 기준에 따른 기사 선별" 기준이 구체적이지 않음.'), ('② 현업 참여 의지', '△ 불확실', '"팀장님과 논의 후 시간 조정 예정" 기재. 선정 기준(매일 6시간) 충족 가능성 불확실.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV, 텍스트, 정형 DB 형태. 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ LLM (기사 선별·요약) ☑ 노코드 워크플로우 n8n (크롤링·메일링)\n☑ 상용 API (크롤링, 이메일 발송)'), ('⑤ 목표 달성 기준', '✓ 명확', '기자당 30분 → 5분 이내 (약 83% 단축), 기사 1,000여개 자동 처리'), ('⑥ 예상 효과', '중간', '[정량] 기자당 25분 절감, 1,000여개 기사 자동 스크리닝\n[정성] 기사 선별 품질 향상, UI 개편으로 사용자 경험 개선'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 외부 시스템 연동: 기존 emma 시스템(IT 추진팀) 연동·개편 필요\n☐ 기사 선별 기준 명확화 필요, 범위 확대 리스크'), ] }, { 'num': 6, 'title': '최신연구 논문 기사 제작 자동화', 'dept': '엠서클 하이닥사업부 하이닥팀', 'applicant': '김진우(정신영)', 'empno': '01534', 'date': '2026.02.20', 'avail': '진행사항 확인 후 팀장님과 논의하여 시간 조정 예정', 'time_spent': '기사 1건당 약 4시간 → AI 툴 시 1시간 이내 예상', 'collab': '없음', 'data_type': '텍스트, 정형 DB', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '최신연구 논문 최근 1주일 내 100여개 이상 크롤링', 'privacy': '미포함', 'asis': '최신연구 논문을 기반으로 기사를 제작하는 업무.\n과거 1차 제작 후 사용하다가 업그레이드 추진 중 관련 AI 추진팀 담당자 퇴사로 홀딩 상태.', 'pain': '기사 한 건 당 약 4시간 소요.\n기존 시스템 담당자 퇴사로 업그레이드가 중단된 상태.', 'tobe': '최신연구 논문 기사 발행 자동화.\n하이닥 CMS 내 기사 발행 연동.', 'result_form': '대시보드, 하이닥 CMS 내 기사 발행', 'eval': [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '과거 1차 제작 경험이 있으나 담당자 퇴사로 홀딩. 업그레이드 요건이 구체적이지 않음.'), ('② 현업 참여 의지', '△ 불확실', '"팀장님과 논의하여 시간 조정 예정" 기재. 선정 기준(매일 6시간) 충족 가능성 불확실.'), ('③ 데이터 디지털화', '✓ 즉시 가능', '텍스트, 정형 DB 형태. 논문 크롤링 데이터 100여개 이상. 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ LLM (논문 요약·기사 작성) ☑ 상용 API (논문 크롤링)'), ('⑤ 목표 달성 기준', '✓ 명확', '기사 1건당 4시간 → 1시간 이내 (75% 단축), 1주일 내 100여개 논문 자동 크롤링·선별'), ('⑥ 예상 효과', '중간', '[정량] 건당 3시간 절감, 기사 발행 속도·발행량 증가\n[정성] 최신 연구 트렌드 신속 반영, 기사 품질 일관성 확보'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 기존 담당자 퇴사로 기술 인수인계 이슈\n☑ 하이닥 CMS 연동 필요\n☐ AI 생성 기사의 의료정보 정확성 검증 체계 필요'), ] }, { 'num': 7, 'title': '처방마감자료 생성 및 메일 발송 자동화', 'dept': '대웅제약 영업기획실 영업지원팀', 'applicant': '이승민', 'empno': '2240556', 'date': '2026.02.20', 'avail': '하루 2~3시간 (다른 업무 병행, 제한적 참여)', 'time_spent': '월 1회, 약 4시간 이상', 'collab': '없음', 'data_type': 'Excel / CSV, 사내 시스템', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '처방마감자료 25만행+, 회전관리장 20만행 이하', 'privacy': '개인정보 포함 (MR 사번)', 'asis': '[처방마감자료 생성] ①영업 DCM 데이터 다운로드·검증 → ②처방약호 기준 약가목록집 VLOOKUP(3단계) → ③KEY 기준 회전관리장 조직 VLOOKUP → ④N/A 건 정리·신규처 요청 메일 → ⑤재매핑 → ⑥자동 메일 발송\n[BIO 중복제외리스트] 처방마감자료 완성 후 특정 품목 파일 생성 → BIO 담당자 메일 발송', 'pain': '① 대용량 VLOOKUP 매핑에 최소 1시간+, PC 자원 점유로 다른 업무 병행 불가\n② 신규 거래처 반영 후 재매핑 포함 시 2시간+ 소요\n③ 처방마감·DCM 마감 동시 시 병목 발생, 양쪽 일정 지연 가능', 'tobe': '처방마감자료에 영업부 조직·기준품명·단가를 자동 매핑하고, 담당자들에게 자동 메일 발송', 'result_form': '파일 형태: Excel, CSV, Word 등', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✓ 매우 명확', '6단계 프로세스가 상세하게 기술됨. VLOOKUP 3단계, KEY 기준 매핑, 메일 발송까지 모두 명확.'), ('② 현업 참여 의지', '△ 제한적', '하루 2~3시간, 제한적 참여. 월 1회 업무이므로 집중 기간 조율 가능성은 있음.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV, 사내 시스템 데이터. 25만행+ 대용량. 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ 노코드 워크플로우 n8n (데이터 매핑·메일 발송)\n※ AI보다 RPA/자동화 성격이 강함, 대용량 처리 서버 필요 가능'), ('⑤ 목표 달성 기준', '✓ 명확', '월 4시간+ → 자동 매핑·메일 발송 단축, VLOOKUP 1시간+ → 수분 이내'), ('⑥ 예상 효과', '높음', '[정량] 월 4시간+ 절감, 매핑 시간 90%+ 단축, PC 자원 점유 해소\n[정성] 처방마감 정확성 확보, 마감 병목 해소, 재작업 최소화'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 개인정보 규제: MR 사번 포함\n☑ 사내 시스템 연동: DCM, 약가목록집, 회전관리장 접근 필요\n☐ 참여 시간 제한(2~3시간) 일정 지연 가능'), ] }, { 'num': 8, 'title': '매출 대시보드 제작 (통합 데이터 시각화)', 'dept': '디엔컴퍼니 재무기획실 전략기획팀', 'applicant': '백송이', 'empno': '2500685', 'date': '2026.02.20', 'avail': '하루 4시간 이상 (적극 참여)', 'time_spent': '주 약 12시간, 일 평균 2.5시간', 'collab': '영업부, ME팀 등 다부서', 'data_type': 'Excel / CSV', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '다부서 데이터 통합', 'privacy': '미포함', 'asis': '매출·마케팅 관련 자료를 영업부, ME팀, 전략기획팀에서 개별 관리 중.\n조직별 관리 목적·포맷이 상이하여 통합 대시보드 구조가 없는 상태.\n각 팀 자료 개별 수령 후 매월 재정렬·재가공하여 차트·테이블 생성.', 'pain': '① 데이터 취합·정합성 검증에 과도한 시간: 조직별 포맷·기준 상이, 매월 수작업 재가공\n② 지표 정의 일관성 부족: 네트워크 진입률, 신규처 기준, D2D 성장률 등 매월 재정의 필요\n③ 반복 업무 구조적 고착화: 동일 취합·정리·차트 작성 반복, 담당자 의존적', 'tobe': 'AI가 자동으로 취합·정합성 검증·지표 산출·시각화까지 수행하는 통합 매출 대시보드 체계 구축', 'result_form': '파일 형태: Excel/CSV/Word, 대시보드', 'eval': [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '"아직 정형화된 틀이 없는 상태, 신규 구축 계획". 방향성은 있으나 지표 정의·구조 등 구체화 필요.'), ('② 현업 참여 의지', '✓ 적극 참여', '하루 4시간 이상 적극 참여 가능. 주 12시간 업무 투입 중으로 높은 참여 동기.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV 형태. 제공 가능. 다만 조직별 포맷 상이로 데이터 표준화 선행 필요.'), ('④ 예상 AI Tool·인프라', '해당', '☑ BI 대시보드 (매출 시각화) ☑ LLM (정합성 검증·지표 산출)\n☑ 노코드 워크플로우 n8n (데이터 자동 취합·가공)'), ('⑤ 목표 달성 기준', '△ 구체화 필요', '주 12시간 → 자동화 단축 (구체적 목표 수치 미기재). 신규 구축으로 단계적 목표 설정 필요.'), ('⑥ 예상 효과', '높음', '[정량] 주 12시간 취합·가공 시간 절감, 보고 속도 단축\n[정성] 지표 일관성 확보, 담당자 의존도 감소, 통합 데이터 의사결정 체계'), ('⑦ 리스크·제약사항', '△ 일부', '☐ 다부서 데이터 통합 필요 (조직별 포맷 상이)\n☐ 요구사항 미확정 → 범위 확대(scope creep) 리스크\n☐ 신규 구축으로 기대 수준 조율 필요'), ] }, # ── 신규 과제 9 ── { 'num': 9, 'title': 'ETC병원본부 영업 데이터 자동 취합·인사이트 리포트 생성', 'dept': '대웅 ETC병원본부', 'applicant': '금예빈', 'empno': '2025013', 'date': '2026.02.23', 'avail': '대리 신청 건', 'time_spent': '구체적 시간 정보 미제공', 'collab': '직책자 보고 체계 (소장/사업부장 단위)', 'data_type': 'Excel / CSV, 텍스트', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '사무소별 Google Sheets + Salesforce 데이터', 'privacy': '확인 필요', 'asis': ( 'ETC병원본부에서 사업부 관리·목표 설정, 영업 활동 데이터 확인, 사무소 단위 현황 관리, ' '정기 리포트 작성, 직책자 대상 주간/월간 보고 수행 중.\n' 'Salesforce에 동일 형식으로 데이터 입력되나, 실제 라이브 운영·추가 관리 데이터는 ' 'Google Sheets 등 별도 자료로 분산 관리. 일부 사무소는 LLM/Genspark 등 자체 활용 중.' ), 'pain': ( '① 사무소별 데이터 관리 방식 비표준화 → 동일 데이터가 서로 다른 방식으로 관리\n' '② 보고 자료가 여러 소스에 분산 → 취합 번거로움\n' '③ 직책자가 핵심 변화를 한눈에 파악하기 어려움\n' '④ "무엇이 중요한 변화인지", "한 일/할 일" 빠르게 확인 곤란\n' '⑤ 데이터 확인·요약이 수동, 보고 자료의 양과 범위가 방대함' ), 'tobe': ( '- 사무소별 Google Sheets 데이터를 자동으로 취합·표준화\n' '- 주간 영업 데이터를 자동 요약하여 직책자 관점 인사이트 리포트 생성\n' '- "한 일 / 할 일 / 주요 변화 / 리스크" 자동 구조화\n' '- 사업부/사무소 단위 성과 비교·이상 징후 자동 감지\n' '- 수동 취합 없이 보고용 자료 자동 생성\n' '- 향후 Salesforce 데이터와 연계 가능성 확보' ), 'result_form': '파일(Excel/CSV/Word), 대시보드, 직책자용 주간 인사이트 리포트', 'eval': [ ('① 업무 규칙·요구사항 명확성', '△ 일부 애매', '"대리 신청 건"으로, 과제 수행 주체와 세부 업무 프로세스가 명확히 기술되지 않음. ' '방향성(데이터 취합→요약→인사이트→보고서)은 존재하나, 구체적 데이터 가공 규칙·인사이트 판단 기준은 추가 정의 필요.'), ('② 현업 참여 의지', '△ 불확실', '"대리 신청 건"으로 기재. 실제 과제 수행 담당자의 참여 의지·가용 시간이 불확실. ' '선정 기준(매일 6시간) 충족 여부 확인 필요.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV, 텍스트 형태. Salesforce + Google Sheets에 데이터 존재. 즉시 제공 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ LLM (데이터 요약·인사이트 생성) ☑ BI 대시보드 (성과 시각화)\n' '☑ 노코드 워크플로우 n8n (Google Sheets 자동 취합·표준화)'), ('⑤ 목표 달성 기준', '△ 구체화 필요', '구체적 시간·수치 미기재. 현재 업무 소요 시간 정보도 없어 정량적 개선 목표 설정이 어려움.'), ('⑥ 예상 효과', '중간', '[정량] 수동 데이터 취합·정리 시간 절감 (구체적 수치 미확인)\n' '[정성] 직책자 보고 품질 향상, 사무소 간 데이터 표준화, 이상 징후 조기 감지'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 개인정보 규제: 확인 필요 (영업 활동 데이터 내 개인정보 여부)\n' '☑ 외부 시스템 연동: Salesforce·Google Sheets 연동 필요\n' '☐ 사무소별 비표준 데이터 구조 → 표준화 작업 선행 필요\n' '☐ 대리 신청으로 실제 수행 주체 확인 필요'), ] }, # ── 신규 과제 10 ── { 'num': 10, 'title': '정책·업계 시황 기반 영업 실행 인사이트 자동 생성', 'dept': '대웅 ETC병원본부', 'applicant': '금예빈', 'empno': '2025013', 'date': '2026.02.23', 'avail': '대리 신청 건', 'time_spent': '구체적 시간 정보 미제공', 'collab': '본부장/사업부장/팀장 단위 니즈 존재', 'data_type': 'Excel / CSV, 텍스트', 'data_ready': '예 (과제 선발 후 샘플 데이터 즉시 제공 가능)', 'data_volume': '외부 정책·업계 기사 (규모 미상)', 'privacy': '확인 필요', 'asis': ( '영업 전략 방향 설정, 정책·업계 시황 모니터링, 영업 조직 가이드 제공 업무.\n' '현재 업무 흐름: 정책·업계 기사 확인 → 외부 환경 변화 정리 → 내부 영업 조직에 가이드 전달.\n' '(기사 확인 도구, 정리 방식 등 구체 정보 없음)' ), 'pain': ( '① 정책/업계 시황 정보를 영업 실행과 연결하기 어려움\n' '② 외부 정보를 실무 관점으로 해석하는 데 시간 소요\n' '③ 조직 차원의 기준으로 정리된 가이드 형태의 인사이트 부족\n' '④ 영업 관점에서 실행 가능한 인사이트 체계 부재' ), 'tobe': ( '- 정책/업계 기사 자동 수집 및 요약\n' '- 단순 요약이 아닌 "영업 관점 실행 인사이트" 자동 생성\n' '- 대웅 내부 기준과 연결된 해석 제공\n' '- 정책 변화 → 영향 영역 → 대응 전략까지 구조화\n' '→ 외부 정보 → 내부 전략 연결 → 실행 가이드 자동 생성 체계' ), 'result_form': '파일(Excel/CSV/Word), 대시보드', 'eval': [ ('① 업무 규칙·요구사항 명확성', '✗ 애매', '"대리 신청 건"이며, 기사 확인 도구·정리 방식 등 구체 정보 없음. ' '외부 정보를 "영업 관점 실행 인사이트"로 변환하는 과정은 담당자의 "감"과 노하우에 크게 의존하는 영역. ' '명확한 규칙 기반 개발보다 AI 모델 학습이 필요한 유형.'), ('② 현업 참여 의지', '△ 불확실', '"대리 신청 건"으로 기재. 실제 수행자의 참여 의지·가용 시간 불확실. ' '본부장/사업부장/팀장 단위 니즈가 있으나 실무 참여자 특정 안됨.'), ('③ 데이터 디지털화', '✓ 즉시 가능', 'Excel/CSV, 텍스트 형태. 외부 기사·정책 데이터는 크롤링으로 확보 가능.'), ('④ 예상 AI Tool·인프라', '해당', '☑ LLM (기사 수집·요약·인사이트 생성) ☑ 상용 API (뉴스 크롤링)\n' '☑ 노코드 워크플로우 n8n (자동 수집·발송)'), ('⑤ 목표 달성 기준', '✗ 불명확', '구체적 시간·수치 정보 전혀 없음. 현재 업무 소요 시간도 미제공. ' '정량적 개선 목표 수립이 현 단계에서 불가.'), ('⑥ 예상 효과', '중간', '[정량] 기사 수집·정리 시간 절감 (구체적 수치 미확인)\n' '[정성] 외부 환경 변화 대응 속도 향상, 영업 조직 가이드 품질 일관성 확보'), ('⑦ 리스크·제약사항', '△ 일부', '☑ 업무 규칙 불명확: "영업 관점 실행 인사이트"의 판단 기준이 담당자 노하우에 의존\n' '☐ 대리 신청으로 실제 수행 주체 확인 필요\n' '☐ AI 생성 인사이트의 품질 검증 체계 구축 필요\n' '☐ 내부 전략과의 연결은 구조화가 매우 어려운 영역'), ] }, ] for proj in projects: add_section_break(doc) p = doc.add_paragraph() styled_run(p, '2', size=20, bold=True, color=ACCENT) styled_run(p, f'.{proj["num"]}', size=20, bold=True, color=ACCENT) styled_run(p, f' {proj["title"]}', size=20, bold=True, color=NAVY) p = doc.add_paragraph() styled_run(p, f'2.{proj["num"]}.1 ', size=12, bold=True, color=ACCENT) styled_run(p, '과제 기본정보 · 현재 업무 · 희망 결과', size=12, bold=True, color=NAVY) doc.add_paragraph() info_tbl = doc.add_table(rows=5, cols=4) info_tbl.style = 'Table Grid' info_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER info_items = [ ('소속', proj['dept'], '신청자 / 사번', f'{proj["applicant"]} / {proj["empno"]}'), ('접수일', proj['date'], '참여 가능 시간', proj['avail']), ('현재 업무 소요시간', proj['time_spent'], '협업 부서', proj['collab']), ('데이터 형태', proj['data_type'], '데이터 준비 상태', proj['data_ready']), ('데이터 처리 규모', proj['data_volume'], '개인정보 포함', proj['privacy']), ] for ri, (l1, v1, l2, v2) in enumerate(info_items): for ci, (label, val) in enumerate([(l1, v1), (l2, v2)]): lc = info_tbl.rows[ri].cells[ci * 2] vc = info_tbl.rows[ri].cells[ci * 2 + 1] lc.text = '' vc.text = '' shade(lc, LIGHT_ACCENT) lc.vertical_alignment = WD_ALIGN_VERTICAL.CENTER vc.vertical_alignment = WD_ALIGN_VERTICAL.CENTER rl = lc.paragraphs[0].add_run(label) rl.bold = True rl.font.size = Pt(8) rv = vc.paragraphs[0].add_run(val) rv.font.size = Pt(8) doc.add_paragraph() apt_tbl = doc.add_table(rows=2, cols=3) apt_tbl.style = 'Table Grid' apt_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER for ci, title in enumerate(['As-Is : 현재 업무', 'Pain Point : 문제점', 'To-Be : 희망 결과']): make_header_cell(apt_tbl.rows[0].cells[ci], title, 9) contents = [proj['asis'], proj['pain'], proj['tobe']] for ci, txt in enumerate(contents): c = apt_tbl.rows[1].cells[ci] c.text = '' c.vertical_alignment = WD_ALIGN_VERTICAL.TOP p = c.paragraphs[0] r = p.add_run(txt) r.font.size = Pt(8) doc.add_paragraph() p = doc.add_paragraph() styled_run(p, '결과 형태: ', size=8, bold=True, color=ACCENT) styled_run(p, proj['result_form'], size=8) doc.add_paragraph() p = doc.add_paragraph() styled_run(p, f'2.{proj["num"]}.2 ', size=12, bold=True, color=ACCENT) styled_run(p, '과제 선정 기준 체크리스트 평가', size=12, bold=True, color=NAVY) doc.add_paragraph() eval_tbl = doc.add_table(rows=len(proj['eval']) + 1, cols=3) eval_tbl.style = 'Table Grid' eval_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER make_header_cell(eval_tbl.rows[0].cells[0], '선정 기준', 9) make_header_cell(eval_tbl.rows[0].cells[1], '판정', 9) make_header_cell(eval_tbl.rows[0].cells[2], '평가 내용', 9) for ri, (criteria, status, detail) in enumerate(proj['eval'], 1): c0 = eval_tbl.rows[ri].cells[0] c1 = eval_tbl.rows[ri].cells[1] c2 = eval_tbl.rows[ri].cells[2] c0.text = '' c0.vertical_alignment = WD_ALIGN_VERTICAL.CENTER r0 = c0.paragraphs[0].add_run(criteria) r0.font.size = Pt(8) r0.bold = True c1.text = '' c1.vertical_alignment = WD_ALIGN_VERTICAL.CENTER c1.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER r1 = c1.paragraphs[0].add_run(status) r1.font.size = Pt(9) r1.bold = True if '✓' in status or '매우' in status: shade(c1, GREEN_BG) elif '△' in status or status == '해당' or '중간' in status: shade(c1, YELLOW_BG) elif '✗' in status: shade(c1, RED_BG) elif '높음' in status: shade(c1, GREEN_BG) c2.text = '' c2.vertical_alignment = WD_ALIGN_VERTICAL.TOP r2 = c2.paragraphs[0].add_run(detail) r2.font.size = Pt(8) # ============================================================ # CHAPTER 3 — 선정 적합도 순위 # ============================================================ add_section_break(doc) p = doc.add_paragraph() styled_run(p, '3', size=22, bold=True, color=ACCENT) styled_run(p, ' 선정 적합도 순위 및 최종 정리', size=22, bold=True, color=NAVY) doc.add_paragraph() p = doc.add_paragraph() styled_run(p, '■ 종합 평가 매트릭스', size=12, bold=True, color=NAVY) doc.add_paragraph() mx = doc.add_table(rows=11, cols=9) mx.style = 'Table Grid' mx.alignment = WD_TABLE_ALIGNMENT.CENTER mh = ['과제', '① 규칙\n명확성', '② 참여\n의지', '③ 데이터\n준비', '④ AI\nTool', '⑤ 목표\n기준', '⑥ 예상\n효과', '⑦ 리스크', '종합\n적합도'] for i, t in enumerate(mh): make_header_cell(mx.rows[0].cells[i], t, 8) mx_data = [ ['3. 김지숙\nCPS 증빙 검토 자동화', '✓', '✓', '✓', 'OCR/LLM\nn8n', '✓', '매우 높음', '△', '★★★★★'], ['1. 박미경\n목표 달성 DashBoard', '✓', '✓', '✓', 'BI/LLM\nn8n', '✓', '높음', '△', '★★★★☆'], ['4. 박지현\n로컬 스타 산출', '✓', '△', '✓', 'n8n\nRPA', '✓', '높음', '△', '★★★★☆'], ['7. 이승민\n처방마감자료 자동화', '✓', '△', '✓', 'n8n\nRPA', '✓', '높음', '△', '★★★★☆'], ['8. 백송이\n매출 대시보드', '△', '✓', '✓', 'BI/LLM\nn8n', '△', '높음', '△', '★★★☆☆'], ['9. 금예빈\n영업 인사이트 리포트', '△', '△', '✓', 'LLM/BI\nn8n', '△', '중간', '△', '★★★☆☆'], ['5. 김진우\nEmma 메일링', '△', '△', '✓', 'LLM/n8n\nAPI', '✓', '중간', '△', '★★★☆☆'], ['6. 김진우\n논문 기사 자동화', '△', '△', '✓', 'LLM\nAPI', '✓', '중간', '△', '★★★☆☆'], ['10. 금예빈\n정책 인사이트 생성', '✗', '△', '✓', 'LLM\nAPI', '✗', '중간', '△', '★★☆☆☆'], ['2. 김희영\n채권현황 조회', '✓', '✗', '✓', '웹앱\nAPI', '✓', '중간', '✗', '★★☆☆☆'], ] for ri, row in enumerate(mx_data, 1): for ci, val in enumerate(row): c = mx.rows[ri].cells[ci] c.text = '' c.vertical_alignment = WD_ALIGN_VERTICAL.CENTER p = c.paragraphs[0] p.alignment = WD_ALIGN_PARAGRAPH.CENTER r = p.add_run(val) r.font.size = Pt(8) if ci == 0: r.bold = True p.alignment = WD_ALIGN_PARAGRAPH.LEFT elif ci == 8: r.bold = True r.font.color.rgb = RGBColor.from_string(ACCENT) else: if val in ('✓', '매우 높음'): shade(c, GREEN_BG) elif val in ('△', '중간', '해당'): shade(c, YELLOW_BG) elif val == '✗': shade(c, RED_BG) elif '높음' in val: shade(c, GREEN_BG) doc.add_paragraph() doc.add_paragraph() p = doc.add_paragraph() styled_run(p, '■ 선정 적합도 순위 (상세 의견)', size=12, bold=True, color=NAVY) doc.add_paragraph() rankings = [ ('1순위', '★★★★★', '과제 3', 'CPS 지출보고 증빙 검토·승인 자동화 (김지숙)', '선정 강력 권장', '가장 높은 선정 적합도. 업무 규칙이 매우 명확하고, 신청자의 적극적 참여 의지가 확인됨. ' 'OCR과 LLM을 결합한 AI 활용 가치가 매우 높으며, 일 1,500건/월 30,000건의 대량 처리로 ' '자동화 효과가 극대화됨. 개인정보 포함 데이터에 대한 보안 대책 수립이 선행 필요.', GREEN_BG), ('2순위', '★★★★☆', '과제 1', 'ETC마케팅본부 목표 달성 DashBoard (박미경)', '선정 권장', '명확한 프로세스와 적극적 참여 의지. BI 대시보드 + LLM 결산 자동 작성의 조합으로 ' 'AI 활용 가치가 높음. SF CRM 연동 범위를 사전에 확정하여 착수 시 지연을 방지할 필요가 있음.', GREEN_BG), ('3순위', '★★★★☆', '과제 4', 'ETC 로컬 스타 산출 자동화 (박지현)', '조건부 선정\n(참여 시간 확대 협의)', '4단계 프로세스(VLOOKUP/SUMIFS 기반)가 매우 구체적으로 정의되어 자동화에 매우 적합함. ' '다만 참여 시간(2~3시간)이 기준(6시간)에 크게 미달하므로, 참여 시간 확대를 협의한 후 선정을 권장. ' '인사팀(배치일자) 협업도 사전 조율 필요.', YELLOW_BG), ('4순위', '★★★★☆', '과제 7', '처방마감자료 생성 및 메일 발송 자동화 (이승민)', '조건부 선정\n(참여 시간 확대 협의)', '6단계 프로세스가 상세하게 기술되어 자동화에 매우 적합함. 25만행+ 대용량 VLOOKUP 매핑의 자동화 효과가 큼. ' '참여 시간(2~3시간)이 기준 미달이나, 월 1회 업무이므로 집중 기간 조율 가능. ' '개인정보(MR 사번) 보안 대책 수립 필요.', YELLOW_BG), ('5순위', '★★★☆☆', '과제 8', '매출 대시보드 제작 (백송이)', '요건 정의 후 선정', '적극적 참여 의지와 높은 효과가 기대되나, 요구사항이 아직 미확정 상태("정형화된 틀이 없는 신규 구축"). ' '신규 구축 특성상 범위 관리가 매우 중요하므로, 요건 정의 워크숍을 선행한 후 착수할 것을 권장.', YELLOW_BG), ('6순위', '★★★☆☆', '과제 9', 'ETC병원본부 영업 데이터 인사이트 리포트 (금예빈)', '요건 정의·수행 주체\n확인 후 검토', '"대리 신청 건"으로 실제 수행 주체와 참여 시간이 불확실. LLM 기반 데이터 자동 요약·인사이트 생성은 ' 'AI 활용 가치가 있으나, 사무소별 비표준 데이터 구조 표준화 및 Salesforce 연동이 선행 필요. ' '실제 수행 담당자 확정 및 요건 구체화 후 재검토 권장.', YELLOW_BG), ('7순위', '★★★☆☆', '과제 5', 'Emma 메일링 업그레이드 (김진우/정신영)', '재검토 필요', 'LLM 기반 기사 선별·요약 기능의 AI 활용 가치는 있으나, 참여 의지가 불확실하고 ' '"선정 기준에 따른 기사 선별" 기준이 구체적이지 않음. IT 추진팀(기존 emma 개발팀) 연동·개편이 필요. ' '참여 시간·요건 확정 후 재검토를 권장.', YELLOW_BG), ('8순위', '★★★☆☆', '과제 6', '최신연구 논문 기사 제작 자동화 (김진우/정신영)', '재검토 필요', '과거 1차 제작 경험이 있어 기술적 기반은 있으나, 담당자 퇴사로 홀딩된 상태로 기존 시스템 파악이 선행 필요. ' '참여 의지가 불확실하고 업그레이드 요건이 구체적이지 않음. ' 'AI 생성 기사의 의료정보 정확성 검증 체계도 필요. 참여 시간·요건 확정 후 재검토를 권장.', YELLOW_BG), ('9순위', '★★☆☆☆', '과제 10', '정책·업계 시황 인사이트 자동 생성 (금예빈)', 'AX 과제 부적합\n→ AI 모델 학습 검토', '"대리 신청 건"이며, 외부 정보를 영업 실행 인사이트로 변환하는 과정은 담당자의 "감"과 노하우에 ' '크게 의존하는 영역으로, 명확한 규칙 기반 개발이 어려움. 구체적 시간·수치 정보도 전혀 없어 ' '목표 설정이 불가. AI 모델 학습(RAG 등) 관점에서 별도 검토 필요.', RED_BG), ('10순위', '★★☆☆☆', '과제 2', 'MR 거래처 채권현황 실시간 조회 (김희영)', 'AX 과제 부적합\n→ IT 개발 과제 검토', '참여 의지가 불확실(AX특공대 불필요 기재)하고, AI 활용 요소가 미약하며(IT 시스템 개발 성격), ' 'SAP 연동 제약 등으로 AX 과제 선정에 부적합. IT 개발 과제로 별도 검토할 것을 권장.', RED_BG), ] rank_tbl = doc.add_table(rows=len(rankings) + 1, cols=6) rank_tbl.style = 'Table Grid' rank_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER rh_actual = ['순위', '과제', '과제명', '판정', '종합 의견'] for i in range(5): make_header_cell(rank_tbl.rows[0].cells[i], rh_actual[i], 9) make_header_cell(rank_tbl.rows[0].cells[5], '', 9) rank_tbl.rows[0].cells[4].merge(rank_tbl.rows[0].cells[5]) for ri, (rank, stars, pno, pname, verdict, opinion, bg) in enumerate(rankings, 1): c0 = rank_tbl.rows[ri].cells[0] c1 = rank_tbl.rows[ri].cells[1] c2 = rank_tbl.rows[ri].cells[2] c3 = rank_tbl.rows[ri].cells[3] c45 = rank_tbl.rows[ri].cells[4] c45.merge(rank_tbl.rows[ri].cells[5]) for c in [c0, c1, c2, c3, c45]: c.text = '' c.vertical_alignment = WD_ALIGN_VERTICAL.CENTER c0.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER r = c0.paragraphs[0].add_run(f'{rank}\n{stars}') r.font.size = Pt(8) r.bold = True shade(c0, bg) c1.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER r = c1.paragraphs[0].add_run(pno) r.font.size = Pt(8) r.bold = True r = c2.paragraphs[0].add_run(pname) r.font.size = Pt(8) c3.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER r = c3.paragraphs[0].add_run(verdict) r.font.size = Pt(8) r.bold = True if '강력' in verdict: r.font.color.rgb = RGBColor.from_string('27AE60') elif '권장' in verdict and '부적합' not in verdict: r.font.color.rgb = RGBColor.from_string(ACCENT) elif '부적합' in verdict: r.font.color.rgb = RGBColor.from_string('E74C3C') r = c45.paragraphs[0].add_run(opinion) r.font.size = Pt(8) doc.add_paragraph() doc.add_paragraph() p = doc.add_paragraph() styled_run(p, '■ 핵심 요약', size=12, bold=True, color=NAVY) doc.add_paragraph() key_tbl = doc.add_table(rows=1, cols=1) key_tbl.style = 'Table Grid' key_tbl.alignment = WD_TABLE_ALIGNMENT.CENTER kc = key_tbl.rows[0].cells[0] kc.text = '' shade(kc, LIGHT_ACCENT) lines = [ ('총 접수 과제: ', '5개 조직, 10건 (2026.02.19~23 접수)'), ('즉시 착수 가능: ', '10건 모두 데이터 디지털화 완료 (100%)'), ('선정 강력 권장: ', '과제 3 (CPS 증빙 검토 자동화) — OCR·LLM 활용, 일 1,500건 대량 처리, 70~85% 시간 절감 기대'), ('선정 권장: ', '과제 1 (DashBoard) — BI+LLM 조합, 높은 AI 활용 가치'), ('조건부 선정: ', '과제 4, 7 (참여 시간 확대 협의 필요) / 과제 8 (요건 정의 선행 필요)'), ('요건 정의 후 검토: ', '과제 9 (대리 신청, 수행 주체·요건 확정 필요)'), ('재검토 필요: ', '과제 5, 6 (참여 의지·요건 구체화 필요)'), ('AX 부적합: ', '과제 10 (규칙 불명확, AI 모델 학습 관점 별도 검토) / 과제 2 (IT 개발 과제 성격, 별도 검토 권장)'), ] for label, value in lines: p = kc.add_paragraph() p.paragraph_format.space_before = Pt(2) p.paragraph_format.space_after = Pt(2) styled_run(p, f' ▸ {label}', size=10, bold=True, color=NAVY) styled_run(p, value, size=10) base_dir = os.path.dirname(os.path.abspath(__file__)) output_path = os.path.join(base_dir, 'outputs', '20260223_report_10.doc') os.makedirs(os.path.dirname(output_path), exist_ok=True) doc.save(output_path) print(f'Report saved: {output_path}')