diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/document/entity/enums/DocumentType.java b/src/main/java/Sprout_Squad/EyeOn/domain/document/entity/enums/DocumentType.java index eab5f68..327f693 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/document/entity/enums/DocumentType.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/document/entity/enums/DocumentType.java @@ -30,4 +30,21 @@ public static DocumentType from(String type) { throw new IllegalArgumentException("정의되지 않은 문서 타입: " + type); } } + + public String getKoreanFolderName() { + switch (this) { + case RESUME: + return "이력서"; + case CERTIFICATE: + return "재직증명서"; + case CONSENT: + return "위임장"; + case SELF_INTRO: + return "자기소개서"; + case REPORT: + return "업무보고서"; + default: + return "기타"; + } + } } diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/document/service/DocumentServiceImpl.java b/src/main/java/Sprout_Squad/EyeOn/domain/document/service/DocumentServiceImpl.java index 0fdb1b7..23d3a84 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/document/service/DocumentServiceImpl.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/document/service/DocumentServiceImpl.java @@ -29,7 +29,10 @@ import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.UUID; import java.util.stream.Collectors; @Service @@ -42,7 +45,6 @@ public class DocumentServiceImpl implements DocumentService { private final PdfService pdfService; private final FormRepository formRepository; private final FlaskService flaskService; - private final FieldLabelMapper fieldLabelMapper; /** * 사용자의 문서 하나 상세 조회 @@ -109,6 +111,7 @@ public GetSummaryRes getSummary(UserPrincipal userPrincipal, Long id) { @Override @Transactional public WriteDocsRes writeDocument(UserPrincipal userPrincipal, Long formId, List writeDocsReqList) throws IOException { + System.out.println("리스트 : " + writeDocsReqList); // 사용자가 존재하지 않을 경우 -> UserNotFoundException User user = userRepository.getUserById(userPrincipal.getId()); @@ -124,15 +127,16 @@ public WriteDocsRes writeDocument(UserPrincipal userPrincipal, Long formId, List // pdf url byte[] imgToPdf = pdfService.convertImageToPdf(s3Service.downloadFile(imgUrl)); + DocumentType documentType = DocumentType.valueOf(form.getFormType().name()); + // S3에 pdf 업로드 String fileName = s3Service.generatePdfFileName(); int dotIndex = fileName.lastIndexOf('.'); - String nameOnly = (dotIndex != -1) ? fileName.substring(0, dotIndex) : fileName; String pdfUrl = s3Service.uploadPdfBytes(fileName, imgToPdf); - DocumentType documentType = DocumentType.valueOf(form.getFormType().name()); + String displayName = "["+ LocalDate.now()+"] " + documentType.getKoreanFolderName(); - Document document = Document.toEntity(documentType, imgUrl, pdfUrl, form, nameOnly, user); + Document document = Document.toEntity(documentType, imgUrl, pdfUrl, form, displayName, user); documentRepository.save(document); return WriteDocsRes.from(document); diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/document/web/controller/DocumentController.java b/src/main/java/Sprout_Squad/EyeOn/domain/document/web/controller/DocumentController.java index a431d4b..99d7b67 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/document/web/controller/DocumentController.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/document/web/controller/DocumentController.java @@ -21,9 +21,6 @@ @RequestMapping("/api/document") public class DocumentController { private final DocumentService documentService; - private final FlaskService flaskService; - private final PdfService pdfService; - private final S3Service s3Service; // 문서 업로드 @PostMapping diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/entity/User.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/entity/User.java index 4414980..09e3397 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/user/entity/User.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/entity/User.java @@ -52,9 +52,9 @@ public class User extends BaseEntity { @Column(name="is_blind", nullable = false) private TF isBlind; - public void modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq) { + public void modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq, String profileImageUrl) { this.address = modifyUserInfoReq.address(); - this.profileImageUrl = modifyUserInfoReq.profileImageUrl(); + this.profileImageUrl = profileImageUrl; } public static User toEntity(SignUpReq signUpReq, Gender gender) { diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserService.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserService.java index 917223c..c153ba3 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserService.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserService.java @@ -5,9 +5,11 @@ import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; + public interface UserService { SignUpRes signUp(SignUpReq signUpReq); - void modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq, @AuthenticationPrincipal UserPrincipal userPrincipal); + ModifyUserInfoRes modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq, MultipartFile file, @AuthenticationPrincipal UserPrincipal userPrincipal) throws IOException; GetUserInfoRes getUserInfo(@AuthenticationPrincipal UserPrincipal userPrincipal); GetResidentInfoRes getResidentInfo(MultipartFile multipartFile); } diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserServiceImpl.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserServiceImpl.java index ff3dfa9..fb841d3 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserServiceImpl.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/service/UserServiceImpl.java @@ -9,11 +9,13 @@ import Sprout_Squad.EyeOn.global.auth.jwt.JwtTokenProvider; import Sprout_Squad.EyeOn.global.converter.OcrResultConverter; import Sprout_Squad.EyeOn.global.external.service.NaverOcrService; +import Sprout_Squad.EyeOn.global.external.service.S3Service; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; import java.util.Optional; @Service @@ -22,6 +24,7 @@ public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final JwtTokenProvider jwtTokenProvider; private final NaverOcrService naverOcrService; + private final S3Service s3Service; /** * 회원가입 @@ -58,10 +61,15 @@ public SignUpRes signUp(SignUpReq signUpReq) { */ @Override @Transactional - public void modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq, UserPrincipal userPrincipal) { + public ModifyUserInfoRes modifyUserInfo(ModifyUserInfoReq modifyUserInfoReq, MultipartFile file, UserPrincipal userPrincipal) throws IOException { // 사용자가 존재하지 않을 경우 -> UserNotFoundException User user = userRepository.getUserById(userPrincipal.getId()); - user.modifyUserInfo(modifyUserInfoReq); + + String fileName = s3Service.generateFileName(file); + String fileUrl = s3Service.uploadFile(fileName, file); + + user.modifyUserInfo(modifyUserInfoReq, fileUrl); + return ModifyUserInfoRes.from(user); } /** diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/web/controller/UserController.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/controller/UserController.java index 9276a2e..3795955 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/user/web/controller/UserController.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/controller/UserController.java @@ -11,6 +11,8 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; + @RestController @RequiredArgsConstructor @RequestMapping("/api/user") @@ -24,10 +26,12 @@ public ResponseEntity> signUp(@RequestBody @Valid Sig } @PutMapping("/modify") - public ResponseEntity> modifyUserInfo( - @AuthenticationPrincipal UserPrincipal userPrincipal, @RequestBody @Valid ModifyUserInfoReq modifyUserInfoReq) { - userService.modifyUserInfo(modifyUserInfoReq, userPrincipal); - return ResponseEntity.ok(SuccessResponse.empty()); + public ResponseEntity> modifyUserInfo( + @AuthenticationPrincipal UserPrincipal userPrincipal, + @RequestPart("file") MultipartFile file, + @RequestPart("data") @Valid ModifyUserInfoReq modifyUserInfoReq) throws IOException { + ModifyUserInfoRes modifyUserInfoRes = userService.modifyUserInfo(modifyUserInfoReq, file, userPrincipal); + return ResponseEntity.ok(SuccessResponse.from(modifyUserInfoRes)); } @GetMapping("/info") diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoReq.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoReq.java index 3f89b6f..5bba8e1 100644 --- a/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoReq.java +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoReq.java @@ -4,8 +4,6 @@ public record ModifyUserInfoReq( @NotBlank(message = "주소를 입력해주세요.") - String address, - - String profileImageUrl + String address ) { } diff --git a/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoRes.java b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoRes.java new file mode 100644 index 0000000..c8ef920 --- /dev/null +++ b/src/main/java/Sprout_Squad/EyeOn/domain/user/web/dto/ModifyUserInfoRes.java @@ -0,0 +1,13 @@ +package Sprout_Squad.EyeOn.domain.user.web.dto; + +import Sprout_Squad.EyeOn.domain.user.entity.User; +import com.nimbusds.openid.connect.sdk.claims.UserInfo; + +public record ModifyUserInfoRes( + String address, + String imgUrl +) { + public static ModifyUserInfoRes from(User user) { + return new ModifyUserInfoRes(user.getAddress(), user.getProfileImageUrl()); + } +} diff --git a/src/main/java/Sprout_Squad/EyeOn/global/external/service/PdfService.java b/src/main/java/Sprout_Squad/EyeOn/global/external/service/PdfService.java index a8bc00b..74f629f 100644 --- a/src/main/java/Sprout_Squad/EyeOn/global/external/service/PdfService.java +++ b/src/main/java/Sprout_Squad/EyeOn/global/external/service/PdfService.java @@ -17,6 +17,7 @@ import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; +import java.net.URL; import java.time.LocalDate; import java.util.List; import java.util.UUID; @@ -161,21 +162,51 @@ public String fillImageFromS3(String s3ImageUrl, List fields) { float x1 = bbox.get(2).floatValue() * imgWidth / 1000; // x1 float y1 = bbox.get(3).floatValue() * imgHeight / 1000; // y1 - // 텍스트를 박스 안에 적절히 배치 (좌표 보정) + float boxWidth = x1 - x0; float boxHeight = y1 - y0; - x0 += 15f; - y0 += boxHeight * 0.75f; // 텍스트를 박스의 적절한 위치로 이동 (상단보다는 조금 아래쪽) - - - g.setColor(Color.BLACK); - //g.drawRect((int) x0, (int) y0, (int) (x1 - x0), (int) boxHeight); // 디버깅용 사각형 그리기 - - // 폰트 크기를 bbox 높이에 맞춰 동적으로 설정 (선택 사항) - Font dynamicFont = font.deriveFont( 20f); // 박스 높이에 맞춰 폰트 크기 조정 - g.setFont(dynamicFont); - // 텍스트 삽입 - g.drawString(field.value(), x0, y0); + if("B-PERSONAL-PHOTO".equals(field.field())){ + // 이미지 URL 또는 경로로 BufferedImage 로드 + BufferedImage personalPhoto = null; + try { + // URL에서 불러오기 + URL url = new URL(field.value()); + personalPhoto = ImageIO.read(url); + } catch (Exception e) { + e.printStackTrace(); + continue; // 이미지 못 불러오면 건너뜀 + } + // 이미지 크기 (원본) + int imgW = personalPhoto.getWidth(); + int imgH = personalPhoto.getHeight(); + + // 박스 크기보다 작게 줄일 비율 + double scale = 0.95; + + int drawW = (int)(boxWidth * scale); + int drawH = (int)(boxHeight * scale); + + // 중앙 위치 계산 + int drawX = (int) (x0 + ((int)boxWidth - drawW) / 2.0); + int drawY = (int) (y0 + ((int)boxHeight - drawH) / 2.0); + + // 이미지 그리기 + g.drawImage(personalPhoto, drawX, drawY, drawW, drawH, null); + g.setColor(Color.BLUE); // 테두리 색 지정 + g.drawRect(drawX, drawY, drawW, drawH); + } else { // 텍스트를 박스 안에 적절히 배치 (좌표 보정) + x0 += 15f; + y0 += boxHeight * 0.75f; // 텍스트를 박스의 적절한 위치로 이동 (상단보다는 조금 아래쪽) + + g.setColor(Color.BLACK); + + // 폰트 크기를 bbox 높이에 맞춰 동적으로 설정 + Font dynamicFont = font.deriveFont(20f); // 박스 높이에 맞춰 폰트 크기 조정 + g.setFont(dynamicFont); + + // 텍스트 삽입 + g.drawString(field.value(), x0, y0); + } } g.dispose(); diff --git a/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldLabelMapper.java b/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldLabelMapper.java index 7a418e4..40a1615 100644 --- a/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldLabelMapper.java +++ b/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldLabelMapper.java @@ -28,44 +28,44 @@ public FieldLabelMapper() { Map.entry("B-HEADER-WORK", "경력사항"), Map.entry("B-HEADER-PERSONAL", "인적사항"), Map.entry("B-HEADER-MILITARY", "병역사항"), - Map.entry("B-PERSONAL-PHOTO", "사진"), - Map.entry("B-PERSONAL-NAME", "이름"), - Map.entry("B-PERSONAL-RRN", "주민등록번호"), - Map.entry("B-PERSONAL-PHONE", "연락처"), - Map.entry("B-PERSONAL-ADDR", "주소"), - Map.entry("B-PERSONAL-EMAIL", "이메일"), - Map.entry("B-EDU-PERIOD", "재학 기간"), - Map.entry("B-EDU-NAME", "학교명"), - Map.entry("B-EDU-MAJOR", "학과"), - Map.entry("B-EDU-GPA", "학점"), - Map.entry("B-WORK-PERIOD", "재직 기간"), - Map.entry("B-WORK-PLACE", "업체명"), - Map.entry("B-WORK-POSITION", "직위"), - Map.entry("B-WORK-DUTY", "담당업무"), - Map.entry("B-CERTIFICATE-DATE", "자격증 취득일"), - Map.entry("B-CERTIFICATE-NAME", "자격증 명"), - Map.entry("B-CERTIFICATE-SCORE", "점수(급)"), - Map.entry("B-CERTIFICATE-ORG", "기관명"), - Map.entry("B-MILITARY-PERIOD", "병역 기간"), - Map.entry("B-MILITARY-STATUS", "병역여부"), - Map.entry("B-MILITARY-TYPE", "군별"), - Map.entry("B-MILITARY-RANK", "계급") + Map.entry("B-PERSONAL-PHOTO", "[인적사항] 사진"), + Map.entry("B-PERSONAL-NAME", "[인적사항] 이름"), + Map.entry("B-PERSONAL-RRN", "[인적사항] 주민등록번호"), + Map.entry("B-PERSONAL-PHONE", "[인적사항] 연락처"), + Map.entry("B-PERSONAL-ADDR", "[인적사항] 주소"), + Map.entry("B-PERSONAL-EMAIL", "[인적사항] 이메일"), + Map.entry("B-EDU-PERIOD", "[학력사항] 재학 기간"), + Map.entry("B-EDU-NAME", "[학력사항] 학교명"), + Map.entry("B-EDU-MAJOR", "[학력사항] 학과"), + Map.entry("B-EDU-GPA", "[학력사항] 학점"), + Map.entry("B-WORK-PERIOD", "[경력사항] 재직 기간"), + Map.entry("B-WORK-PLACE", "[경력사항] 업체명"), + Map.entry("B-WORK-POSITION", "[경력사항] 직위"), + Map.entry("B-WORK-DUTY", "[경력사항] 담당업무"), + Map.entry("B-CERTIFICATE-DATE", "[자격사항] 자격증 취득일"), + Map.entry("B-CERTIFICATE-NAME", "[자격사항] 자격증 명"), + Map.entry("B-CERTIFICATE-SCORE", "[자격사항] 점수(급)"), + Map.entry("B-CERTIFICATE-ORG", "[자격사항] 기관명"), + Map.entry("B-MILITARY-PERIOD", "[병역사항] 병역 기간"), + Map.entry("B-MILITARY-STATUS", "[병역사항] 병역여부"), + Map.entry("B-MILITARY-TYPE", "[병역사항] 군별"), + Map.entry("B-MILITARY-RANK", "[병역사항] 계급") ); this.certificate = Map.ofEntries( - Map.entry("B-DOC-TYPE", "문서종류"), + Map.entry("B-DOC-TYPE", "재직증명서"), Map.entry("B-HEADER-PERSONAL", "인적사항"), - Map.entry("B-PERSONAL-NAME", "이름"), - Map.entry("B-PERSONAL-RRN", "주민등록번호"), - Map.entry("B-PERSONAL-ADDR", "주소"), + Map.entry("B-PERSONAL-NAME", "[인적사항] 이름"), + Map.entry("B-PERSONAL-RRN", "[인적사항] 주민등록번호"), + Map.entry("B-PERSONAL-ADDR", "[인적사항] 주소"), Map.entry("B-HEADER-EMPLOY", "재직사항"), - Map.entry("B-EMPLOY-DEPT", "부서"), - Map.entry("B-EMPLOY-POSITION", "직위"), - Map.entry("B-EMPLOY-PERIOD", "기간"), + Map.entry("B-EMPLOY-DEPT", "[재직사항] 부서"), + Map.entry("B-EMPLOY-POSITION", "[재직사항] 직위"), + Map.entry("B-EMPLOY-PERIOD", "[재직사항] 기간"), Map.entry("B-PURPOSE", "용도"), - Map.entry("B-SIGN-YEAR", "년"), - Map.entry("B-SIGN-MONTH", "월"), - Map.entry("B-SIGN-DAY", "일"), + Map.entry("B-SIGN-YEAR", "[서명일자] 년"), + Map.entry("B-SIGN-MONTH", "[서명일자] 월"), + Map.entry("B-SIGN-DAY", "[서명일자] 일"), Map.entry("B-PLACE-ADDR", "근무지 주소"), Map.entry("B-PLACE-NAME", "회사명"), Map.entry("B-CEO-SIGN", "대표이사"), @@ -75,54 +75,54 @@ public FieldLabelMapper() { this.consent = Map.ofEntries( Map.entry("B-DOC-TYPE", "위임장"), Map.entry("B-HEADER-GRANTOR", "위임자(본인)"), - Map.entry("B-GRANTOR-NAME", "위임자 이름"), - Map.entry("B-GRANTOR-RRN", "주민등록번호"), - Map.entry("B-GRANTOR-ADDR", "주소"), - Map.entry("B-GRANTOR-PHONE", "연락처"), - Map.entry("B-GRANTOR-REASON", "위임사유"), + Map.entry("B-GRANTOR-NAME", "[위임자] 위임자 이름"), + Map.entry("B-GRANTOR-RRN", "[위임자] 주민등록번호"), + Map.entry("B-GRANTOR-ADDR", "[위임자] 주소"), + Map.entry("B-GRANTOR-PHONE", "[위임자] 연락처"), + Map.entry("B-GRANTOR-REASON", "[위임자] 위임사유"), Map.entry("B-HEADER-DELEGATE", "수임자(대리인)"), - Map.entry("B-DELEGATE-NAME", "수임자 이름"), - Map.entry("B-DELEGATE-RRN", "주민등록번호"), - Map.entry("B-DELEGATE-ADDR", "주소"), - Map.entry("B-DELEGATE-PHONE", "연락처"), - Map.entry("B-DELEGATE-RELATION", "관계"), - Map.entry("B-GRANT-CONTENT", "위임내용"), - Map.entry("B-SIGN-YEAR", "년"), - Map.entry("B-SIGN-MONTH", "월"), - Map.entry("B-SIGN-DAY", "일"), + Map.entry("B-DELEGATE-NAME", "[수임자] 수임자 이름"), + Map.entry("B-DELEGATE-RRN", "[수임자] 주민등록번호"), + Map.entry("B-DELEGATE-ADDR", "[수임자] 주소"), + Map.entry("B-DELEGATE-PHONE", "[수임자] 연락처"), + Map.entry("B-DELEGATE-RELATION", "[수임자] 관계"), + Map.entry("B-GRANT-CONTENT", "위임 내용"), + Map.entry("B-SIGN-YEAR", "[서명일자] 연도"), + Map.entry("B-SIGN-MONTH", "[서명일자] 월"), + Map.entry("B-SIGN-DAY", "[서명일자] 일"), Map.entry("B-SIGN-NAME", "위임자"), Map.entry("SIGN-SEAL", "서명") ); this.selfIntro = Map.ofEntries( Map.entry("B-DOC-TYPE", "자기소개서"), - Map.entry("B-SELF-GROWTH", "성장과정"), - Map.entry("B-ACADEMIC-LIFE", "학창시절"), - Map.entry("B-PERSONALITY", "성격소개"), + Map.entry("B-SELF-GROWTH", "성장 과정"), + Map.entry("B-ACADEMIC-LIFE", "학창 시절"), + Map.entry("B-PERSONALITY", "성격 소개"), Map.entry("B-MOTIVATION-FUTURE", "지원동기 및 포부") ); this.report = Map.ofEntries( - Map.entry("B-DOC-TYPE", "일일업무보고서"), + Map.entry("B-DOC-TYPE", "일일 업무 보고서"), Map.entry("B-DATE", "날짜"), Map.entry("B-NAME", "성명"), Map.entry("B-DEPT", "부서"), Map.entry("B-POSITION", "직책"), Map.entry("B-HEADER-TODAY-WORK", "금일 업무 요약"), - Map.entry("B-TODAY-WORK-TIME", "업무 시간"), - Map.entry("B-TODAY-WORK-TITLE", "업무명"), - Map.entry("B-TODAY-WORK-DETAIL", "상세 내용"), - Map.entry("B-TODAY-WORK-NOTE", "특이사항"), + Map.entry("B-TODAY-WORK-TIME", "[금일 업무] 업무 시간"), + Map.entry("B-TODAY-WORK-TITLE", "[금일 업무] 업무명"), + Map.entry("B-TODAY-WORK-DETAIL", "[금일 업무] 상세 내용"), + Map.entry("B-TODAY-WORK-NOTE", "[금일 업무] 특이사항"), Map.entry("B-HEADER-TOMORROW-WORK", "익일 업무 계획"), - Map.entry("B-TOMORROW-WORK-AM-PLAN", "오전 업무 계획"), - Map.entry("B-TOMORROW-WORK-PM-PLAN", "오후 업무 계획"), + Map.entry("B-TOMORROW-WORK-AM-PLAN", "익일 오전 업무 계획"), + Map.entry("B-TOMORROW-WORK-PM-PLAN", "익일 오후 업무 계획"), Map.entry("B-REPORT-ISSUE", "건의 및 보고사항") ); this.common = Map.ofEntries( - Map.entry("B-SIGN-YEAR", "년"), - Map.entry("B-SIGN-MONTH", "월"), - Map.entry("B-SIGN-DAY", "일"), + Map.entry("B-SIGN-YEAR", "[서명일자] 연도"), + Map.entry("B-SIGN-MONTH", "[서명일자] 월"), + Map.entry("B-SIGN-DAY", "[서명 일자] 일"), Map.entry("B-SIGN-NAME", "지원자"), Map.entry("B-DATE-DOCUMENT", "작성일자"), Map.entry("B-SIGN-SEAL", "(인)") diff --git a/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldTargetMapper.java b/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldTargetMapper.java index fc14d3b..b90c2b6 100644 --- a/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldTargetMapper.java +++ b/src/main/java/Sprout_Squad/EyeOn/global/flask/mapper/FieldTargetMapper.java @@ -93,7 +93,7 @@ public class FieldTargetMapper { map.put("B-PERSONAL-NAME", "B-PERSONAL-NAME-FIELD"); map.put("B-PERSONAL-PHONE", "B-PERSONAL-PHONE-FIELD"); map.put("B-PERSONAL-RRN", "B-PERSONAL-RRN-FIELD"); - map.put("B-PERSONAL-PHOTO", "B-PERSONAL-PHOTO-FIELD"); + map.put("B-PERSONAL-PHOTO", "B-PERSONAL-PHOTO"); fieldToTargetField = Collections.unmodifiableMap(map); } diff --git a/src/main/java/Sprout_Squad/EyeOn/global/flask/service/FlaskService.java b/src/main/java/Sprout_Squad/EyeOn/global/flask/service/FlaskService.java index c755ed3..087b559 100644 --- a/src/main/java/Sprout_Squad/EyeOn/global/flask/service/FlaskService.java +++ b/src/main/java/Sprout_Squad/EyeOn/global/flask/service/FlaskService.java @@ -165,6 +165,7 @@ private Map getLabelMap(String docType){ */ private String resolveValue(String baseLabel, User user) { return switch (baseLabel) { + case "B-PERSONAL-PHOTO" -> user.getProfileImageUrl(); case "B-PERSONAL-NAME", "B-GRANTOR-NAME", "B-DELEGATE-NAME", "B-NAME", "B-SIGN-NAME" -> user.getName(); case "B-PERSONAL-RRN", "B-GRANTOR-RRN", "B-DELEGATE-RRN" -> user.getResidentNumber(); case "B-PERSONAL-PHONE", "B-GRANTOR-PHONE", "B-DELEGATE-PHONE" -> user.getPhoneNumber(); @@ -222,7 +223,7 @@ public List getFieldForWrite(GetModelRes getModelRes, UserP for (int i = 0; i < labels.size(); i++) { String label = labels.get(i); - if (label.endsWith("-FIELD")) { + if (label.endsWith("-FIELD") || label.equals("B-PERSONAL-PHOTO")) { String field = label.replace("-FIELD", ""); String targetField = label; String displayName = labelMap.getOrDefault(field, field);