| 💊 개요
<의약품 안전나라>
• 수신한 메일에서 처리 항목 가져오기
• 의약품 안전나라 – 고시/공고/알림 – 행정처분정보 접속
• 품목구분 및 조회기간 설정 (의약품 등, 메일에 주어진 기간)
• 템플릿 파일의 양식에 맞게 추출한 ‘전체DT’를 당월시트에 입력
• ‘전체DT’ 중 키워드가 포함된 내용만 추출하여 이슈사항시트에 입력
• 이슈사항시트의 내용 중 처분일자가 당월인 것만 필터링하여 당월이슈시트에 입력
• 결과파일을 첨부하여 양식대로 메일 발송
https://nedrug.mfds.go.kr/index
| 💊 개발환경
UiPath Studio Community Edition ver2024.02.01
Robotic Enterprise Framework
Window 10
Google Chrome
[ Add Dependency ]
Uipath.Mail.Activities
| 💊 흐름도
![](https://velog.velcdn.com/images/dnjstjdgus03/post/cebba988-c2c9-4ab5-845d-34d37b8e7b5e/image.png)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/92fca232-3622-49ff-be24-eff013c4e12a/image.png)
| 💊 데이터 명세서
-
Main Variable
![](https://velog.velcdn.com/images/dnjstjdgus03/post/e22d91ee-8cee-4f4e-a125-6d224776ed10/image.png)
-
Config
![](https://velog.velcdn.com/images/dnjstjdgus03/post/38c9f8a1-373b-4faf-a6a1-0f7723de2f5b/image.png)
| 💊 구현
[ Initialization ] - 초기 실행
FirstRun
- 템플릿 파일을 복사하여, 결과 파일 생성
![](https://velog.velcdn.com/images/dnjstjdgus03/post/f2215c24-4f32-4b15-adcb-b0e354979df0/image.png)
- Mail 가져오기
![](https://velog.velcdn.com/images/dnjstjdgus03/post/ca413b5e-e21e-442b-81e2-b72ab05a81ce/image.png)
- Mail 리스트 필터링, 내용 중 검색어, 검색기간 추출
![](https://velog.velcdn.com/images/dnjstjdgus03/post/2c0fbd4e-2b6a-4129-b8ad-0a65f0477f28/image.png)
- 검색어, 검색기간 양식에 맞게 편집
![](https://velog.velcdn.com/images/dnjstjdgus03/post/cfea558d-ae75-4b60-9e9c-ecea6090cc9f/image.png)
< 인수 >
![](https://velog.velcdn.com/images/dnjstjdgus03/post/4dad3070-35c4-4d24-8f42-b5b67488045b/image.png)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/a0ee2cf9-4a17-4ec1-bf9b-4d1174d88ccb/image.png)
Init Workflow
- 스크래핑 전 사이트 접속
![](https://velog.velcdn.com/images/dnjstjdgus03/post/06321d2c-424d-4c5e-9670-92c91a88029b/image.png)
- 자주 넘어가지는 부분 RetryScope 처리
![](https://velog.velcdn.com/images/dnjstjdgus03/post/fbe35603-e3bd-45fc-a107-6a5d57ae7bdc/image.png)
< 인수 >
![](https://velog.velcdn.com/images/dnjstjdgus03/post/6a5f03d7-64d3-4b99-9042-8f0f3ff90a50/image.png)
- 데이터 스크래핑(메인 transactionData)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/de64d1de-90ba-4e4c-ad9c-544e95e12842/image.png)
[ Process Transaction ] - 반복 부분
- 추출된 URL을 통한 세부 데이터 추출 저장
![](https://velog.velcdn.com/images/dnjstjdgus03/post/402a91e8-6de8-4b0b-b4c4-1ef4abbee6bc/image.png)
- 세부 데이터 추출 시 예외처리(BRE처리 및 예상치 못한 에러 Exception처리)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/3eb0f0eb-ee8f-45e2-ab55-a1a38c3fd2c9/image.png)
*추후에 세세한 예외처리를 위해 구조바꿔야 함(기입되는 데이터 관리를 위해)
[ End Process ] - 결과 보고 후 클린
1. 시트 기입을 위한 요구 DT 편집
- 기본 요구 DT(URL열 제거)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/8587891b-e289-453c-9edc-45a5b327039c/image.png)
- Mail 검색어 리스트로 위반내역 필터링(Clone으로 양식가져오고, DT병합 후 중복제거)
.DefaultView.ToTable(True)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/1f3b8949-6e27-4cae-93c3-e706cf1273c5/image.png)
- 해당 월 필터링
![](https://velog.velcdn.com/images/dnjstjdgus03/post/e7f02fc7-9471-4d2b-b27c-78a962e362c7/image.png)
2. 엑셀 시트 기입
- 메인 시트 이름 변경 및 각 필터링된 DT들 시트에 기입
![](https://velog.velcdn.com/images/dnjstjdgus03/post/97799b55-08b8-488e-9d6b-45537a53f787/image.png)
3. 메일 전송용 데이터테이블 HTML화
- 메일 추가용 데이터테이블 양식 탬플릿(Replace로 인라인스타일시트 적용)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/136f0fda-d677-410d-9d6f-ea167a4e61bf/image.png)
- [예시]
![](https://velog.velcdn.com/images/dnjstjdgus03/post/e22a9545-b160-4b14-bc05-4edb5f15f6a3/image.png)
4. 결과 이메일 전송
- 첫번째는 오류 항목 관리용 테이블 양식, 두번째는 결과 데이터테이블 양식 이메일 전송
![](https://velog.velcdn.com/images/dnjstjdgus03/post/676f5e7e-8178-4d18-8a12-781a888b2cea/image.png)
첨부파일 : String.Format(in_dicConfig("Folder_Output").ToString, Now.ToString("{yyMM}"))
| 💊 오류 해결 및 개선 사항
1. 오류 :
- LinQ문 사용으로 List검색어 기반 위반내역 필터링 구현했지만, 잘못 필터링 됌.
![](https://velog.velcdn.com/images/dnjstjdgus03/post/0838c79c-63ae-4d94-8ec2-61b81faf6840/image.png)
해결 :
- For Each문으로 List검색어 필터링해서 병합(+중복제거)
![](https://velog.velcdn.com/images/dnjstjdgus03/post/3c2595a5-7244-4082-9c80-7ddf5cbdde5b/image.png)
2. 개선 사항 :
1. Linq문 사용한 것은 좋았으나, 검색어 필터링 시 정확하게 필터링 하지 못함
2. Init에서 첫번째 수행일 때 구역으로 워크플로우 이동하는 걸 추천
3. 실패한 Transaction에 대한 Notice 처리 필요
4. TransactionDT 추출 시 검증 또는 Try-catch 또는 Retry 추가 필요
5. 검색기간 이후 필터링 시 오류 해결
| 💊 소스 코드
https://github.com/FURVEN/DrugSafety.git