-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 계약서 내보내기 #93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feat] 계약서 내보내기 #93
Conversation
…/contract-export
|
Caution Review failedThe pull request is closed. WalkthroughCI/CD workflow updates image naming and deploy source. Dockerfile now copies Firebase service account into classpath. A large contract export/signing feature is added: new REST/WebSocket endpoints, Redis-backed sync service, DTOs/VOs, MyBatis mapper/XML, S3 byte APIs, utilities (encryption, file, number formatting), and servlet config/CORS changes. Some legacy chat methods are removed. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant U as User (Owner/Buyer)
participant WS as WebSocket (STOMP)
participant Sync as ContractExportSyncService
participant Redis as Redis
participant S3 as S3
participant AI as AI Server
participant Svc as ContractService
U->>WS: /contract/{id}/export/join
WS->>Sync: getExportStatus(id)
Sync->>Redis: load or init status
Redis-->>Sync: status
Sync-->>WS: status
WS-->>U: status
U->>WS: submitSignature(SignatureSubmitDTO)
WS->>Sync: updateSignature(id, dto)
Sync->>Redis: save status (owner/buyer signatures)
alt both signatures present
Sync->>Svc: generateContractWithSignatures(...)
Svc->>AI: request PDF with signatures
AI-->>Svc: PDF bytes (or fail -> fallback)
Svc->>S3: upload temp/signed
S3-->>Svc: URL/Key
Sync->>Redis: update status (generation)
end
Sync-->>WS: updated status
WS-->>U: updated status
U->>WS: submitPassword(PasswordSubmitDTO)
WS->>Sync: updatePassword(id, dto)
Sync->>Redis: store per-role password
alt both passwords set
Sync->>Sync: generateFinalPdf(id)
Sync->>Svc: saveFinalContract(...)
Svc->>S3: upload encrypted final PDF
S3-->>Svc: URL/Key
Sync->>Redis: mark complete + finalPdfUrl
Sync-->>WS: broadcast status complete
end
sequenceDiagram
autonumber
participant U as User
participant REST as ContractControllerImpl
participant Sync as ContractExportSyncService
participant Svc as ContractService
participant S3 as S3
participant Redis as Redis
U->>REST: GET /export/preview or /start
REST->>Svc: startContractExport / preview generation
Svc-->>REST: PDF bytes or temp URL
REST-->>U: PDF bytes/URL
U->>REST: POST /finalContract (password/DTO)
REST->>Svc: saveFinalContract(...)
Svc->>S3: upload encrypted PDF
S3-->>Svc: URL
Svc-->>REST: bytes/ack
REST-->>U: response
U->>REST: GET /download-pdf
REST->>Svc: getSignedPdfWithPassword via Sync
Sync->>Redis: fetch role/passwords
Sync->>S3: download encrypted PDF
S3-->>Sync: bytes
Sync-->>REST: bytes
REST-->>U: PDF stream
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ast-grep (0.38.6)src/main/java/org/scoula/domain/chat/service/ContractChatServiceImpl.javasrc/main/java/org/scoula/domain/contract/service/ContractServiceImpl.javaTip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. 📜 Recent review detailsConfiguration used: CodeRabbit UI 💡 Knowledge Base configuration:
You can enable these sources in your CodeRabbit configuration. 📒 Files selected for processing (36)
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
🚀 관련 이슈
🔑 주요 변경사항
✔️ 체크 리스트
mainbranch에 실수로 PR 생성 금지)📢 To Reviewers
📸 스크린샷 or 실행영상
Summary by CodeRabbit
신규 기능
개선
작업