Compare commits

...

355 Commits

Author SHA1 Message Date
69571e86b8 refactor: update Prisma schema to enhance data models
- Added BC_QM_BUILDER, BC_QM_TERMS, BC_QM_USER, IF_PERSON_OFFICE_MAPPING, MS_CUST_AGENCY_STOREID, MS_CUST_H, MS_CUST_PERSON, MS_CUST_STOREID, MS_CUST_STOREID_ADDITNL models to the Prisma schema for improved data structure.
- Reintroduced CONSTRUCTION_POINT_ID and SUBMISSION_TARGET_NM fields in SD_SURVEY_SALES_BASIC_INFO model for consistency and enhanced data representation.
2025-06-02 11:34:25 +09:00
ca45c68b9d refactor: update builderNm field in session management
- Set builderNm in session and response payload based on user data for improved session tracking.
- Ensured consistency in session management structures.
2025-06-02 10:15:50 +09:00
8a1313a964 chore: update environment configuration files to include EMAIL_TITLE_PREFIX
- Added EMAIL_TITLE_PREFIX variable to .env.development for system test identification.
- Cleared EMAIL_TITLE_PREFIX in .env.localhost and .env.production for consistency across environments.
2025-06-02 10:11:22 +09:00
fe96acebec refactor: add builderNm field to session management
- Added builderNm field to both SessionData interface and initial state for enhanced session tracking.
- Ensured consistency across session management structures.
2025-05-30 17:42:11 +09:00
53966a16e1 refactor: enhance session management by adding builderNm field
- Introduced builderNm field to SessionData interface for improved session tracking.
- Updated API routes to set builderNm based on user data.
- Modified useAxios hook to manage spinner visibility more effectively.
- Adjusted ReactQueryProvider to disable retry on queries for better performance.
2025-05-30 17:12:54 +09:00
78beaa7b8a refactor: add SUBMISSION_TARGET_NM field to SD_SURVEY_SALES_BASIC_INFO model
- Introduced SUBMISSION_TARGET_NM to enhance the data structure of the SD_SURVEY_SALES_BASIC_INFO model.
- Ensured consistency with existing field types and structure.
2025-05-30 16:47:16 +09:00
c2e76fa764 refactor: update SD_SURVEY_SALES_BASIC_INFO model to include CONSTRUCTION_POINT_ID field
- Added CONSTRUCTION_POINT_ID to the SD_SURVEY_SALES_BASIC_INFO model for improved data structure.
- Maintained existing fields and their types for consistency.
2025-05-30 16:21:42 +09:00
0bcb0f58e5 docs: add documentation for root layout structure and component hierarchy
- Introduced a new markdown file detailing the root layout structure used across the application.
- Included a mermaid diagram to illustrate the component hierarchy and data flow.
- Documented key components such as providers, layout components, and session management details.
- Emphasized server-side session management and performance optimization strategies.
2025-05-30 15:30:31 +09:00
3088c88122 docs: remove cautionary notes on database initialization from README
- Deleted warnings regarding the execution of database initialization commands to streamline the setup instructions.
- Maintained focus on essential setup steps for development environment.
2025-05-30 11:18:44 +09:00
721edddbe0 docs: enhance README with highlighted warnings and recommendations for Prisma ORM usage
- Updated section on Prisma ORM to emphasize caution with red text for potential risks and recommendations.
- Ensured clarity on the importance of backing up the schema before executing database commands.
2025-05-30 11:17:46 +09:00
510f886220 docs: update README with project overview, setup instructions, and Prisma ORM usage guidelines
- Added comprehensive project overview and technology stack.
- Included setup instructions for development and production environments.
- Documented project structure and best practices for using Prisma ORM, highlighting potential risks and recommendations.
2025-05-30 10:31:08 +09:00
941c0921c9 Merge pull request 'refactor: db 스키마 일부 변경에 따른 prisma 객체 동기화' (#53) from feature/suitable into dev
Reviewed-on: #53
2025-05-30 10:11:44 +09:00
e35cc50660 refactor: db 스키마 일부 변경에 따른 prisma 객체 동기화 2025-05-30 10:09:20 +09:00
d24d994318 Merge pull request 'feature/inquiry - Q.CAST 문의 구현' (#52) from feature/inquiry into dev
Reviewed-on: #52
2025-05-29 16:32:09 +09:00
7f14135616 fix: resolve file download error
- content-type이 text/html 일 경우에만 에러 핸들링, 이외 타입은 octet-stream으로 반환
2025-05-29 13:47:07 +09:00
8c36446de7 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-29 13:29:36 +09:00
f0b23c35af feat: change the order of fields at inquiry regist, detail page 2025-05-29 11:35:19 +09:00
37435d2cca feat: add documentation for Login component, project structure, and login process
- Introduced diagrams for the Login component structure, project architecture, and login sequence.
- Detailed state management, external hooks, event handling, and UI components in the Login documentation.
- Provided an overview of the component relationships and roles within the application architecture.
2025-05-29 10:32:10 +09:00
7078bd15af Merge remote-tracking branch 'origin/dev' into dev 2025-05-29 10:23:43 +09:00
f1617045a5 chore: update environment files to use localhost for API URLs and add nodemailer types to package-lock 2025-05-29 10:23:35 +09:00
697137619e Merge pull request 'feat: 지붕재적합성 상세팝업 데이터 표출 추가 및 TODO 수정' (#51) from feature/suitable into dev
Reviewed-on: #51
2025-05-29 10:13:18 +09:00
5be7237aa6 feat: 지붕재적합성 상세팝업 데이터 표출 추가 및 TODO 수정 2025-05-29 10:07:05 +09:00
02ce7217a7 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-28 18:09:12 +09:00
4d16276221 Merge pull request 'feature/survey' (#50) from feature/survey into dev
Reviewed-on: #50
2025-05-28 17:09:14 +09:00
0465f2306b chore: change set env 2025-05-28 17:07:05 +09:00
495aeef2c2 chore: change set env 2025-05-28 17:04:26 +09:00
8f365f998e fix: add finally function after failed send email 2025-05-28 17:00:22 +09:00
03d91f3fa0 feat: implement spinning when generate survey-sale pdf
- 조사매물 pdf 다운로드 기능 완성
- 지붕 정보 주택 구조 순서 radiobox로 변경경
2025-05-28 16:49:45 +09:00
23164a3f8c Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-28 15:38:26 +09:00
56f8ad9aaf chore: update API URL in development and localhost environment files; enhance SurveySaleDownloadPdf component to handle null values gracefully 2025-05-28 15:38:18 +09:00
dc0009ddd7 chore: add SMTP configuration to environment files and integrate nodemailer for email functionality 2025-05-28 15:37:47 +09:00
0d8dc7dc02 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-28 14:59:44 +09:00
5014162f2f chore: comment out axios login request in Login component 2025-05-28 14:45:52 +09:00
82cdb2a755 chore: revert QSP API URL to previous configuration in Login component 2025-05-28 14:43:10 +09:00
34883e166a Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-28 14:35:23 +09:00
479643216c chore: update QSP API URL in development and localhost environment files 2025-05-28 14:35:08 +09:00
76f85f65c9 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-28 14:26:58 +09:00
3a8c431f41 chore: update QSP API URL in local environment configuration 2025-05-28 14:26:43 +09:00
221c66f293 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-28 14:22:34 +09:00
67ba964eec feat: add data for download survey-sale pdf 2025-05-28 14:22:22 +09:00
c027a3977b chore: update QSP API URL in development and production environment files 2025-05-28 14:21:24 +09:00
52a2032a8c feat: implement file download function 2025-05-28 11:25:30 +09:00
70903cd779 Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-28 10:22:31 +09:00
478ae3a784 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-28 10:22:08 +09:00
6d837d3e98 feat: implement SurveySaleDownloadPdf component and integrate with survey details for PDF generation 2025-05-28 10:21:26 +09:00
d9824c6b9b Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-27 17:53:02 +09:00
d599f28522 feat: add fetch commonCode for get email from your dealer base representative 2025-05-27 17:52:52 +09:00
2a3a726b84 refactor: remove DownloadPdf component and its usage in the PDF page 2025-05-27 17:43:46 +09:00
1adbb24daa feat: add commonCodeList data at detail page 2025-05-27 15:30:54 +09:00
84ebb8e021 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-27 14:32:53 +09:00
46fe524f79 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-27 14:30:57 +09:00
5fd5e852c3 feat: add selectbox for select submission point for role Admin (Q.ORDER) 2025-05-27 14:30:44 +09:00
014f473d85 Merge pull request 'feature/survey : 조사매물 오류 해결 및 변경사항 적용' (#49) from feature/survey into dev
Reviewed-on: #49
2025-05-27 13:46:23 +09:00
ea46635d7a Merge pull request 'feat: 지붕재적합성 검색조건 그룹코드로 변경, 데이터 선택 기능 수정' (#47) from feature/suitable into dev
Reviewed-on: #47
2025-05-27 13:46:08 +09:00
7f0d1cf877 feat: 지붕재 적합성 검색어 30글자 제한 처리 추가 2025-05-27 13:39:11 +09:00
94a1352817 fix: update baseUrl in local config to use localhost 2025-05-27 13:25:01 +09:00
efd3272ff4 fix: setOffest when the select sort option 2025-05-27 13:16:00 +09:00
25935a96be fix: delete submit, exit button at ZipCodePopup page 2025-05-27 11:22:58 +09:00
c8692577fb Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-27 10:33:10 +09:00
69b1dd6955 chore: set inquiry api url 2025-05-27 10:32:40 +09:00
ec910bc3de git clear cache 2025-05-27 10:32:24 +09:00
a14dd96147 Update .gitignore to track .env files 2025-05-27 10:28:06 +09:00
35b1002908 feat: add submit popup page
- 제출 팝업 페이지 추가
- 조사매물 작성 시 숫자 입력 항목 모바일에서 숫자 키패드만 나오도록 설정
- 제출 필수값 validation 구현
2025-05-27 09:08:45 +09:00
55c15c44ac refactor: 검색조건 컴포넌트 분리 2025-05-26 17:15:44 +09:00
e482ba1400 feat: 검색조건 변경 시 선택아이템 초기화 2025-05-26 17:09:03 +09:00
94ce738a73 feat: 지붕재적합성 검색조건 그룹코드로 변경 2025-05-26 17:06:33 +09:00
8bcffd43bb feat: 지붕재적합성 초기화면 전체 데이터 미표출, 검색조건 그룹코드로 변경 2025-05-26 16:31:21 +09:00
ff099f348e fix: change InquiryList type column 2025-05-26 13:33:16 +09:00
0fbb8025f2 fix: change SRL_NO save rules 2025-05-26 10:58:25 +09:00
36bcdd00a1 feat: 지붕재 적합성 전체선택/전체해제 기능 및 관련 기능 추가
- 지붕재 적합성 전체선택/전체해제 기능 추가
- 검색조건에 따른 데이터 조회 api 추가
- 선택된 데이터 조회 api 추가
2025-05-23 17:14:07 +09:00
1c66131111 Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-23 14:08:10 +09:00
b2aefe7ea8 feat: add REPRESENTATIVE_ID STORE_ID column, implement set value of storeId, representativeId for filtering survey List by member role 2025-05-23 14:04:01 +09:00
d718012f6f feat: 지붕재적합성 상세팝업 마크업 적용 및 팝업 on/off 연결 2025-05-23 13:31:42 +09:00
d2877ea440 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-23 13:25:34 +09:00
991cb5f0b2 fix: solve inquiry list startRow and endRow parameters not initializing 2025-05-23 13:23:12 +09:00
e833e25048 feat: Add representative and store ID fields to SD_SURVEY_SALES_BASIC_INFO model in Prisma schema 2025-05-23 11:22:02 +09:00
2b8cbe1aed Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-23 11:20:17 +09:00
1f044337d6 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-23 11:15:57 +09:00
173401b67d fix: delete console.log 2025-05-23 11:15:46 +09:00
b45a7f4cba Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-23 11:13:55 +09:00
149be24e9a fix: change search by srlNo instead of id when search option is registration number 2025-05-23 11:12:37 +09:00
431512f5bf fix: change search by srlNo instead of id when search option is registration number 2025-05-23 11:03:41 +09:00
0521c88e79 fix: reslove survey list not initializing error when enter search keywords 2025-05-23 10:52:11 +09:00
916946956a Merge pull request 'feature/suitable' (#44) from feature/suitable into dev
Reviewed-on: #44
2025-05-23 10:50:07 +09:00
36d5191311 feat: 지붕재적합성 메인 체크 시 하위 전체체크 처리 추가 2025-05-23 10:45:14 +09:00
57a1e6a69b fix: inquiryList reactQuery delete return placeholderData 2025-05-23 10:38:35 +09:00
29e7675ada refactor: Enhance authentication API and login component functionality
- Updated authentication API to improve response handling and session management.
- Refactored login component to include validation and keyboard event handling for login submission.
- Improved user feedback by displaying alerts for login success and failure messages.
2025-05-23 10:06:45 +09:00
a25538319a refactor: axios 호출 수정 2025-05-23 09:52:08 +09:00
b2c22dc5a5 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-22 18:16:56 +09:00
2e0ff4ae6f feat: 지붕재적합성 조회 페이징&인피니티쿼리 적용, 체크박스 선택 처리 추가 2025-05-22 18:16:31 +09:00
31a63cb643 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-22 18:13:26 +09:00
50a2335590 feat: get inquiry type common code 2025-05-22 18:13:16 +09:00
a5696984fc refactor: Update middleware and EdgeProvider for session handling
- Modified middleware matcher to exclude additional routes for improved session management.
- Added login redirection logic in EdgeProvider to ensure users are redirected to the login page if not authenticated.
2025-05-22 17:08:54 +09:00
80194efec1 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-22 17:05:09 +09:00
c76526bf9b chore: Update package.json scripts and enhance middleware session handling
- Added local build and start scripts to package.json for improved local development.
- Commented out login redirection logic in middleware for future implementation.
- Introduced a new checkbox in the sample page for enhanced UI functionality.
- Refactored useAxios to improve request and response handling with better modularization.
- Updated checkbox styles in SCSS for improved visual consistency.
2025-05-22 16:57:54 +09:00
d31a189899 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-22 16:24:50 +09:00
e8498948df refactor: Update tracking function to utilize useAxios for API calls
- Replaced direct axiosInstance import with useAxios hook for improved API management.
- Enhanced code structure for better readability and maintainability.
2025-05-22 15:07:41 +09:00
0a88c80bd9 refactor: Update Header component to utilize useAxios for API integration
- Replaced direct axiosInstance import with useAxios hook for improved API management.
- Cleaned up imports and enhanced code structure for better readability.
2025-05-22 15:04:59 +09:00
e846b55faa chore: Update environment configuration and enhance API integration
- Added NEXT_PUBLIC_RUN_MODE to .env files for environment differentiation.
- Introduced .env.localhost for local development settings.
- Updated .env.production with the correct API URL.
- Modified package.json scripts to utilize env-cmd for environment-specific commands.
- Created a common configuration module to manage environment-specific settings.
- Refactored useAxios to utilize the new configuration for base URL management.
- Enhanced Footer component to display current configuration values.
2025-05-22 15:00:41 +09:00
333f06bb64 fix : changed to using axios in custom hooks to apply interceptor from axios 2025-05-22 14:31:25 +09:00
6991bcbf13 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-22 14:27:22 +09:00
b0878c853b feat: add inquiry types code option & filtering inquiry list by answer exist 2025-05-22 14:26:51 +09:00
ac575d76d1 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-22 14:15:43 +09:00
2c5ddad29b refactor: Enhance survey hook and integrate spinner functionality
- Refactored useSurvey hook to utilize useAxios for API calls.
- Added spinner visibility management in EdgeProvider to improve loading feedback.
- Cleaned up imports and organized code structure for better readability.
2025-05-22 14:08:23 +09:00
0e7de68f29 feat: Add Spinner component and update styles
- Introduced a new Spinner component for loading indicators.
- Removed unused btn_arr_up.svg asset and related styles.
- Updated radio button styles for improved UI consistency.
- Added new PDF view styles for enhanced document presentation.
- Included spinner styles for better loading visuals.
2025-05-22 13:24:39 +09:00
956e4ed910 Merge pull request 'feature/survey - 조사매물 목록 조회 필터링 조건 변경 및 임시저장 구현' (#42) from feature/survey into dev
Reviewed-on: #42
2025-05-22 10:27:55 +09:00
f74c0a6136 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-22 09:53:26 +09:00
4a7051fdd1 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-22 09:52:05 +09:00
ea7180b527 refactor: Move login redirection logic into useEffect for improved session handling and code clarity 2025-05-22 09:49:46 +09:00
a013cea464 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-22 09:38:18 +09:00
bdbdf9997f fix: change the SRL_NO at temporary save 2025-05-22 09:05:41 +09:00
a483ffce44 fix: Detailed error resolution
- 단열재 유무 기타 input 창 나오지 않는 오류 해결
- T01 임시저장 데이터 조회 가능하도록 로직 수정정
2025-05-21 18:21:22 +09:00
1057c29995 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-21 17:54:23 +09:00
333943c651 feat: add SUBMISSION_TARGET_ID, SRL_NO Column
- 제출 대상 판매점 ID, 일련번호 컬럼 추가
- 임시 저장 시 일련번호에 '임시저장000' 으로 저장
- 조사매물 목록 조회 필터링 조건 수정
- url 에러 핸들링
2025-05-21 17:53:58 +09:00
c4ed298db5 refactor: Remove user-related API routes to streamline codebase and improve maintainability 2025-05-21 15:49:50 +09:00
13eb23863b style: Add minWidth to DownloadPDF component for consistent layout 2025-05-21 15:39:10 +09:00
68da6f7f0f Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-21 14:51:10 +09:00
0cd95c6aff refactor: Make UPT_DT field optional in MS_SUITABLE_ROOF_MATERIAL_GROUP model for improved data flexibility 2025-05-21 14:14:37 +09:00
a964e31dee fix: Enable login redirection in middleware to ensure authenticated access to protected routes 2025-05-21 14:12:16 +09:00
ac59d626ab refactor: Remove User model from Prisma schema to streamline database structure and improve maintainability 2025-05-21 14:10:57 +09:00
0d96d49281 refactor: Update BC_COMM_H model fields to be optional for improved flexibility in data handling 2025-05-21 13:26:59 +09:00
dd34c51dc1 refactor: Remove console log from tracking function to clean up output and improve code clarity 2025-05-21 11:33:18 +09:00
45f523447a feat: Add email validation in Login component and implement database connection utility; enhance login logic with partner status check 2025-05-21 11:31:19 +09:00
e69c45105e Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-21 11:17:26 +09:00
4e8f698f88 feat: Integrate tracking functionality in authentication API routes for enhanced user activity monitoring; update tracking data structure in tracking route 2025-05-21 11:17:14 +09:00
e66b009dd3 fix: Update session data display in Header component to use store name instead of category; add additional role mapping in README 2025-05-21 11:16:47 +09:00
1ab4f82c32 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-21 11:09:05 +09:00
81cb60e7ed Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-21 11:08:55 +09:00
5f63a38811 Merge remote-tracking branch 'origin/dev' into dev 2025-05-21 11:08:25 +09:00
c10d1c3b5c refactor: Update SD_SURVEY_SALES_BASIC_INFO model to include SRL_NO and SUBMISSION_TARGET_ID fields for enhanced data tracking 2025-05-21 11:08:07 +09:00
2f8823c252 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-21 10:57:12 +09:00
38929b632f Merge pull request 'fix: 카멜케이스 변환 함수 내 소문자 스네이크케이스도 대응되도록 조건 추가' (#41) from feature/suitable-api into dev
Reviewed-on: #41
2025-05-21 10:56:31 +09:00
aa4292789a fix: 카멜케이스 변환 함수 내 소문자 스네이크케이스도 대응되도록 조건 추가 2025-05-21 10:46:57 +09:00
a58c58afca fix: fix prisma syntax for filtering temporary save data for T01 to Read survey list 2025-05-21 10:29:08 +09:00
b3550ff497 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-21 10:19:49 +09:00
67d587acf5 feat: Implement Separate temporary save data logic 2025-05-21 10:19:38 +09:00
7fa03e0713 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-21 09:56:54 +09:00
73b042b0ac refactor: Enhance authentication API to streamline session data handling and role assignment; update login response structure and conditionally render UI elements based on user role 2025-05-20 18:55:24 +09:00
7ae297f3b6 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-20 17:56:21 +09:00
905a309a9c fix: survey update, create, submit logic fix
- 조사매물 수정, 작성, 조회 시 각 컴포넌트에 데이터 적용 안되던 문제 해결
- 조사매물 제출 시 데이터 저장 안되는 문제 해결결
2025-05-20 17:56:09 +09:00
6033054c6e chore: Update environment variables for database connection and refactor authentication API routes to improve session handling and login logic 2025-05-20 17:08:25 +09:00
6ec1d3fa9f feat: 지붕재 적합성 조회 raw query 방식으로 변경 및 테스트 코드 삭제 2025-05-20 16:39:06 +09:00
nalpari
534e672ad5 Merge branch 'feature/suitable' into dev 2025-05-20 14:24:20 +09:00
nalpari
c1641e167d ...2 2025-05-20 14:19:00 +09:00
nalpari
fcd80cbe3b ... 2025-05-20 14:16:19 +09:00
09795f71ac Merge pull request 'fix: convert camelcase function move to util.js' (#40) from feature/survey into dev
Reviewed-on: #40
2025-05-20 14:04:21 +09:00
d21865ca65 fix: convert camelcase function move to util.js 2025-05-20 14:01:22 +09:00
2d1184e1c0 chore: Update environment variables for database connection and add MySQL2 dependency; implement partner API route and database query functionality 2025-05-20 13:59:58 +09:00
e2e5a484ca Merge pull request 'feat: seporate save/submit/update process for reuse component' (#39) from feature/survey into dev
Reviewed-on: #39
2025-05-20 13:57:22 +09:00
f54260fc27 feat: seporate save/submit/update process for reuse component 2025-05-20 13:53:44 +09:00
7a6b9cbf92 feat: 지붕재 적합성 조회 데이터 포멧 변경 및 조회 로직 수정 2025-05-20 13:51:49 +09:00
57d6202d5c Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-19 13:55:08 +09:00
2e66ff5782 Merge pull request 'feature/survey' (#38) from feature/survey into dev
Reviewed-on: #38
2025-05-19 13:51:57 +09:00
eb1f6b23e7 refactor: Update Survey components and API routes for improved data handling and structure 2025-05-19 13:47:57 +09:00
8ae0f62c81 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-19 13:46:21 +09:00
ab86e16bc9 fix: Add indexes to MS_SUITABLE_DETAIL and MS_SUITABLE_MAIN models in Prisma schema for improved query performance 2025-05-19 13:45:06 +09:00
09f280644f Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-19 08:49:11 +09:00
b02f3e85a7 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-16 18:31:33 +09:00
8d5d0b6244 fix: Update MS_USR_TRK model in Prisma schema to use uppercase 'DATA' field 2025-05-16 18:29:16 +09:00
9c0440b233 feat: add Survey new Design Component 2025-05-16 18:28:36 +09:00
f53c7410e2 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-16 17:59:29 +09:00
e207cee460 fix: Correct axios instance reference in response interceptor for error handling 2025-05-16 17:59:25 +09:00
69b08706aa fix: Add response interceptor to axios instance for error handling 2025-05-16 17:58:00 +09:00
5fb1afca39 Merge pull request 'feature/pdf-tracking' (#37) from feature/pdf-tracking into dev
Reviewed-on: #37
2025-05-16 17:46:47 +09:00
nalpari
3d9cd1d992 fix: Update PDF download options to A4 format and portrait orientation 2025-05-16 17:46:02 +09:00
4e8fd462cf feat: add MS_USR_TRK model to Prisma schema, update axios instance with request interceptor, and enhance Footer component with PDF link 2025-05-16 16:56:38 +09:00
398fffb6db Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-16 16:01:26 +09:00
96c725b459 feat: implement inquriy file upload 2025-05-16 15:58:17 +09:00
900e8edcec Merge pull request 'feature/pub' (#36) from feature/pub into dev
Reviewed-on: #36
2025-05-16 15:34:36 +09:00
김민식
e3b755896b [조사매물] 전기.지붕정보, 버튼 폼 추가 2025-05-16 15:33:00 +09:00
김민식
cdae73b95e 🚨chore: Sync Sass
[조사매물] 상세, 수정 퍼블 수정
2025-05-16 15:32:23 +09:00
6bcc466a76 fix: change filtering survey 2025-05-16 14:58:15 +09:00
1d77fec86d fix: change inquiry save parameter type to form data 2025-05-16 14:36:41 +09:00
c653df0ce7 fix: change address input to can change 2025-05-16 11:06:41 +09:00
6b62dfc1f2 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-16 11:03:18 +09:00
e05f142df2 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-16 11:01:53 +09:00
7066d01060 feat: modify inquriy create parameter
- 문의 등록 시 이메일 파라미터 추가
2025-05-16 11:01:39 +09:00
2159bef4e0 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-15 18:33:59 +09:00
21c0a7a3a0 Merge pull request 'feat: scrollTop 기능 추가' (#35) from feature/float-button into dev
Reviewed-on: #35
2025-05-15 18:31:30 +09:00
Daseul Kim
bc3193714a feat: scrollTop 기능 추가 2025-05-15 18:28:31 +09:00
519e2ec195 feat: 지붕재 적합성 범례 default 열기, 지붕재 적합성 버튼 추가 2025-05-15 17:56:56 +09:00
d03c01e3a9 fix: replace img with next/image for optimized loading in MemberInformationPopup 2025-05-15 17:53:14 +09:00
b8ec659ea2 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable
# Conflicts:
#	src/components/suitable/Suitable.tsx
#	src/components/suitable/SuitableCheckData.tsx
#	src/hooks/useSuitable.ts
2025-05-15 17:34:35 +09:00
2e32260fa2 feat: add new SVG icons and update Suitable component with image integration 2025-05-15 17:25:50 +09:00
4d6f5c0e01 Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-15 17:21:50 +09:00
b11cd41ceb fix: delete inquiry test files 2025-05-15 17:19:18 +09:00
5ba6758a6d Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-15 17:16:34 +09:00
c12a010bff fix: delete unused import 2025-05-15 17:10:20 +09:00
ed47d6abf5 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-15 17:02:56 +09:00
beba34321d fix: update authentication flow and enhance API error handling 2025-05-15 17:02:01 +09:00
d7aca7e214 feat: enhance survey sales API with detailed error handling, improved search parameters, and new registration form component 2025-05-15 16:55:36 +09:00
510317c676 feat: implement authentication and survey sales APIs with suitable data structure 2025-05-15 16:30:46 +09:00
7afe408a5f Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-15 15:50:55 +09:00
5f23cf986f Merge pull request '[1:1 문의] 퍼블 수정' (#34) from feature/pub into dev
Reviewed-on: #34
2025-05-15 15:17:04 +09:00
김민식
d5f30a565f [1:1 문의] 퍼블 수정 2025-05-15 15:15:01 +09:00
148ed2dda4 Merge pull request 'feat: add store name and role properties to default session data' (#33) from hotfix/sessionData into dev
Reviewed-on: #33
2025-05-15 15:00:31 +09:00
7a23f02e85 feat: add store name and role properties to default session data 2025-05-15 14:58:25 +09:00
4392802298 feat: 지붕재 적합성 데이터 아코디언 처리 추가, 적합성 아이콘 수정 2025-05-15 14:45:20 +09:00
84771ad742 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-15 13:46:43 +09:00
ff52b2ab56 Merge pull request 'style: 지붕재 적합성 결과 아이콘 css 수정' (#32) from feature/pub into dev
Reviewed-on: #32
2025-05-15 13:46:17 +09:00
Daseul Kim
1185d08c8d style: 지붕재 적합성 결과 아이콘 css 수정 2025-05-15 13:45:29 +09:00
3e7a4140ac docs: 지붕재 적합성 TODO 추가 2025-05-15 13:27:03 +09:00
304fa95e68 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-15 11:31:16 +09:00
c94ced6c77 Merge pull request 'style: 지붕재 적합성 화면 css 수정' (#31) from feature/pub into dev
Reviewed-on: #31
2025-05-15 11:30:09 +09:00
DESKTOP-EJG0M5T\User
6eb94dc82c style: 지붕재 적합성 화면 css 수정 2025-05-15 11:28:29 +09:00
ff644395ec feat: 지붕재 적합성 데이터 조회 기능 추가 2025-05-14 18:12:10 +09:00
02283c3b71 Merge pull request 'feature/userInfo-yoo' (#30) from feature/userInfo-yoo into dev
Reviewed-on: #30
2025-05-14 17:50:38 +09:00
2217426152 feat: implement password change API and update Login and PwResetForm components to utilize local storage for password management 2025-05-14 17:49:59 +09:00
2bfacca06b chore: add usehooks-ts dependency for enhanced hooks management 2025-05-14 16:01:33 +09:00
8034424d15 fix: enhance Header component to manage user session storage and clear session data on logout 2025-05-14 16:01:16 +09:00
4ca4a28c7d Merge pull request 'fix: update MemberInformationPopup to use session store name for display instead of hardcoded value' (#29) from feature/MemberInformationPopup into dev
Reviewed-on: #29
2025-05-14 15:44:13 +09:00
3212763a1b fix: update MemberInformationPopup to use session store name for display instead of hardcoded value 2025-05-14 15:42:35 +09:00
5c0593b755 feat: integrate user info state management in Login and PwResetForm components for enhanced user experience 2025-05-14 14:22:55 +09:00
b4dfc2211f feat: modify inquiry save requestParameter to formdata add files 2025-05-14 11:06:24 +09:00
59b1f3198c Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-14 10:01:32 +09:00
a227ba7115 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-14 10:00:50 +09:00
47be6a4433 feat: add conditions for read survey list on member type 2025-05-14 09:59:12 +09:00
70c45bc182 feat: add password reset functionality to MemberInformationPopup with navigation support 2025-05-13 17:30:19 +09:00
2ba6583ffb fix: update MemberInformationPopup to use session store name for better data accuracy 2025-05-13 17:24:32 +09:00
a4c36474d5 refactor: update side_swiper_icon02.svg to a new design with improved dimensions and paths for better rendering 2025-05-13 17:23:40 +09:00
c545cbab93 Merge branch 'feature/MemberInformationPopup' into dev 2025-05-13 17:22:33 +09:00
a2a2b2e6fa fix: restore storeNm property in session management and adjust padding in check and radio components for improved layout 2025-05-13 17:21:22 +09:00
15e02f60ec Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-13 16:46:08 +09:00
1dcb3add79 fix: change Survey's form by Prisma data type changes 2025-05-13 16:45:47 +09:00
98299ffe92 chore: update @prisma/client and prisma dependencies to version 6.7.0; modify session management in MemberInformationPopup and Header components to utilize session data 2025-05-13 16:10:22 +09:00
f33786a8eb feat: implement user role management in session and update Header component to display user ID 2025-05-13 14:41:09 +09:00
cacf351a7c Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-13 14:17:24 +09:00
78f8072211 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-13 14:15:33 +09:00
32a8ec72ef feat: implement inquiry create, read function with Qcast API 2025-05-13 14:13:31 +09:00
e5affe0df5 chore: update environment variables and dependencies; add database configuration for QPARTNER login 2025-05-13 13:28:46 +09:00
f8b11c3e7e Merge pull request 'feature/suitable' (#28) from feature/suitable into dev
Reviewed-on: #28
2025-05-13 11:03:33 +09:00
9f4c3de2cf refactor: 지붕재 적합성 테이블 컬럼명 공통코드화 2025-05-13 11:00:20 +09:00
2c75a6b416 refactor: 지붕재 적합성 테이블 컬럼명 수정 2025-05-13 10:51:17 +09:00
7973d7c2b1 Merge pull request 'feature/suitable' (#26) from feature/suitable into dev
Reviewed-on: #26
2025-05-13 09:42:19 +09:00
186843e154 remove: 미사용 테스트 파일 삭제 2025-05-13 09:40:08 +09:00
bc1c1579cc feat: 지붕재 적합성 데이터 관련 테이블 모델 추가 2025-05-13 09:35:21 +09:00
0cdd7cdebd Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-13 09:33:10 +09:00
8ad1ed4bcf Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/inquiry 2025-05-13 09:22:59 +09:00
e3940f72c8 feat: implement Qsp Inquriy API Request, Response type 2025-05-13 09:22:35 +09:00
778d3b6be8 refactor: enhance DoubleBtnAlert and Header components with improved button handling and confirm dialog integration 2025-05-12 18:24:18 +09:00
b4e009cb8e chore: add inquiry API URL to development and production environment files 2025-05-12 18:24:11 +09:00
34319dadcd fix: Change the policy to allow Update, Delete, Submit to writer only
- 담당자가 로그인 한 유저 이름과 같을 때 수정, 삭제, 제출 가능하도록 변경
2025-05-12 15:45:37 +09:00
2d914d3798 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-12 15:03:49 +09:00
bd89552cc7 Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-12 14:47:07 +09:00
김민식
493fd6cb9d common 파일 추가 2025-05-12 14:46:13 +09:00
6bbd1a6174 Merge branch 'feature/survey' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-12 14:40:10 +09:00
7173ec2496 feat: implement UserType custom hook for filtering login user type 2025-05-12 14:37:47 +09:00
김민식
c5db65fc4d 우편번호 조회 기능 추가 2025-05-12 14:35:44 +09:00
69d81d892d fix: conditionally update session state in EdgeProvider based on presence of sessionData 2025-05-12 13:34:14 +09:00
e84ef1b7a0 fix: update session data handling in RootLayout to conditionally stringify session based on login status 2025-05-12 11:24:32 +09:00
901b7b1ae8 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-12 11:13:54 +09:00
29488b2412 feat: implement survey list filter by Member Type for temporary
- 로그인 유저 타입 별 조사매물 필터링 임시 구현
- 로그인 유저 타입 구현 이후 변경 예정
2025-05-12 11:11:52 +09:00
6cab9cdde3 feat: implement session management in RootLayout and pass session data to EdgeProvider for enhanced state handling 2025-05-12 11:01:07 +09:00
2eacdda23e refactor: remove alertSwitch store and simplify alert handling in EdgeProvider 2025-05-12 10:37:58 +09:00
da0d77724d fix: correct layout interface and enhance user session management 2025-05-12 10:21:01 +09:00
db2daf8ba0 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-12 09:57:05 +09:00
ce00cc2ba7 refactor: simplify Header component by removing unused props and updating button action for password reset 2025-05-09 18:21:35 +09:00
e6d346c5da refactor: remove unused title variable in Header component to streamline code 2025-05-09 18:14:55 +09:00
178e9c0d3e refactor: update layout components to use 'import type' for ReactNode and enhance Header component with dynamic title retrieval 2025-05-09 18:13:40 +09:00
c06a96bc1b Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-09 17:41:41 +09:00
8bc629698a feat: implement SurveyDetail page for roof-information
- 조사매물 지붕정보 상세페이지 구현
2025-05-09 17:41:26 +09:00
3e16d3a767 feat: implement session management with Zustand and enhance login flow in Login component 2025-05-09 16:05:20 +09:00
5e8d2fa8cc feat: enhance DoubleBtnAlert component with dynamic alert messages and button actions 2025-05-09 15:19:03 +09:00
436f149635 feat: implement alert management in EdgeProvider with dynamic alert types 2025-05-09 15:17:19 +09:00
34638ff0f0 fix: Change prisma db URL 2025-05-09 15:16:58 +09:00
65483812a6 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-09 15:11:54 +09:00
95d971b198 feat: remove unused survey sale API routes & add address popup at Survey BasicForm 2025-05-09 15:08:55 +09:00
a6702f52fc feat: add new sample page with various input components and styling for enhanced user interaction 2025-05-09 14:44:07 +09:00
06967d746c refactor: streamline MS_SUITABLE model by removing redundant fields and add new BC_COMM_H and BC_COMM_L models for improved data structure 2025-05-09 13:53:33 +09:00
b61f5205e4 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-05-09 09:49:18 +09:00
b4db26d80a fix: update EdgeProvider to correctly set back button visibility based on pathname 2025-05-08 18:00:57 +09:00
4ab2b225cd feat: add new compliance-related SVG icons for enhanced UI representation 2025-05-08 17:57:48 +09:00
5628d330d5 fix: update button action in Main component to navigate to suitable page for roof material compatibility checks 2025-05-08 17:56:35 +09:00
1746c91742 feat: integrate EdgeProvider for alert management and add Suitable components for roof material compatibility checks 2025-05-08 17:55:24 +09:00
4467c04321 style: update SCSS styles for various components, adding responsive design adjustments and new styles for compliance checks 2025-05-08 17:55:10 +09:00
555e6f3b4a Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-08 17:02:42 +09:00
2397b7f144 feat: add survey roof-info validation when Create, Update
- 조사 매물 생성, 수정 시 각 컬럼 필수값 validation 추가
- 조사 매물 수정 페이지에서 기타 옵션 선택 시 값 초기화 되도록 구현
2025-05-08 17:01:10 +09:00
dfd5ba419b feat: implement SurveyFilteringOptions to global
- 조사매물 검색 조건 zustand 통해 전역으로 관리하도록 구현
2025-05-08 16:58:14 +09:00
b1f81d7853 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable
# Conflicts:
#	src/api/suitable.ts
2025-05-08 15:53:53 +09:00
0d12239460 refactor: expand MS_SUITABLE model in Prisma schema with detailed field definitions and comments for clarity 2025-05-08 15:47:29 +09:00
e355ad5378 refactor: clean up User and MS_SUITABLE models in Prisma schema by removing unnecessary comments and optimizing field definitions 2025-05-08 15:41:12 +09:00
68408eb3c9 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-07 18:09:51 +09:00
115ffb8a74 feat: set SurveyList Filtering
- 조사 매물 목록 페이지 필터링 구현
- 기존 survey-sales 샘플 페이지 모두 삭제
2025-05-07 18:06:10 +09:00
fd27bfe7d0 feat: implement create & update survey roof-information with validate
- 조사 매물 지붕 정보 필수값 적용하여 등록 & 수정 가능하도록 구현
- 조사 매물 상세 & 작성 페이지 Nav 탭 기본 정보 미등록 시 라우팅 안되도록 설정정
2025-05-07 18:05:28 +09:00
692d2b7d84 refactor: comment out login redirection in middleware for future implementation 2025-05-07 17:37:09 +09:00
05f4fe4e94 refactor: enhance session management and routing in middleware and API authentication 2025-05-07 17:16:26 +09:00
5048fe1c08 chore: axios 설정 충돌 해결 2025-05-07 15:17:01 +09:00
c9378dfccd Merge pull request 'snake case -> camel case 변환 로직 추가' (#25) from feature/pub into dev
Reviewed-on: #25
2025-05-07 15:11:04 +09:00
김민식
2166b7836e snake case -> camel case 변환 로직 추가 2025-05-07 15:08:33 +09:00
d340e3d976 Merge pull request 'refactor: remove suitable and surveySales API modules to streamline codebase' (#24) from feature/chore into dev
Reviewed-on: #24
2025-05-07 10:19:02 +09:00
82e198836a refactor: remove suitable and surveySales API modules to streamline codebase 2025-05-07 10:18:28 +09:00
e86c5d18b4 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable
# Conflicts:
#	src/app/api/suitable/list/route.ts
#	src/components/Suitable.tsx
#	src/components/SuitableDetails.tsx
#	src/components/SuitableSearch.tsx
2025-05-07 09:52:10 +09:00
daf9f31733 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-07 09:00:35 +09:00
3cf55e1a9e Merge pull request 'refactor: enhance Header component by organizing useEffect hooks and updating client URL pathname handling' (#23) from feature/pub-yoo into dev
Reviewed-on: #23
2025-05-02 18:47:03 +09:00
3937179279 refactor: enhance Header component by organizing useEffect hooks and updating client URL pathname handling 2025-05-02 18:46:38 +09:00
8153dd9d18 fix: solve conflict
- 충돌 해결 및 이전 sample page 주석 처리
2025-05-02 18:13:12 +09:00
ec9f0fa747 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-02 18:10:48 +09:00
8e563c18dc feat: add muticheckbox component for write roof information 2025-05-02 18:06:25 +09:00
c9812d1159 feat: implement survey basic information update function 2025-05-02 18:05:15 +09:00
9255d3fab7 Merge pull request 'docs: update README to include useEffect organization and client URL pathname changes in Header component' (#22) from feature/pub-yoo into dev
Reviewed-on: #22
2025-05-02 16:58:32 +09:00
4e90af97e7 docs: update README to include useEffect organization and client URL pathname changes in Header component 2025-05-02 16:58:07 +09:00
9ae6cf99f9 Merge pull request 'refactor: integrate side navigation state management into Header component for improved navigation control' (#21) from feature/pub-yoo into dev
Reviewed-on: #21
2025-05-02 16:56:15 +09:00
7046b215c4 refactor: integrate side navigation state management into Header component for improved navigation control 2025-05-02 16:55:47 +09:00
38055365a5 Merge pull request 'refactor: remove inquiry page component and enhance navigation in Main and Header components with router integration' (#20) from feature/pub-yoo into dev
Reviewed-on: #20
2025-05-02 16:35:54 +09:00
e0bdaa4ddf refactor: remove inquiry page component and enhance navigation in Main and Header components with router integration 2025-05-02 16:35:27 +09:00
044385fceb Merge pull request 'refactor: move state management and effect hooks for selected tab into respective form components for better encapsulation' (#19) from feature/pub-yoo into dev
Reviewed-on: #19
2025-05-02 16:03:26 +09:00
ddd41009b7 refactor: move state management and effect hooks for selected tab into respective form components for better encapsulation 2025-05-02 16:02:54 +09:00
eea55ae8b4 Merge pull request 'refactor: implement state management for survey sale pages; add effect hooks to set selected tab state and enhance navigation functionality' (#18) from feature/pub-yoo into dev
Reviewed-on: #18
2025-05-02 15:59:14 +09:00
baf3700f67 refactor: implement state management for survey sale pages; add effect hooks to set selected tab state and enhance navigation functionality 2025-05-02 15:58:49 +09:00
6777fae68c Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-02 15:46:39 +09:00
eaddd3b2a3 Merge pull request 'refactor: enhance layout structure by adding survey sale layout and navigation tab components; streamline page components for improved readability' (#17) from feature/pub-yoo into dev
Reviewed-on: #17
2025-05-02 15:42:32 +09:00
21fd51753e Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-02 15:42:21 +09:00
2a373dd712 refactor: enhance layout structure by adding survey sale layout and navigation tab components; streamline page components for improved readability 2025-05-02 15:41:58 +09:00
fc93853601 feat: implement survey-sale's read list & delete function
- 조사 매물 삭제, 리스트 조회 기능 구현
2025-05-02 15:41:37 +09:00
63750844ee Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-05-02 14:16:09 +09:00
8786824569 Merge pull request 'fix: correct spelling of 'Information' in member information popup handlers' (#16) from feature/pub-yoo into dev
Reviewed-on: #16
2025-05-02 14:13:01 +09:00
nalpari
b56d013dc2 fix: correct spelling of 'Information' in member information popup handlers 2025-05-02 14:12:06 +09:00
631176301b Merge pull request 'refactor: update ZipCodePopup to simplify state management by removing unnecessary parameter in setZipCodePopup function' (#15) from feature/pub-yoo into dev
Reviewed-on: #15
2025-05-02 13:56:00 +09:00
nalpari
3e77864d2e refactor: update ZipCodePopup to simplify state management by removing unnecessary parameter in setZipCodePopup function 2025-05-02 13:55:21 +09:00
041e43f78b Merge pull request 'refactor: remove header and footer imports from basic-info and roof-info pages to streamline layout' (#14) from feature/pub-yoo into dev
Reviewed-on: #14
2025-05-02 13:38:34 +09:00
40952ec38a refactor: remove header and footer imports from basic-info and roof-info pages to streamline layout 2025-05-02 13:38:01 +09:00
1d592b4226 Merge pull request 'refactor: simplify layout by removing header and footer components from survey sale pages; enhance structure for better readability' (#13) from feature/pub-yoo into dev
Reviewed-on: #13
2025-05-02 12:46:26 +09:00
3736b8b094 refactor: simplify layout by removing header and footer components from survey sale pages; enhance structure for better readability 2025-05-02 12:45:40 +09:00
6598dc9459 Merge pull request 'chore: update layout structure by adding header, footer, and float button components; implement member information popup; enhance popup controller for better state management' (#12) from feature/pub-yoo into dev
Reviewed-on: #12
2025-05-02 12:44:13 +09:00
1f102a5054 chore: update layout structure by adding header, footer, and float button components; implement member information popup; enhance popup controller for better state management 2025-05-02 12:43:34 +09:00
ffa72ba9eb fix: Modify react query mutation function
- axiosInstance 함수 정의하지 않고 mutation function에 직접 사용하도록 변경
2025-05-02 11:32:12 +09:00
c5af6b848b Merge pull request 'refactor: enhance login and survey sale pages with structured layout and footer; update popup controller for zip code management' (#11) from feature/pub-yoo into dev
Reviewed-on: #11
2025-05-02 10:19:26 +09:00
933eeb5f2e refactor: enhance login and survey sale pages with structured layout and footer; update popup controller for zip code management 2025-05-02 10:18:43 +09:00
cc8b988fdb Merge pull request 'chore: add swiper dependency and update package lock; remove unused components for suitable and survey sales' (#10) from feature/pub-yoo into dev
Reviewed-on: #10
2025-04-30 18:35:50 +09:00
02f6ad9f46 chore: add swiper dependency and update package lock; remove unused components for suitable and survey sales 2025-04-30 18:34:48 +09:00
b1db492937 Merge pull request 'chore: comment out session check in middleware for future login feature implementation' (#9) from feature/chore into dev
Reviewed-on: #9
2025-04-30 17:36:02 +09:00
71f7913bee chore: comment out session check in middleware for future login feature implementation 2025-04-30 17:35:03 +09:00
b9cc66090e Merge pull request 'chore: remove unused API routes and components for survey sales and suitable details' (#8) from feature/ready-for-work into dev
Reviewed-on: #8
2025-04-30 16:53:36 +09:00
6592b1d3b9 chore: remove unused API routes and components for survey sales and suitable details 2025-04-30 16:52:23 +09:00
9185b5cb7a Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/survey 2025-04-30 16:50:21 +09:00
36ea0dbf19 Merge pull request 'chore: ready for work' (#7) from feature/ready-for-work into dev
Reviewed-on: #7
2025-04-30 16:49:11 +09:00
4afcd7f8eb chore: ready for work 2025-04-30 16:47:44 +09:00
9334773023 fix: prisma db provider 수정정 2025-04-30 16:31:27 +09:00
818ecb724b feat: implement Survey Sale CRUD function
- Survey-sale Create with base information and electronic, roof information
- Survey-sale Update
- Survey-sale Read by filtering
2025-04-30 16:22:08 +09:00
adfe6d7a32 feat: 지붕재 적합성 pdf 기본기능 추가 2025-04-30 16:20:36 +09:00
56c2693bb7 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-04-30 15:07:15 +09:00
17641d2b57 Merge pull request 'chore: Refactor next.config.ts to streamline API rewrites and remove unnecessary CORS headers' (#4) from feature/chore into dev
Reviewed-on: #4
2025-04-30 15:02:59 +09:00
45b244d309 chore: Refactor next.config.ts to streamline API rewrites and remove unnecessary CORS headers 2025-04-30 15:01:23 +09:00
01e41fd1f5 Merge pull request 'feat: Add update functionality to Survey Sales API and enhance UI for managing survey sales details' (#3) from feature/survey-sales into dev
Reviewed-on: #3
2025-04-29 16:58:12 +09:00
f801bacd12 feat: Add update functionality to Survey Sales API and enhance UI for managing survey sales details 2025-04-29 16:56:41 +09:00
08d99fb4e7 feat: Implement survey-sale, inquiry UI base components
- 조사매물, 1:1 문의 목록 더보기 버튼 구현
- 조사매물, 1:1 문의 목록, 상세 페이지, 작성 페이지 샘플 구현
2025-04-29 11:04:22 +09:00
37a40989dd feat: Add scroll to top button at InquiryList page 2025-04-29 11:04:22 +09:00
ab1e89f5d6 feat: implemnet Inquiry list & detail page's events 2025-04-29 11:04:22 +09:00
a684a3e5be feat: Inquiry sample page 구현
- 문의 목록 페이지
- 문의 작성 페이지
2025-04-29 11:04:22 +09:00
68ea411064 Merge branch 'dev' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-04-29 10:55:31 +09:00
65a30310a5 Merge pull request 'chore: Update DATABASE_URL in .env to use the production server address' (#2) from hotfix/chore into dev
Reviewed-on: #2
2025-04-29 10:54:42 +09:00
8240b434fd chore: Update DATABASE_URL in .env to use the production server address 2025-04-29 10:52:59 +09:00
bfbbdc01b8 feat: 지붕재 데이터 선택 기능 추가 2025-04-29 10:49:58 +09:00
d36084add5 Merge branch 'main' of https://git.hanasys.jp/qcast3/onsitesurvey into feature/suitable 2025-04-29 10:41:18 +09:00
cc8ef6a7d3 feat: 지붕재 데이터 조회 기능 추가 2025-04-28 16:51:01 +09:00
253 changed files with 14021 additions and 3683 deletions

3
.env
View File

@ -5,7 +5,8 @@
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
# DATABASE_URL="sqlserver://3team.devgrr.kr:1433;database=onsitesurvey;user=sa;password=1q2w3e4r!;encrypt=true;trustServerCertificate=true;"
DATABASE_URL="sqlserver://172.30.1.35:1433;database=onsitesurvey;user=sa;password=1q2w3e4r!;encrypt=true;trustServerCertificate=true;"
DATABASE_URL="sqlserver://3team.devgrr.kr:1433;database=onsitesurvey;user=sa;password=1q2w3e4r!;encrypt=true;trustServerCertificate=true;"
# DATABASE_URL="mysql://root:root@localhost:3306/onsitesurvey"
# SESSION_PASSWORD="QWERASDFZXCV1234567890REWQFDSAVCXZ"
SESSION_PASSWORD="This application is for mobile field research"

View File

@ -1,3 +1,28 @@
NEXT_PUBLIC_RUN_MODE=development
# 모바일 디바이스로 로컬 서버 확인하려면 자신 IP 주소로 변경
# 다시 로컬에서 개발할때는 localhost로 변경
NEXT_PUBLIC_API_URL=http://localhost:3000
#route handler
NEXT_PUBLIC_API_URL=http://localhost:3000
#qsp 로그인 api
NEXT_PUBLIC_QSP_API_URL=http://1.248.227.176:8120
# NEXT_PUBLIC_QSP_API_URL=https://jp-dev.qsalesplatform.com
#1:1문의 api
NEXT_PUBLIC_INQUIRY_API_URL=https://jp-dev.qsalesplatform.com
EMAIL_TITLE_PREFIX=(System Test)
#QPARTNER 로그인 api
DB_HOST=202.218.61.226
DB_USER=readonly
DB_PASSWORD=aAjmFW12iHKW84l1
DB_DATABASE=qpartners
DB_PORT=3306
SMTP_HOST=autodiscover.qcells.com
SMTP_PORT=25
SMTP_SECURE=false
SMTP_USER=hss404.u021@cleverse.dev
SMTP_PASSWORD=0000
SMTP_FROM=qsalesplatform@qcells.com

28
.env.localhost Normal file
View File

@ -0,0 +1,28 @@
NEXT_PUBLIC_RUN_MODE=local
# 모바일 디바이스로 로컬 서버 확인하려면 자신 IP 주소로 변경
# 다시 로컬에서 개발할때는 localhost로 변경
#route handler
NEXT_PUBLIC_API_URL=http://localhost:3000
#qsp 로그인 api
NEXT_PUBLIC_QSP_API_URL=http://1.248.227.176:8120
# NEXT_PUBLIC_QSP_API_URL=https://jp-dev.qsalesplatform.com
#1:1문의 api
NEXT_PUBLIC_INQUIRY_API_URL=https://jp-dev.qsalesplatform.com
EMAIL_TITLE_PREFIX=
#QPARTNER 로그인 api
DB_HOST=202.218.61.226
DB_USER=readonly
DB_PASSWORD=aAjmFW12iHKW84l1
DB_DATABASE=qpartners
DB_PORT=3306
SMTP_HOST=autodiscover.qcells.com
SMTP_PORT=25
SMTP_SECURE=false
SMTP_USER=hss404.u021@cleverse.dev
SMTP_PASSWORD=0000
SMTP_FROM=qsalesplatform@qcells.com

View File

@ -1 +1,26 @@
NEXT_PUBLIC_API_URL=http://172.30.1.35:3000
NEXT_PUBLIC_RUN_MODE=production
#route handler
NEXT_PUBLIC_API_URL=http://localhost:3000
#qsp 로그인 api
# NEXT_PUBLIC_QSP_API_URL=http://1.248.227.176:8120
NEXT_PUBLIC_QSP_API_URL=https://jp.qsalesplatform.com
#1:1문의 api
NEXT_PUBLIC_INQUIRY_API_URL=http://172.23.4.129:8110
EMAIL_TITLE_PREFIX=
#QPARTNER 로그인 api
DB_HOST=202.218.61.226
DB_USER=readonly
DB_PASSWORD=aAjmFW12iHKW84l1
DB_DATABASE=qpartners
DB_PORT=3306
SMTP_HOST=autodiscover.qcells.com
SMTP_PORT=25
SMTP_SECURE=true
SMTP_USER=hss404.u021@cleverse.dev
SMTP_PASSWORD=0000
SMTP_FROM=qsalesplatform@qcells.com

154
README.md
View File

@ -1,4 +1,71 @@
# prisma 연결
# 모바일 현장 조사 애플리케이션 (onsitesurvey)
## 개요
Next.js와 TypeScript로 구축된 현장 조사용 모바일 애플리케이션입니다.
## 기술 스택
- **프레임워크**: Next.js (App Router)
- **언어**: TypeScript
- **UI 컴포넌트**: Shadcn UI, Radix UI
- **스타일링**: Tailwind CSS
- **상태 관리**: React Query
- **데이터베이스**: Prisma ORM
- **인증**: 세션 기반 인증
## 시작하기
### 필수 요구사항
- Node.js (LTS 버전)
- npm 또는 yarn 또는 pnpm 또는 burn
- Prisma CLI
### 설치 방법
```bash
# 의존성 설치
npm install
# 환경 변수 설정
cp .env.example .env.local
```
### 개발 서버 실행
```bash
# 개발 서버 실행
npm run dev
```
### 프로덕션 빌드
```bash
# 애플리케이션 빌드
npm run build
# 프로덕션 서버 실행
npm start
```
## 프로젝트 구조
[프로젝트 구조 Diagram](./diagram/mermaid.md)
```
├── app/ # Next.js 앱 디렉토리
├── components/ # React 컴포넌트
├── hooks/ # 커스텀 React 훅
├── lib/ # 유틸리티 함수 및 설정
├── prisma/ # 데이터베이스 스키마 및 마이그레이션
└── public/ # 정적 자산
```
## 참고
### prisma 연결
```
npx prisma migrate dev
@ -11,9 +78,92 @@ npx prisma db push
generate 를 진행해야 로컬에 연결 파일들이 생성이되고 pull push 를 사용할 수 있게 됨.
# react query cache data 가져오기
### react query cache data 가져오기
```
const cache = useQueryClient()
const data = cache.getQueryData(['user', 'info']) as UserState
```
### 팝업 컨트롤러 제어
[open]
```javascript
const popupController = usePopupController()
onClick={() => popupController.setMemberInformationPopup(true)}
onClick={() => popupController.setZipCodePopup(true)}
```
[close]
```javascript
const popupController = usePopupController()
onClick={() => popupController.setMemberInformationPopup(false)}
onClick={() => popupController.setZipCodePopup(false)}
```
### useEffect 정리
- client url pathname 변경시 -> @/components/ui/Header.tsx
### User Role 구분
session에 있는 role 키로 구분한다
- T01 / T01 -> Super user\
session.role === 'T01'
- A03 / 1234 -> T01을 제외한 1차점\
session.role === 'Admin'
- 2A03 / 1234 -> 2차점\
session.role === 'Admin_Sub'
- constA03_01 / 1234 -> 시공사\
session.role === 'Builder'
- teshg44 / 1234 -> 시공사\
session.role === 'Builder'
- isogai@yanegiken.co.jp / password -> Q.Partners 계정\
session.role === 'Partner'
- 이외의 경우 -> 굳이 체크할 필요 없어보임\
session.role === 'User'
### 지붕재 적합성 TODO
```
const suitableCheckIcon = (value: string): string => {
const iconMap: Record<string, string> = {
'×': '/assets/images/sub/compliance_x_icon.svg',
'ー': '/assets/images/sub/compliance_quest_icon.svg',
default: '/assets/images/sub/compliance_check_icon.svg',
}
return iconMap[value] || iconMap.default
}
const suitableCheckMemo = (value: string): string => {
if (value === '○') return '設置可'
if (value === '×') return '設置不可'
if (value === 'ー') return 'お問い合わせください'
return `${value}で設置可`
}
```
- src/hooks/useSuitable.ts > suitableCheckIcon(), suitableCheckMemo()
- 추후 지붕재 적합성 데이터 CUD 구현 시 ×, ー 데이터 관리 필요
# 주의
## <span style="color: red">Prisma ORM 사용 시 주의사항</span>
현재 프로젝트는 Prisma ORM을 통해 데이터베이스의 일부 테이블만 관리하고 있습니다. 이로 인해 `prisma db pull` 또는 `prisma db push` 명령어 사용 시 주의가 필요합니다.
### <span style="color: red">잠재적 위험성</span>
- `schema.prisma` 파일에 정의된 모델이 의도치 않게 수정될 수 있습니다.
- 기존에 정의된 모델의 속성이나 관계가 손상될 수 있습니다.
- 데이터베이스 스키마와 Prisma 스키마 간의 불일치가 발생할 수 있습니다.
### <span style="color: red">권장 사항</span>
- 데이터베이스 스키마 변경이 필요한 경우, 반드시 팀 내 논의 후 진행하시기 바랍니다.
- `prisma db pull` 실행 전 현재 `schema.prisma` 파일의 백업을 권장합니다.
- 변경 사항 적용 전 staging 환경에서 충분한 테스트를 진행하시기 바랍니다.

88
diagram/Login.md Normal file
View File

@ -0,0 +1,88 @@
# Login Component Structure
## Component Diagram
```mermaid
graph TD
A[Login Component] --> B[State Management]
B --> B1[useState Hooks]
B1 --> B1a[pwShow: 비밀번호 표시 여부]
B1 --> B1b[idSave: ID 저장 여부]
B1 --> B1c[isPartners: Q.PARTNERS 여부]
B1 --> B1d[isLogin: 로그인 상태]
A --> C[Account Management]
C --> C1[useReducer]
C1 --> C1a[loginId]
C1 --> C1b[pwd]
A --> D[External Hooks]
D --> D1[useRouter]
D --> D2[useLocalStorage]
D --> D3[useSessionStore]
D --> D4[useAxios]
D --> D5[useQuery]
A --> E[Event Handlers]
E --> E1[handleLogin]
E --> E2[handleKeyDown]
E --> E3[validateLogin]
A --> F[Effects]
F --> F1[Login Success Effect]
F1 --> F1a[세션 저장]
F1 --> F1b[라우팅]
F --> F2[Email Validation Effect]
F2 --> F2a[Partners 모드 전환]
A --> G[UI Components]
G --> G1[Login Form]
G1 --> G1a[ID Input]
G1 --> G1b[Password Input]
G1 --> G1c[Checkboxes]
G1 --> G1d[Login Button]
```
## 주요 특징과 동작 방식
### 1. 상태 관리
- `useState`를 사용하여 UI 상태 관리 (비밀번호 표시, ID 저장, Partners 모드)
- `useReducer`를 사용하여 계정 정보(loginId, pwd) 관리
### 2. 외부 훅 통합
- `useRouter`: 페이지 라우팅
- `useLocalStorage`: 로컬 스토리지 데이터 관리
- `useSessionStore`: 세션 상태 관리
- `useAxios`: API 통신
- `useQuery`: 로그인 API 호출 및 상태 관리
### 3. 이벤트 처리
- `handleLogin`: 로그인 시도
- `handleKeyDown`: Enter 키 입력 처리
- `validateLogin`: 입력값 유효성 검사
### 4. 효과 처리
- 로그인 성공 시 세션 저장 및 라우팅
- 이메일 형식에 따른 Partners 모드 자동 전환
### 5. UI 구성
- ID/PW 입력 필드
- 비밀번호 표시/숨김 토글
- ID 저장 체크박스
- Q.PARTNERS 토글
- 로그인 버튼
### 6. 보안 및 유효성 검사
- 이메일 형식 검증
- 필수 입력값 검증
- API 응답 코드에 따른 처리 (200: 성공, 400: 실패)
## 특징
이 컴포넌트는 클라이언트 사이드에서 동작하며('use client'), 사용자 인증과 관련된 모든 로직을 포함하고 있습니다. 특히 Q.PARTNERS 모드와 일반 모드를 구분하여 다른 API 엔드포인트를 사용하는 특징이 있습니다.

71
diagram/layout.md Normal file
View File

@ -0,0 +1,71 @@
# 루트 레이아웃 구조
이 문서는 애플리케이션의 모든 페이지에서 공통으로 사용되는 루트 레이아웃(`src/app/layout.tsx`)의 구조를 설명합니다.
## 컴포넌트 계층 구조
```mermaid
graph TD
A[RootLayout] --> B[ReactQueryProviders]
B --> C[EdgeProvider]
C --> D[HTML Structure]
D --> E[Header]
D --> F[Children/Main Content]
D --> G[Footer]
D --> H[Float Button]
D --> I[PopupController]
J[Session Management] --> |Session Data| C
subgraph Providers
B
C
end
subgraph Layout Components
E
F
G
H
I
end
subgraph Session
J
end
```
## 주요 컴포넌트
### 프로바이더
- **ReactQueryProviders**: React Query 상태 관리를 위한 최상위 프로바이더
- **EdgeProvider**: 세션 데이터를 관리하고 애플리케이션에 제공
### 레이아웃 컴포넌트
- **Header**: 공통 헤더 컴포넌트
- **Children**: 메인 콘텐츠 영역 (페이지별 콘텐츠)
- **Footer**: 공통 푸터 컴포넌트
- **Float Button**: 플로팅 액션 버튼
- **PopupController**: 팝업/모달 상태 관리
### 세션 관리
- `iron-session`을 사용한 서버 사이드 세션 관리
- 세션 데이터는 EdgeProvider를 통해 전역적으로 접근 가능
## 데이터 흐름
1. 세션 데이터는 서버 사이드에서 관리됨
2. 세션 데이터는 EdgeProvider로 전달됨
3. 모든 레이아웃 컴포넌트는 세션 컨텍스트에 접근 가능
4. React Query는 데이터 페칭과 캐싱 기능을 제공
## 구현 세부사항
- 서버 컴포넌트로 구현
- Next.js App Router 구조 사용
- 서버 사이드 렌더링 지원
- 하이드레이션 억제를 통한 성능 최적화

98
diagram/mermaid.md Normal file
View File

@ -0,0 +1,98 @@
# Project Structure Documentation
## Component Relationship Diagram
```mermaid
graph TD
subgraph Root
A[RootLayout] --> B[ReactQueryProviders]
B --> C[EdgeProvider]
C --> D[HTML Structure]
end
subgraph Layout Components
D --> E[Header]
D --> F[Main Content]
D --> G[Footer]
D --> H[Float Button]
D --> I[PopupController]
end
subgraph Pages
F --> J[Login]
F --> K[Survey Sale]
F --> L[Suitable]
F --> M[Inquiry]
F --> N[Password Reset]
F --> O[PDF]
end
subgraph Providers
P1[ReactQueryProvider]
P2[EdgeProvider]
end
subgraph Components
C1[UI Components]
C2[Popup Components]
C3[PDF Components]
C4[Survey Components]
C5[Inquiry Components]
end
subgraph Utils
U1[Session Management]
U2[Mailer]
U3[API Routes]
end
%% Relationships
A --> P1
A --> P2
J --> U1
K --> C4
L --> C4
M --> C5
N --> U2
O --> C3
```
## Structure Explanation
### 1. Root Layout
- `RootLayout`이 전체 애플리케이션의 기본 구조를 정의
- `ReactQueryProviders``EdgeProvider`로 감싸져 있음
### 2. Layout Components
- Header, Footer, Float Button 등 공통 레이아웃 컴포넌트
- `PopupController`로 팝업 관리
### 3. Pages
- Next.js App Router 기반의 페이지 구조
- Login, Survey Sale, Suitable, Inquiry 등 주요 페이지들
### 4. Providers
- `ReactQueryProvider`: 데이터 페칭 관리
- `EdgeProvider`: 세션 및 상태 관리
### 5. Components
- UI Components: 공통 UI 요소
- Popup Components: 팝업 관련 컴포넌트
- PDF Components: PDF 생성/관리 컴포넌트
- Survey Components: 설문 관련 컴포넌트
- Inquiry Components: 문의 관련 컴포넌트
### 6. Utils
- Session Management: 세션 관리
- Mailer: 이메일 발송 기능
- API Routes: 백엔드 API 엔드포인트
## Architecture Overview
이 구조는 Next.js의 App Router를 기반으로 하며, 컴포넌트 기반 아키텍처를 따르고 있습니다. 각 기능별로 모듈화가 잘 되어있고, 공통 컴포넌트와 유틸리티를 효율적으로 재사용할 수 있도록 구성되어 있습니다.

125
diagram/mermaid2.md Normal file
View File

@ -0,0 +1,125 @@
# Login Process Documentation
## Login Sequence Diagram
```mermaid
sequenceDiagram
actor User
participant Login as Login Component
participant API as Auth API
participant QSP as QSP API
participant Session as Session Store
participant Router as Next Router
User->>Login: Enter credentials
Login->>Login: Validate input
alt Invalid Input
Login->>User: Show error message
else Valid Input
Login->>API: POST /api/auth
API->>QSP: POST /api/user/login
QSP-->>API: Return user data
alt Login Success
API->>Session: Create session
Session->>Session: Set user data
Session->>Session: Set role
API-->>Login: Return success response
Login->>Router: Redirect to home
Router->>User: Show home page
else Login Failed
API-->>Login: Return error response
Login->>User: Show error message
end
end
```
## Login Process Flow
1. **User Input**
- User enters login credentials (ID and password)
- Optional: User can toggle Q.PARTNERS mode
- Optional: User can save ID
2. **Input Validation**
- Checks if ID and password are not empty
- Validates email format for Q.PARTNERS mode
3. **Authentication Request**
- Sends credentials to Auth API
- Auth API forwards request to QSP API
- QSP API validates credentials
4. **Session Management**
- On successful login:
- Creates new session
- Stores user data
- Sets user role based on permissions
- Saves session to cookies
5. **Response Handling**
- Success: Redirects to home page
- Failure: Shows error message
## Role Assignment Logic
The system assigns roles based on the following rules:
- `T01`: If userId is 'T01'
- `Admin`: If groupId is '60000'
- `Admin_Sub`: If groupId is '70000' and builderNo is null
- `Builder`: If groupId is '70000' and builderNo is not null
- `User`: Default role for all other cases
```mermaid
graph TD
subgraph Root
A[RootLayout] --> B[ReactQueryProviders]
B --> C[EdgeProvider]
C --> D[HTML Structure]
end
subgraph Layout Components
D --> E[Header]
D --> F[Main Content]
D --> G[Footer]
D --> H[Float Button]
D --> I[PopupController]
end
subgraph Pages
F --> J[Login]
F --> K[Survey Sale]
F --> L[Suitable]
F --> M[Inquiry]
F --> N[Password Reset]
F --> O[PDF]
end
subgraph Providers
P1[ReactQueryProvider]
P2[EdgeProvider]
end
subgraph Components
C1[UI Components]
C2[Popup Components]
C3[PDF Components]
C4[Survey Components]
C5[Inquiry Components]
end
subgraph Utils
U1[Session Management]
U2[Mailer]
U3[API Routes]
end
%% Relationships
A --> P1
A --> P2
J --> U1
K --> C4
L --> C4
M --> C5
N --> U2
O --> C3
```

157
diagram/mermaid3.md Normal file
View File

@ -0,0 +1,157 @@
# Pages and Components Class Diagram
## Class Diagram
```mermaid
classDiagram
class RootLayout {
+ReactNode children
+ReactNode header
+ReactNode footer
+ReactNode floatBtn
+ReactQueryProviders
+EdgeProvider
+PopupController
}
class Page {
<<interface>>
+ReactNode render()
}
class LoginPage {
+Login component
+handleLogin()
+validateInput()
}
class SurveySalePage {
+SurveySaleList
+SurveySaleDetail
+handleSurveySubmit()
}
class SuitablePage {
+SuitableList
+SuitableDetail
+handleSuitableSubmit()
}
class InquiryPage {
+InquiryList
+InquiryDetail
+handleInquirySubmit()
}
class PasswordResetPage {
+PasswordResetForm
+handlePasswordReset()
}
class PDFPage {
+PDFViewer
+PDFGenerator
+handlePDFGeneration()
}
class BaseComponent {
<<interface>>
+ReactNode render()
}
class UIComponent {
+Button
+Input
+Select
+Modal
}
class PopupComponent {
+PopupController
+PopupContent
+handlePopup()
}
class PDFComponent {
+PDFViewer
+PDFGenerator
+handlePDF()
}
class SurveyComponent {
+SurveyForm
+SurveyList
+handleSurvey()
}
class InquiryComponent {
+InquiryForm
+InquiryList
+handleInquiry()
}
%% Relationships
RootLayout --> Page
Page <|-- LoginPage
Page <|-- SurveySalePage
Page <|-- SuitablePage
Page <|-- InquiryPage
Page <|-- PasswordResetPage
Page <|-- PDFPage
BaseComponent <|-- UIComponent
BaseComponent <|-- PopupComponent
BaseComponent <|-- PDFComponent
BaseComponent <|-- SurveyComponent
BaseComponent <|-- InquiryComponent
LoginPage --> BaseComponent
SurveySalePage --> SurveyComponent
SuitablePage --> SurveyComponent
InquiryPage --> InquiryComponent
PasswordResetPage --> UIComponent
PDFPage --> PDFComponent
RootLayout --> PopupComponent
```
## Component Hierarchy
1. **Root Layout**
- 최상위 레이아웃 컴포넌트
- ReactQuery와 Edge Provider를 포함
- 공통 레이아웃 요소 관리
2. **Pages**
- LoginPage: 로그인 기능
- SurveySalePage: 설문 판매 관리
- SuitablePage: 적합성 관리
- InquiryPage: 문의 관리
- PasswordResetPage: 비밀번호 재설정
- PDFPage: PDF 생성 및 관리
3. **Base Components**
- UIComponent: 기본 UI 요소
- PopupComponent: 팝업 관리
- PDFComponent: PDF 관련 기능
- SurveyComponent: 설문 관련 기능
- InquiryComponent: 문의 관련 기능
## Component Relationships
1. **Page-Component Relationship**
- 각 페이지는 필요한 컴포넌트들을 조합하여 구성
- 페이지별로 특화된 컴포넌트 사용
2. **Component Inheritance**
- 모든 컴포넌트는 BaseComponent 인터페이스 구현
- 각 컴포넌트 타입별로 특화된 기능 제공
3. **Layout Integration**
- RootLayout이 전체 페이지 구조 관리
- PopupComponent를 통한 모달 관리
- 공통 UI 요소의 일관성 유지

View File

@ -9,30 +9,13 @@ const nextConfig: NextConfig = {
async rewrites() {
return [
{
source: '/:path*',
destination: `${process.env.NEXT_PUBLIC_API_URL}/:path*`,
},
]
},
async headers() {
return [
{
source: '/api/:path*',
headers: [
{
key: 'Access-Control-Allow-Origin',
value: '*',
},
{
key: 'Access-Control-Allow-Methods',
value: 'GET, POST, PUT, DELETE, OPTIONS',
},
{
key: 'Access-Control-Allow-Headers',
value: 'Content-Type, Authorization',
},
],
source: '/api/user/login',
destination: `${process.env.NEXT_PUBLIC_QSP_API_URL}/api/user/login`,
},
// {
// source: '/api/:path*',
// destination: `${process.env.NEXT_PUBLIC_API_URL}/api/:path*`,
// },
]
},
}

559
package-lock.json generated
View File

@ -8,25 +8,33 @@
"name": "on-site-survey",
"version": "0.1.0",
"dependencies": {
"@prisma/client": "^6.5.0",
"@prisma/client": "^6.7.0",
"@tanstack/react-query": "^5.71.0",
"@tanstack/react-query-devtools": "^5.71.0",
"@types/nodemailer": "^6.4.17",
"axios": "^1.8.4",
"env-cmd": "^10.1.0",
"iron-session": "^8.0.4",
"lucide": "^0.503.0",
"mssql": "^11.0.1",
"mysql2": "^3.14.1",
"next": "15.2.4",
"nodemailer": "^7.0.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-to-pdf": "^2.0.0",
"sass": "^1.87.0",
"swiper": "^11.2.6",
"usehooks-ts": "^3.1.1",
"zustand": "^5.0.3"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/mysql": "^2.15.27",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"prisma": "^6.5.0",
"prisma": "^6.7.0",
"tailwindcss": "^4",
"typescript": "^5"
}
@ -310,9 +318,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
"integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz",
"integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==",
"cpu": [
"ppc64"
],
@ -327,9 +335,9 @@
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
"integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz",
"integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==",
"cpu": [
"arm"
],
@ -344,9 +352,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
"integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz",
"integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==",
"cpu": [
"arm64"
],
@ -361,9 +369,9 @@
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
"integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz",
"integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==",
"cpu": [
"x64"
],
@ -378,9 +386,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
"integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz",
"integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==",
"cpu": [
"arm64"
],
@ -395,9 +403,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
"integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz",
"integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==",
"cpu": [
"x64"
],
@ -412,9 +420,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
"integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz",
"integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==",
"cpu": [
"arm64"
],
@ -429,9 +437,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
"integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz",
"integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==",
"cpu": [
"x64"
],
@ -446,9 +454,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
"integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz",
"integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==",
"cpu": [
"arm"
],
@ -463,9 +471,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
"integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz",
"integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==",
"cpu": [
"arm64"
],
@ -480,9 +488,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
"integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz",
"integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==",
"cpu": [
"ia32"
],
@ -497,9 +505,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
"integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz",
"integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==",
"cpu": [
"loong64"
],
@ -514,9 +522,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
"integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz",
"integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==",
"cpu": [
"mips64el"
],
@ -531,9 +539,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
"integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz",
"integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==",
"cpu": [
"ppc64"
],
@ -548,9 +556,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
"integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz",
"integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==",
"cpu": [
"riscv64"
],
@ -565,9 +573,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
"integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz",
"integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==",
"cpu": [
"s390x"
],
@ -582,9 +590,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
"integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
"integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
"cpu": [
"x64"
],
@ -599,9 +607,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
"integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz",
"integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==",
"cpu": [
"arm64"
],
@ -616,9 +624,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
"integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz",
"integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==",
"cpu": [
"x64"
],
@ -633,9 +641,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
"integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz",
"integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==",
"cpu": [
"arm64"
],
@ -650,9 +658,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
"integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz",
"integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==",
"cpu": [
"x64"
],
@ -667,9 +675,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
"integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz",
"integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==",
"cpu": [
"x64"
],
@ -684,9 +692,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
"integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz",
"integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==",
"cpu": [
"arm64"
],
@ -701,9 +709,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
"integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz",
"integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==",
"cpu": [
"ia32"
],
@ -718,9 +726,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
"integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz",
"integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==",
"cpu": [
"x64"
],
@ -1545,9 +1553,9 @@
}
},
"node_modules/@prisma/client": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.5.0.tgz",
"integrity": "sha512-M6w1Ql/BeiGoZmhMdAZUXHu5sz5HubyVcKukbLs3l0ELcQb8hTUJxtGEChhv4SVJ0QJlwtLnwOLgIRQhpsm9dw==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.7.0.tgz",
"integrity": "sha512-+k61zZn1XHjbZul8q6TdQLpuI/cvyfil87zqK2zpreNIXyXtpUv3+H/oM69hcsFcZXaokHJIzPAt5Z8C8eK2QA==",
"hasInstallScript": true,
"license": "Apache-2.0",
"engines": {
@ -1567,9 +1575,9 @@
}
},
"node_modules/@prisma/config": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.5.0.tgz",
"integrity": "sha512-sOH/2Go9Zer67DNFLZk6pYOHj+rumSb0VILgltkoxOjYnlLqUpHPAN826vnx8HigqnOCxj9LRhT6U7uLiIIWgw==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.7.0.tgz",
"integrity": "sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
@ -1578,53 +1586,53 @@
}
},
"node_modules/@prisma/debug": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.5.0.tgz",
"integrity": "sha512-fc/nusYBlJMzDmDepdUtH9aBsJrda2JNErP9AzuHbgUEQY0/9zQYZdNlXmKoIWENtio+qarPNe/+DQtrX5kMcQ==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.7.0.tgz",
"integrity": "sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/engines": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.5.0.tgz",
"integrity": "sha512-FVPQYHgOllJklN9DUyujXvh3hFJCY0NX86sDmBErLvoZjy2OXGiZ5FNf3J/C4/RZZmCypZBYpBKEhx7b7rEsdw==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.7.0.tgz",
"integrity": "sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.5.0",
"@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60",
"@prisma/fetch-engine": "6.5.0",
"@prisma/get-platform": "6.5.0"
"@prisma/debug": "6.7.0",
"@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
"@prisma/fetch-engine": "6.7.0",
"@prisma/get-platform": "6.7.0"
}
},
"node_modules/@prisma/engines-version": {
"version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60",
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60.tgz",
"integrity": "sha512-iK3EmiVGFDCmXjSpdsKGNqy9hOdLnvYBrJB61far/oP03hlIxrb04OWmDjNTwtmZ3UZdA5MCvI+f+3k2jPTflQ==",
"version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
"resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed.tgz",
"integrity": "sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/fetch-engine": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.5.0.tgz",
"integrity": "sha512-3LhYA+FXP6pqY8FLHCjewyE8pGXXJ7BxZw2rhPq+CZAhvflVzq4K8Qly3OrmOkn6wGlz79nyLQdknyCG2HBTuA==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.7.0.tgz",
"integrity": "sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.5.0",
"@prisma/engines-version": "6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60",
"@prisma/get-platform": "6.5.0"
"@prisma/debug": "6.7.0",
"@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed",
"@prisma/get-platform": "6.7.0"
}
},
"node_modules/@prisma/get-platform": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.5.0.tgz",
"integrity": "sha512-xYcvyJwNMg2eDptBYFqFLUCfgi+wZLcj6HDMsj0Qw0irvauG4IKmkbywnqwok0B+k+W+p+jThM2DKTSmoPCkzw==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.7.0.tgz",
"integrity": "sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "6.5.0"
"@prisma/debug": "6.7.0"
}
},
"node_modules/@swc/counter": {
@ -1938,6 +1946,16 @@
"integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==",
"license": "MIT"
},
"node_modules/@types/mysql": {
"version": "2.15.27",
"resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.27.tgz",
"integrity": "sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
"version": "20.17.28",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.28.tgz",
@ -1947,6 +1965,15 @@
"undici-types": "~6.19.2"
}
},
"node_modules/@types/nodemailer": {
"version": "6.4.17",
"resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.17.tgz",
"integrity": "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==",
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/raf": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
@ -2030,6 +2057,15 @@
"node": ">= 4.5.0"
}
},
"node_modules/aws-ssl-profiles": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
"integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
"license": "MIT",
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/axios": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
@ -2331,6 +2367,35 @@
"url": "https://opencollective.com/core-js"
}
},
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/cross-spawn/node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
"bin": {
"node-which": "bin/node-which"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
@ -2413,6 +2478,15 @@
"node": ">=0.4.0"
}
},
"node_modules/denque": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
"license": "Apache-2.0",
"engines": {
"node": ">=0.10"
}
},
"node_modules/detect-libc": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@ -2470,6 +2544,31 @@
"node": ">=10.13.0"
}
},
"node_modules/env-cmd": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz",
"integrity": "sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==",
"license": "MIT",
"dependencies": {
"commander": "^4.0.0",
"cross-spawn": "^7.0.0"
},
"bin": {
"env-cmd": "bin/env-cmd.js"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/env-cmd/node_modules/commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
@ -2516,9 +2615,9 @@
}
},
"node_modules/esbuild": {
"version": "0.25.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
"integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
"version": "0.25.4",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz",
"integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==",
"devOptional": true,
"hasInstallScript": true,
"license": "MIT",
@ -2529,31 +2628,31 @@
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.25.2",
"@esbuild/android-arm": "0.25.2",
"@esbuild/android-arm64": "0.25.2",
"@esbuild/android-x64": "0.25.2",
"@esbuild/darwin-arm64": "0.25.2",
"@esbuild/darwin-x64": "0.25.2",
"@esbuild/freebsd-arm64": "0.25.2",
"@esbuild/freebsd-x64": "0.25.2",
"@esbuild/linux-arm": "0.25.2",
"@esbuild/linux-arm64": "0.25.2",
"@esbuild/linux-ia32": "0.25.2",
"@esbuild/linux-loong64": "0.25.2",
"@esbuild/linux-mips64el": "0.25.2",
"@esbuild/linux-ppc64": "0.25.2",
"@esbuild/linux-riscv64": "0.25.2",
"@esbuild/linux-s390x": "0.25.2",
"@esbuild/linux-x64": "0.25.2",
"@esbuild/netbsd-arm64": "0.25.2",
"@esbuild/netbsd-x64": "0.25.2",
"@esbuild/openbsd-arm64": "0.25.2",
"@esbuild/openbsd-x64": "0.25.2",
"@esbuild/sunos-x64": "0.25.2",
"@esbuild/win32-arm64": "0.25.2",
"@esbuild/win32-ia32": "0.25.2",
"@esbuild/win32-x64": "0.25.2"
"@esbuild/aix-ppc64": "0.25.4",
"@esbuild/android-arm": "0.25.4",
"@esbuild/android-arm64": "0.25.4",
"@esbuild/android-x64": "0.25.4",
"@esbuild/darwin-arm64": "0.25.4",
"@esbuild/darwin-x64": "0.25.4",
"@esbuild/freebsd-arm64": "0.25.4",
"@esbuild/freebsd-x64": "0.25.4",
"@esbuild/linux-arm": "0.25.4",
"@esbuild/linux-arm64": "0.25.4",
"@esbuild/linux-ia32": "0.25.4",
"@esbuild/linux-loong64": "0.25.4",
"@esbuild/linux-mips64el": "0.25.4",
"@esbuild/linux-ppc64": "0.25.4",
"@esbuild/linux-riscv64": "0.25.4",
"@esbuild/linux-s390x": "0.25.4",
"@esbuild/linux-x64": "0.25.4",
"@esbuild/netbsd-arm64": "0.25.4",
"@esbuild/netbsd-x64": "0.25.4",
"@esbuild/openbsd-arm64": "0.25.4",
"@esbuild/openbsd-x64": "0.25.4",
"@esbuild/sunos-x64": "0.25.4",
"@esbuild/win32-arm64": "0.25.4",
"@esbuild/win32-ia32": "0.25.4",
"@esbuild/win32-x64": "0.25.4"
}
},
"node_modules/esbuild-register": {
@ -2665,6 +2764,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/generate-function": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
"license": "MIT",
"dependencies": {
"is-property": "^1.0.2"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@ -2940,6 +3048,12 @@
"node": ">=0.12.0"
}
},
"node_modules/is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
"license": "MIT"
},
"node_modules/is-wsl": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
@ -2955,6 +3069,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"license": "ISC"
},
"node_modules/jiti": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
@ -3292,6 +3412,12 @@
"url": "https://opencollective.com/parcel"
}
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
"license": "MIT"
},
"node_modules/lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@ -3334,6 +3460,42 @@
"integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
"license": "MIT"
},
"node_modules/long": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
"integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
"license": "Apache-2.0"
},
"node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/lru.min": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz",
"integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==",
"license": "MIT",
"engines": {
"bun": ">=1.0.0",
"deno": ">=1.30.0",
"node": ">=8.0.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wellwelwel"
}
},
"node_modules/lucide": {
"version": "0.503.0",
"resolved": "https://registry.npmjs.org/lucide/-/lucide-0.503.0.tgz",
"integrity": "sha512-ZAVlxBU4dbSUAVidb2eT0fH3bTtKCj7M2aZNAVsFOrcnazvYJFu6I8OxFE+Fmx5XNf22Cw4Ln3NBHfBxNfoFOw==",
"license": "ISC"
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@ -3404,6 +3566,38 @@
"node": ">=18"
}
},
"node_modules/mysql2": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.1.tgz",
"integrity": "sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==",
"license": "MIT",
"dependencies": {
"aws-ssl-profiles": "^1.1.1",
"denque": "^2.1.0",
"generate-function": "^2.3.1",
"iconv-lite": "^0.6.3",
"long": "^5.2.1",
"lru.min": "^1.0.0",
"named-placeholders": "^1.1.3",
"seq-queue": "^0.0.5",
"sqlstring": "^2.3.2"
},
"engines": {
"node": ">= 8.0"
}
},
"node_modules/named-placeholders": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
"integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
"license": "MIT",
"dependencies": {
"lru-cache": "^7.14.1"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
@ -3517,6 +3711,15 @@
"license": "MIT",
"optional": true
},
"node_modules/nodemailer": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.3.tgz",
"integrity": "sha512-Ajq6Sz1x7cIK3pN6KesGTah+1gnwMnx5gKl3piQlQQE/PwyJ4Mbc8is2psWYxK3RJTVeqsDaCv8ZzXLCDHMTZw==",
"license": "MIT-0",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/open": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
@ -3535,6 +3738,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@ -3591,15 +3803,15 @@
}
},
"node_modules/prisma": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.5.0.tgz",
"integrity": "sha512-yUGXmWqv5F4PByMSNbYFxke/WbnyTLjnJ5bKr8fLkcnY7U5rU9rUTh/+Fja+gOrRxEgtCbCtca94IeITj4j/pg==",
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-6.7.0.tgz",
"integrity": "sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@prisma/config": "6.5.0",
"@prisma/engines": "6.5.0"
"@prisma/config": "6.7.0",
"@prisma/engines": "6.7.0"
},
"bin": {
"prisma": "build/index.js"
@ -3792,6 +4004,11 @@
"node": ">=10"
}
},
"node_modules/seq-queue": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
"integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
},
"node_modules/sharp": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
@ -3832,6 +4049,27 @@
"@img/sharp-win32-x64": "0.33.5"
}
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@ -3857,6 +4095,15 @@
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
"license": "BSD-3-Clause"
},
"node_modules/sqlstring": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz",
"integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/stackblur-canvas": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
@ -3947,6 +4194,25 @@
"node": ">=12.0.0"
}
},
"node_modules/swiper": {
"version": "11.2.6",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.6.tgz",
"integrity": "sha512-8aXpYKtjy3DjcbzZfz+/OX/GhcU5h+looA6PbAzHMZT6ESSycSp9nAjPCenczgJyslV+rUGse64LMGpWE3PX9Q==",
"funding": [
{
"type": "patreon",
"url": "https://www.patreon.com/swiperjs"
},
{
"type": "open_collective",
"url": "http://opencollective.com/swiper"
}
],
"license": "MIT",
"engines": {
"node": ">= 4.7.0"
}
},
"node_modules/tailwindcss": {
"version": "4.0.17",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz",
@ -4048,6 +4314,21 @@
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
},
"node_modules/usehooks-ts": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.1.tgz",
"integrity": "sha512-I4diPp9Cq6ieSUH2wu+fDAVQO43xwtulo+fKEidHUwZPnYImbtkTjzIJYcDcJqxgmX31GVqNFURodvcgHcW0pA==",
"license": "MIT",
"dependencies": {
"lodash.debounce": "^4.0.8"
},
"engines": {
"node": ">=16.15.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17 || ^18 || ^19 || ^19.0.0-rc"
}
},
"node_modules/utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",

View File

@ -3,31 +3,45 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev --turbopack",
"dev": "env-cmd -f .env.localhost next dev --turbopack",
"build": "next build",
"start": "next start",
"build:local": "env-cmd -f .env.localhost next build",
"build:dev": "env-cmd -f .env.development next build",
"build:prod": "env-cmd -f .env.production next build",
"start:local": "env-cmd -f .env.localhost next start",
"start:dev": "env-cmd -f .env.development next start",
"start:prod": "env-cmd -f .env.production next start",
"lint": "next lint"
},
"dependencies": {
"@prisma/client": "^6.5.0",
"@prisma/client": "^6.7.0",
"@tanstack/react-query": "^5.71.0",
"@tanstack/react-query-devtools": "^5.71.0",
"@types/nodemailer": "^6.4.17",
"axios": "^1.8.4",
"env-cmd": "^10.1.0",
"iron-session": "^8.0.4",
"lucide": "^0.503.0",
"mssql": "^11.0.1",
"mysql2": "^3.14.1",
"next": "15.2.4",
"nodemailer": "^7.0.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-to-pdf": "^2.0.0",
"sass": "^1.87.0",
"swiper": "^11.2.6",
"usehooks-ts": "^3.1.1",
"zustand": "^5.0.3"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/mysql": "^2.15.27",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"prisma": "^6.5.0",
"prisma": "^6.7.0",
"tailwindcss": "^4",
"typescript": "^5"
}

2584
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -7,199 +7,476 @@ datasource db {
url = env("DATABASE_URL")
}
// 사용자 정보
model User {
id Int @id @default(autoincrement())
username String @unique
phone String?
email String?
password String?
kakao_id String?
avatar String?
created_at DateTime @default(now())
updated_at DateTime @updatedAt
model SD_SURVEY_SALES_BASIC_INFO {
ID Int @id @default(autoincrement())
SRL_NO String @db.NVarChar(20)
REPRESENTATIVE String @db.NVarChar(200)
STORE String? @db.NVarChar(200)
CONSTRUCTION_POINT String? @db.NVarChar(200)
INVESTIGATION_DATE String? @db.NVarChar(10)
BUILDING_NAME String? @db.NVarChar(200)
CUSTOMER_NAME String? @db.NVarChar(200)
POST_CODE String? @db.NVarChar(10)
ADDRESS String? @db.NVarChar(200)
ADDRESS_DETAIL String? @db.NVarChar(300)
SUBMISSION_STATUS Boolean @default(false)
SUBMISSION_DATE DateTime? @db.Date
SUBMISSION_TARGET_ID String? @db.NVarChar(200)
REG_DT DateTime @default(now())
UPT_DT DateTime @updatedAt
REPRESENTATIVE_ID String? @db.NVarChar(100)
STORE_ID String? @db.NVarChar(100)
CONSTRUCTION_POINT_ID String? @db.NVarChar(200)
SUBMISSION_TARGET_NM String? @db.NVarChar(200)
DETAIL_INFO SD_SURVEY_SALES_DETAIL_INFO?
}
// 지붕재 적합성 정보
model MS_SUITABLE {
//일련번호
id Int @id @default(autoincrement())
//제품명
product_name String @db.VarChar(200)
//제조업체명
manufacturer String? @db.VarChar(200)
//지붕재
roof_material String? @db.VarChar(100)
//금구형태(쇠붙이형)
shape String? @db.VarChar(200)
//지지 기와
support_roof_tile String? @db.VarChar(1)
//지지 기와 메모
support_roof_tile_memo String? @db.VarChar(500)
//지지 금구
support_roof_bracket String? @db.VarChar(200)
//지지 금구 메모
support_roof_bracket_memo String? @db.VarChar(500)
//yg 앵커
yg_anchor String? @db.VarChar(200)
//yg 앵커 메모
yg_anchor_memo String? @db.VarChar(500)
//rg 지붕판
rg_roof_tile_part String? @db.VarChar(200)
//rg 지붕판 메모
rg_roof_tile_part_memo String? @db.VarChar(500)
//다이도헌트 지지 기와2
dido_hunt_support_tile_2 String? @db.VarChar(200)
//다이도헌트 지지 기와2 메모
dido_hunt_support_tile_2_memo String? @db.VarChar(500)
//타카시마 파워 베이스
takashima_power_base String? @db.VarChar(200)
//타카시마 파워 베이스 메모
takashima_power_base_memo String? @db.VarChar(500)
//타카시마용 금구
takashima_tile_bracket String? @db.VarChar(200)
//타카시마용 금구 메모
takashima_tile_bracket_memo String? @db.VarChar(500)
//슬레이트 금구4
slate_bracket_4 String? @db.VarChar(200)
//슬레이트 금구4 메모
slate_bracket_4_memo String? @db.VarChar(500)
//슬레이트 판금 금구(슬레이트, 싱글)
slate_single_metal_bracket String? @db.VarChar(200)
//슬레이트 판금 금구 메모(슬레이트, 싱글)
slate_single_metal_bracket_memo String? @db.VarChar(500)
//다이도헌트 짧은 트랙4
dido_hunt_short_rack_4 String? @db.VarChar(200)
//다이도헌트 짧은 트랙4 메모
dido_hunt_short_rack_4_memo String? @db.VarChar(500)
//타카시마 슬레이트 금구
takashima_slate_bracket_slate_single String? @db.VarChar(200)
//타카시마 슬레이트 금구 메모
takashima_slate_bracket_slate_single_memo String? @db.VarChar(500)
//df 판금 금구
df_metal_bracket String? @db.VarChar(200)
//df 판금 금구 메모
df_metal_bracket_memo String? @db.VarChar(500)
//슬레이트 판금 금구(금속 지붕)
slate_metal_bracket String? @db.VarChar(200)
//슬레이트 판금 금구(금속 지붕) 메모
slate_metal_bracket_memo String? @db.VarChar(500)
//타카시마 슬레이트 금구(금속 지붕)
takashima_slate_bracket_metal_roof String? @db.VarChar(200)
//타카시마 슬레이트 금구(금속 지붕) 메모
takashima_slate_bracket_metal_roof_memo String? @db.VarChar(500)
created_at DateTime @default(now())
updated_at DateTime @updatedAt
model SD_SURVEY_SALES_DETAIL_INFO {
ID Int @id @default(autoincrement())
CONTRACT_CAPACITY String? @db.NVarChar(20)
RETAIL_COMPANY String? @db.NVarChar(100)
SUPPLEMENTARY_FACILITIES String? @db.NVarChar(20)
SUPPLEMENTARY_FACILITIES_ETC String? @db.NVarChar(200)
INSTALLATION_SYSTEM String? @db.NVarChar(20)
INSTALLATION_SYSTEM_ETC String? @db.NVarChar(200)
CONSTRUCTION_YEAR String? @db.NVarChar(200)
CONSTRUCTION_YEAR_ETC String? @db.NVarChar(200)
ROOF_MATERIAL String? @db.NVarChar(20)
ROOF_MATERIAL_ETC String? @db.NVarChar(200)
ROOF_SHAPE String? @db.NVarChar(20)
ROOF_SHAPE_ETC String? @db.NVarChar(200)
ROOF_SLOPE String? @db.NVarChar(5)
HOUSE_STRUCTURE String? @db.NVarChar(20)
HOUSE_STRUCTURE_ETC String? @db.NVarChar(200)
RAFTER_MATERIAL String? @db.NVarChar(20)
RAFTER_MATERIAL_ETC String? @db.NVarChar(200)
RAFTER_SIZE String? @db.NVarChar(20)
RAFTER_SIZE_ETC String? @db.NVarChar(200)
RAFTER_PITCH String? @db.NVarChar(20)
RAFTER_PITCH_ETC String? @db.NVarChar(200)
RAFTER_DIRECTION String? @db.NVarChar(20)
OPEN_FIELD_PLATE_KIND String? @db.NVarChar(20)
OPEN_FIELD_PLATE_KIND_ETC String? @db.NVarChar(200)
OPEN_FIELD_PLATE_THICKNESS String? @db.NVarChar(5)
LEAK_TRACE Boolean? @default(false)
WATERPROOF_MATERIAL String? @db.NVarChar(20)
WATERPROOF_MATERIAL_ETC String? @db.NVarChar(200)
INSULATION_PRESENCE String? @db.NVarChar(20)
INSULATION_PRESENCE_ETC String? @db.NVarChar(200)
STRUCTURE_ORDER String? @db.NVarChar(20)
STRUCTURE_ORDER_ETC String? @db.NVarChar(200)
INSTALLATION_AVAILABILITY String? @db.NVarChar(20)
INSTALLATION_AVAILABILITY_ETC String? @db.NVarChar(200)
MEMO String? @db.NVarChar(500)
REG_DT DateTime @default(now())
UPT_DT DateTime @updatedAt
BASIC_INFO_ID Int @unique
BASIC_INFO SD_SURVEY_SALES_BASIC_INFO @relation(fields: [BASIC_INFO_ID], references: [ID])
}
// 조사 매물 기본 정보
model SD_SERVEY_SALES_BASIC_INFO {
//일련번호
id Int @id @default(autoincrement())
//담당자명
representative String @db.VarChar(200)
//판매점
store String? @db.VarChar(200)
//시공점
construction_point String? @db.VarChar(200)
//현재 조사일
investigation_date String? @db.VarChar(10)
//건물명
building_name String? @db.VarChar(200)
//고객명
customer_name String? @db.VarChar(200)
//우편번호
post_code String? @db.VarChar(10)
//주소
address String? @db.VarChar(200)
//상세주소
address_detail String? @db.VarChar(300)
//제출상태
submission_status Boolean @default(false)
//제출일
submission_date DateTime? @db.Date
//상세정보
detail_info SD_SERVEY_SALES_DETAIL_INFO?
created_at DateTime @default(now())
updated_at DateTime @updatedAt
model BC_COMM_H {
HEAD_CD String @id(map: "PK_BC_COMM_H") @db.NVarChar(6)
HEAD_ID String? @db.NVarChar(100)
HEAD_NM String? @db.NVarChar(100)
HEAD_JP String? @db.NVarChar(100)
HEAD_4TH String? @db.NVarChar(100)
REF_CHR1 String? @db.NVarChar(100)
REF_CHR2 String? @db.NVarChar(100)
REF_CHR3 String? @db.NVarChar(100)
REF_CHR4 String? @db.NVarChar(100)
REF_CHR5 String? @db.NVarChar(100)
REF_NUM1 String? @db.NVarChar(100)
REF_NUM2 String? @db.NVarChar(100)
REF_NUM3 String? @db.NVarChar(100)
REF_NUM4 String? @db.NVarChar(100)
REF_NUM5 String? @db.NVarChar(100)
REMARKS String? @db.NVarChar(200)
SAP_YN String? @db.NVarChar(1)
STAT_CD String? @db.NVarChar(1)
DEL_YN String? @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
QC_COMM_YN String? @default("N", map: "DF__BC_COMM_H__QC_CO__48CFD27E") @db.NVarChar(1)
BC_COMM_L BC_COMM_L[]
@@index([HEAD_ID], map: "BC_COMM_H_HEAD_ID_IDX")
}
// 조사 매물 전기 지붕 정보
model SD_SERVEY_SALES_DETAIL_INFO {
//일련번호
id Int @id @default(autoincrement())
//전기계약 용량
contract_capacity String? @db.VarChar(20)
//전기 소매 회사
retail_company String? @db.VarChar(100)
//전기 부대 설비
supplementary_facilities Int? @db.Int
//전기 부대 설비 기타
supplementary_facilities_etc String? @db.VarChar(200)
//설치 희망 시스템
installation_system Int? @db.Int
//설치 희망 시스템 기타
installation_system_etc String? @db.VarChar(200)
//건축 연수
construction_year Int? @db.Int
//건축 연수 기타
construction_year_etc String? @db.VarChar(200)
//지붕재
roof_material Int? @db.Int
//지붕재 기타
roof_material_etc String? @db.VarChar(200)
//지붕 모양
roof_shape Int? @db.Int
//지붕 모양 기타
roof_shape_etc String? @db.VarChar(200)
//지붕 경사도
roof_slope String? @db.VarChar(5)
//주택 구조
house_structure Int? @db.Int
//주택 구조 기타
house_structure_etc String? @db.VarChar(200)
//서까래 재질
rafter_material Int? @db.Int
//서까래 재질 기타
rafter_material_etc String? @db.VarChar(200)
//서까래 크기
rafter_size Int? @db.Int
//서까래 크기 기타
rafter_size_etc String? @db.VarChar(200)
//서까래 피치
rafter_pitch Int? @db.Int
//서까래 피치 기타
rafter_pitch_etc String? @db.VarChar(200)
//서까래 방향
rafter_direction Int? @db.Int
//노지판 종류
open_field_plate_kind Int? @db.Int
//노지판 종류 기타
open_field_plate_kind_etc String? @db.VarChar(200)
//노지판 두께
open_field_plate_thickness String? @db.VarChar(5)
//누수 흔적
leak_trace Boolean? @default(false)
//방수재 종류
waterproof_material Int? @db.Int
//방수재 종류 기타
waterproof_material_etc String? @db.VarChar(200)
//단열재 여부
insulation_presence Int? @db.Int
//단열재 여부 기타
insulation_presence_etc String? @db.VarChar(200)
//지붕 구조 순서
structure_order Int? @db.Int
//지붕 구조 순서 기타
structure_order_etc String? @db.VarChar(200)
//설치 가능 여부
installation_availability Int? @db.Int
//설치 가능 여부 기타
installation_availability_etc String? @db.VarChar(200)
//메모
memo String? @db.VarChar(500)
created_at DateTime @default(now())
updated_at DateTime @updatedAt
basic_info SD_SERVEY_SALES_BASIC_INFO @relation(fields: [basic_info_id], references: [id])
basic_info_id Int @unique
model BC_COMM_L {
HEAD_CD String @db.NVarChar(6)
CODE String @db.NVarChar(50)
READ_CD String? @db.NVarChar(50)
CODE_NM String? @db.NVarChar(100)
CODE_JP String? @db.NVarChar(100)
CODE_4TH String? @db.NVarChar(100)
REF_CHR1 String? @db.NVarChar(150)
REF_CHR2 String? @db.NVarChar(150)
REF_CHR3 String? @db.NVarChar(150)
REF_CHR4 String? @db.NVarChar(150)
REF_CHR5 String? @db.NVarChar(150)
REF_NUM1 Decimal? @db.Decimal(22, 5)
REF_NUM2 Decimal? @db.Decimal(22, 5)
REF_NUM3 Decimal? @db.Decimal(22, 5)
REF_NUM4 Decimal? @db.Decimal(22, 5)
REF_NUM5 Decimal? @db.Decimal(22, 5)
PRIORITY Decimal? @db.Decimal(3, 0)
REF_CNT String? @db.NVarChar(5)
STAT_CD String? @db.NVarChar(1)
DEL_YN String? @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
BC_COMM_H BC_COMM_H @relation(fields: [HEAD_CD], references: [HEAD_CD], onUpdate: NoAction, map: "FK_BC_COMM_L")
@@id([HEAD_CD, CODE], map: "PK_BC_COMM_L")
}
model MS_SUITABLE_ROOF_MATERIAL_GROUP {
ID Int @id @default(autoincrement())
ROOF_MATL_GRP_CD String @db.NVarChar(200)
ROOF_MT_CD String @db.NVarChar(200)
REG_DT DateTime @default(now(), map: "DF__MS_SUITAB__creat__4F7CD00D")
UPT_DT DateTime?
}
model MS_SUITABLE_DETAIL {
ID Int @id @default(autoincrement())
MAIN_ID Int
TRESTLE_MFPC_CD String? @db.NVarChar(200)
TRESTLE_MANUFACTURER_PRODUCT_NAME String? @db.NVarChar(200)
MEMO String? @db.NVarChar(500)
REG_DT DateTime @default(now(), map: "DF__MS_SUITAB__REG_D__1332DBDC")
UPT_DT DateTime?
MS_SUITABLE_MAIN MS_SUITABLE_MAIN @relation(fields: [MAIN_ID], references: [ID], onUpdate: NoAction, map: "MS_SUITABLE_DETAIL_MS_SUITABLE_MAIN_FK")
@@index([MAIN_ID, TRESTLE_MANUFACTURER_PRODUCT_NAME], map: "MS_SUITABLE_DETAIL_MAIN_ID_IDX")
}
model MS_SUITABLE_MAIN {
ID Int @id @default(autoincrement())
PRODUCT_NAME String @db.NVarChar(200)
MANU_FT_CD String? @db.NVarChar(200)
ROOF_MT_CD String? @db.NVarChar(100)
ROOF_SH_CD String? @db.NVarChar(200)
REG_DT DateTime @default(now(), map: "DF__MS_SUITAB__REG_D__10566F31")
UPT_DT DateTime?
UPT_ID String? @db.NVarChar(50)
DEL_YN String? @db.NVarChar(1)
MS_SUITABLE_DETAIL MS_SUITABLE_DETAIL[]
@@index([PRODUCT_NAME], map: "MS_SUITABLE_MAIN_PRODUCT_NAME_IDX")
@@index([ROOF_MT_CD, PRODUCT_NAME], map: "MS_SUITABLE_MAIN_ROOF_MT_CD_IDX")
}
model MS_USR_TRK {
ID Int @id @default(autoincrement())
OWNER String @db.NVarChar(100)
TYPE String @db.NVarChar(50)
URL String? @db.NVarChar(200)
REG_DT DateTime @default(now())
DATA String? @db.NVarChar(200)
}
model BC_QM_BUILDER {
COMP_CD String @db.NVarChar(4)
BUILDER_NO String @db.NVarChar(50)
AGENCY_STORE_ID String @db.NVarChar(100)
BUILDER_NM String @db.NVarChar(100)
BUILDER_ID String? @db.NVarChar(100)
ZIP_NO String? @db.NVarChar(7)
PRFT_JP String? @db.NVarChar(100)
MNCP_NM String? @db.NVarChar(100)
ADDR_NM String? @db.NVarChar(200)
ADDR_DTL String? @db.NVarChar(200)
RECEIVER_NM String? @db.NVarChar(100)
RECEIVER_CONTACT_NO String? @db.NVarChar(100)
USE_YN String? @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
BC_QM_USER BC_QM_USER[]
@@id([COMP_CD, BUILDER_NO], map: "PK_BC_QM_BUILDER")
}
model BC_QM_TERMS {
COMP_CD String @db.NVarChar(4)
TERMS_NO Decimal @db.Decimal(18, 0)
VER_NO String @db.NVarChar(3)
VER_SUB_NO String @db.NVarChar(3)
OPERTN_DT DateTime @db.Date
TERMS_CTNT String @db.NVarChar(Max)
DEL_YN String? @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
BC_QM_USER BC_QM_USER[]
@@id([TERMS_NO, COMP_CD], map: "PK_BC_QM_TERMS")
}
model BC_QM_USER {
COMP_CD String @db.NVarChar(4)
USER_ID String @db.NVarChar(50)
AGENCY_STORE_ID String @db.NVarChar(100)
USER_NM String @db.NVarChar(100)
USER_AUTH_CD String @db.NVarChar(10)
EMAIL String? @db.NVarChar(100)
PSTN_NM String? @db.NVarChar(100)
TEL_NO String? @db.NVarChar(100)
MOBILE_NO String? @db.NVarChar(100)
FAX_NO String? @db.NVarChar(100)
LAST_LOGIN_DT DateTime? @db.DateTime
PWD String @db.NVarChar(100)
PWD_INIT_YN String? @default("N", map: "DF__BC_QM_USE__PWD_I__42E1EEFE") @db.NVarChar(1)
LOGIN_FAIL_CNT Decimal? @default(0, map: "DF__BC_QM_USE__LOGIN__43D61337") @db.Decimal(18, 0)
LAST_LOGIN_FAIL_DT DateTime? @db.DateTime
LAST_PWD_UPT_DT DateTime? @db.DateTime
BUILDER_NO String? @db.NVarChar(50)
ZIP_NO String? @db.NVarChar(7)
PRFT_JP String? @db.NVarChar(100)
MNCP_NM String? @db.NVarChar(100)
ADDR_NM String? @db.NVarChar(200)
TERMS_AGREE_YN String? @default("N", map: "DF__BC_QM_USE__TERMS__44CA3770") @db.NVarChar(1)
TERMS_AGREE_DT DateTime? @db.DateTime
AGREE_TERMS_NO Decimal? @db.Decimal(18, 0)
STAT_CD String? @db.NVarChar(1)
DEL_YN String? @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
USER_NM_KANA String? @db.NVarChar(50)
BC_QM_BUILDER BC_QM_BUILDER? @relation(fields: [COMP_CD, BUILDER_NO], references: [COMP_CD, BUILDER_NO], onUpdate: NoAction, map: "FK_BC_QM_USER_01")
BC_QM_TERMS BC_QM_TERMS? @relation(fields: [AGREE_TERMS_NO, COMP_CD], references: [TERMS_NO, COMP_CD], onUpdate: NoAction, map: "FK_BC_QM_USER_02")
@@id([COMP_CD, USER_ID], map: "PK_BC_QM_USER")
}
model IF_PERSON_OFFICE_MAPPING {
IF_SEQ Decimal @id(map: "PK_IF_PERSON_OFFICE_MAPPING") @db.Decimal(22, 0)
SEQ Int?
LIFNR String? @db.NVarChar(10)
VKBUR String? @db.NVarChar(4)
IF_DT DateTime? @db.DateTime
IF_STS String? @db.NVarChar(1)
IF_MSG String? @db.NVarChar(200)
}
model MS_CUST_AGENCY_STOREID {
COMP_CD String @db.NVarChar(4)
STORE_ID String @db.NVarChar(100)
AGENCY_STORE_ID String @db.NVarChar(100)
AGENCY_QCAST_NM String? @db.NVarChar(100)
PLAN_REQ_SUBMIT_YN String? @default("N", map: "DF__MS_CUST_A__PLAN___3B40CD36") @db.NVarChar(1)
DEL_YN String? @default("N", map: "DF__MS_CUST_A__DEL_Y__3C34F16F") @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
EMAIL String? @db.NVarChar(100)
REMARK String? @db.NVarChar(Max)
BDL_TP_CD String? @db.NVarChar(10)
@@id([COMP_CD, AGENCY_STORE_ID], map: "PK_MS_CUST_AGENCY_STOREID")
}
model MS_CUST_H {
COMP_CD String @db.NVarChar(4)
CUST_CD String @db.NVarChar(10)
ACCOUNT_GR String? @db.NVarChar(4)
CUST_NM String? @db.NVarChar(70)
HAUS_NO String? @db.NVarChar(10)
POST_CD String? @db.NVarChar(10)
CITY_CD String? @db.NVarChar(12)
CITY_NM String? @db.NVarChar(40)
COUNTRY_CD String? @db.NVarChar(4)
REGION_CD String? @db.NVarChar(4)
STREET_NM String? @db.NVarChar(60)
STREET_NM2 String? @db.NVarChar(60)
STREET_NM3 String? @db.NVarChar(60)
STREET_NM4 String? @db.NVarChar(60)
STREET_NM5 String? @db.NVarChar(60)
TIME_ZONE String? @db.NVarChar(10)
TRANSP_ZONE String? @db.NVarChar(10)
LANG_CD String? @db.NVarChar(2)
TEL_NO String? @db.NVarChar(30)
TEL_NO_EXT String? @db.NVarChar(10)
MOBILE_NO String? @db.NVarChar(30)
FAX_NO String? @db.NVarChar(30)
FAX_NO_EXT String? @db.NVarChar(10)
EMAIL String? @db.NVarChar(100)
INDUSTRY_CD String? @db.NVarChar(4)
VAT_REG_NO String? @db.NVarChar(20)
LOCAT_NO1 Decimal? @db.Decimal(7, 0)
LOCAT_NO2 Decimal? @db.Decimal(5, 0)
RESI_CD String? @db.NVarChar(4)
UTIL_CD String? @db.NVarChar(4)
MARK_PF String? @db.NVarChar(4)
INVS_CD String? @db.NVarChar(4)
PRMT_CD String? @db.NVarChar(4)
SVC_PR_CD String? @db.NVarChar(4)
ENG_CNSL_CD String? @db.NVarChar(4)
RECON_ACC_CD String? @db.NVarChar(20)
SORT_KEY String? @db.NVarChar(12)
CASH_MGMT_GR String? @db.NVarChar(12)
INTEREST_IND_CD String? @db.NVarChar(12)
TERM_PAY_CD String? @db.NVarChar(12)
PAY_HIST_YN String? @db.NVarChar(2)
DUN_PROC_CD String? @db.NVarChar(4)
DUN_BLOCK_CD String? @db.NVarChar(1)
DUN_LEVEL_CD Decimal? @db.Decimal(1, 0)
POLICY_NO String? @db.NVarChar(20)
INSURED_AMT Decimal? @db.Decimal(13, 3)
VAL_TO_DATE DateTime? @db.Date
DEDUCT_RATE Decimal? @db.Decimal(9, 0)
APPLIED_INSURA Decimal? @db.Decimal(13, 3)
EASY_NO String? @db.NVarChar(20)
APPLY_DATE DateTime? @db.Date
EXPIRE_DATE DateTime? @db.Date
ADD_TXT1 String? @db.NVarChar(400)
ADD_TXT2 String? @db.NVarChar(400)
REF_PS_ID String? @db.NVarChar(20)
CUST_COMP_CD String? @db.NVarChar(4)
CUST_TEXT String? @db.NVarChar(Max)
CUST_GRADE String? @db.NVarChar(2)
INCOME_TAX_NO String? @db.NVarChar(20)
STAT_CD String? @db.NVarChar(2)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
QSP_ACCOUNT_GR String? @db.NVarChar(4)
BDL_TP_CD String? @db.NVarChar(10)
BDL_SUB_TP_CD String? @db.NVarChar(100)
MS_CUST_STOREID MS_CUST_STOREID[]
@@id([COMP_CD, CUST_CD], map: "PK_MS_CUST_H")
}
model MS_CUST_PERSON {
SEQ Decimal @db.Decimal(22, 0)
COMP_CD String @db.NVarChar(4)
CUST_CD String @db.NVarChar(10)
EOS_LOGIN_ID String? @db.NVarChar(100)
EOS_PWD String? @db.NVarChar(100)
NAME String? @db.NVarChar(50)
PSTN_NM String? @db.NVarChar(50)
EMAIL String? @db.NVarChar(100)
TEL_NO String? @db.NVarChar(100)
AUTHORITY String @db.NVarChar(1)
DEL_YN String? @default("N", map: "DF__MS_CUST_P__DEL_Y__339FAB6E") @db.NVarChar(1)
LOGIN_DT DateTime? @db.DateTime
PWD_INIT_YN String? @db.NVarChar(1)
LOGIN_FAIL_CNT Decimal? @db.Decimal(18, 0)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
LOGIN_FAIL_DT DateTime? @db.DateTime
PLAN_REQ_AUTH String? @default("N", map: "DF__MS_CUST_P__PLAN___3493CFA7") @db.NVarChar(1)
PRICE_VIEW_STAT_CD String? @default("S", map: "DF__MS_CUST_P__PRICE__3587F3E0") @db.NVarChar(10)
SD_SUBMIT_YN String? @default("N", map: "DF__MS_CUST_P__SD_SU__367C1819") @db.NVarChar(1)
STORE_ID String? @db.NVarChar(100)
USER_NM_KANA String? @db.NVarChar(50)
FAX String? @db.NVarChar(100)
PLAN_MAIL_RCV_YN String? @default("Y", map: "DF__MS_CUST_P__PLAN___37703C52") @db.NVarChar(1)
SD_MAIL_RCV_YN String? @default("Y", map: "DF__MS_CUST_P__SD_MA__3864608B") @db.NVarChar(1)
@@id([SEQ, COMP_CD, CUST_CD], map: "PK_MS_CUST_PERSON")
}
model MS_CUST_STOREID {
COMP_CD String @db.NVarChar(4)
STORE_ID String @db.NVarChar(100)
CUST_CD String @db.NVarChar(10)
REPRESENTATIVE_STORE_YN String? @db.NVarChar(1)
SP_MODULE_PRICE_SEQ Decimal? @db.Decimal(20, 0)
SP_MODULE_PRICE_EXP_FR_DT DateTime? @db.Date
SP_MODULE_PRICE_EXP_TO_DT DateTime? @db.Date
SP_BOS_PRICE_SEQ Decimal? @db.Decimal(20, 0)
SP_BOS_PRICE_EXP_FR_DT DateTime? @db.Date
SP_BOS_PRICE_EXP_TO_DT DateTime? @db.Date
PKG_PRICE_RANK String? @default("C", map: "DF__MS_CUST_S__PKG_P__29221CFB") @db.NVarChar(3)
SP_PKG_PRICE Decimal? @db.Decimal(13, 1)
SP_PKG_PRICE_EXP_FR_DT DateTime? @db.Date
SP_PKG_PRICE_EXP_TO_DT DateTime? @db.Date
DEL_YN String? @default("N", map: "DF__MS_CUST_S__DEL_Y__2A164134") @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
MOVE_DT DateTime? @db.DateTime
MOVE_ID String? @db.NVarChar(50)
STORE_QCAST_NM String? @db.NVarChar(100)
PLAN_REQ_AUTH String? @default("N", map: "DF__MS_CUST_S__PLAN___2B0A656D") @db.NVarChar(1)
PKG_EXCEPT_YN String? @default("N", map: "DF__MS_CUST_S__PKG_E__2BFE89A6") @db.NVarChar(1)
MODULE_PRICE_RANK String? @default("C", map: "DF__MS_CUST_S__MODUL__2CF2ADDF") @db.NVarChar(20)
BOS_PRICE_RANK String? @default("A", map: "DF__MS_CUST_S__BOS_P__2DE6D218") @db.NVarChar(20)
PLAN_REQ_SUBMIT_YN String? @default("N", map: "DF__MS_CUST_S__PLAN___2EDAF651") @db.NVarChar(1)
QSP_SUBAL_YN String? @default("N", map: "DF__MS_CUST_S__QSP_S__2FCF1A8A") @db.NVarChar(1)
MS_CUST_H MS_CUST_H @relation(fields: [COMP_CD, CUST_CD], references: [COMP_CD, CUST_CD], onUpdate: NoAction, map: "MS_CUST_STOREID_FK")
@@id([COMP_CD, STORE_ID], map: "PK_MS_CUST_STOREID")
@@index([COMP_CD, CUST_CD], map: "IDX_MS_CUST_STOREID_COMP_CD_01")
}
model MS_CUST_STOREID_ADDITNL {
COMP_CD String @db.NVarChar(20)
STORE_ID String @db.NVarChar(100)
REQ_CUST_CD String? @db.NVarChar(10)
REQ_STORE_QCAST_NM String? @db.NVarChar(100)
STORE_QCAST_NM_KANA String? @db.NVarChar(100)
BIZ_NO String? @db.NVarChar(20)
POST_CD String? @db.NVarChar(10)
ADDR String? @db.NVarChar(255)
TEL_NO String? @db.NVarChar(100)
FAX String? @db.NVarChar(100)
APPR_DT DateTime? @db.DateTime
APPR_ID String? @db.NVarChar(50)
APPR_STAT_CD String? @db.NVarChar(10)
APPR_REMARKS String? @db.NVarChar(300)
REQ_APPR_DT DateTime? @db.DateTime
PAY_TERMS_CD String? @db.NVarChar(10)
FIRST_STORE_ID String? @db.NVarChar(100)
PARENT_STORE_ID String? @db.NVarChar(100)
STORE_LVL Int?
KAM_ID String? @db.NVarChar(50)
QT_COMP_NM String? @db.NVarChar(100)
QT_POST_CD String? @db.NVarChar(10)
QT_ADDR String? @db.NVarChar(255)
QT_TEL_NO String? @db.NVarChar(100)
QT_FAX String? @db.NVarChar(100)
QT_E_MAIL String? @db.NVarChar(100)
ORD_DELI_TARGET String? @db.NVarChar(100)
ORD_DELI_COMP_NM String? @db.NVarChar(100)
ORD_DELI_COMP_USER_NM String? @db.NVarChar(40)
ORD_DELI_TEL_NO String? @db.NVarChar(100)
ORD_DELI_POST_CD String? @db.NVarChar(10)
ORD_DELI_REMARKS String? @db.NVarChar(200)
GUAR_STORE_NM String? @db.NVarChar(100)
GUAR_STORE_POST_CD String? @db.NVarChar(10)
GUAR_STORE_ADDR String? @db.NVarChar(255)
GUAR_TEL_NO String? @db.NVarChar(100)
NORTH_MODULE_YN String? @default("N", map: "DF__MS_CUST_S__NORTH__17036CC0") @db.NVarChar(1)
DEL_YN String? @default("N", map: "DF__MS_CUST_S__DEL_Y__17F790F9") @db.NVarChar(1)
REG_DT DateTime? @db.DateTime
REG_ID String? @db.NVarChar(50)
UPT_DT DateTime? @db.DateTime
UPT_ID String? @db.NVarChar(50)
REQ_MODULE_PRICE_RANK String? @db.NVarChar(20)
REQ_BOS_PRICE_RANK String? @db.NVarChar(20)
REQ_PKG_PRICE_RANK String? @db.NVarChar(3)
REQ_BDL_TP_CD String? @db.NVarChar(10)
REQ_BDL_SUB_TP_CD String? @db.NVarChar(100)
REMARK String? @db.NVarChar(500)
NORTH_MODULE_UPT_DT DateTime? @db.DateTime
NORTH_MODULE_UPT_ID String? @db.NVarChar(50)
@@id([COMP_CD, STORE_ID], map: "PK_MS_CUST_STOREID_ADDITNL")
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@
<svg width="6" height="10" viewBox="0 0 6 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 1L5 5L1 9" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 207 B

View File

@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.125 10.875L10.875 7.125" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
<path d="M12.6347 10.9572L14.5919 9C16.136 7.45584 16.136 4.95227 14.5919 3.40812C13.0477 1.86396 10.5442 1.86396 9 3.40812L7.04284 5.36528M10.9572 12.6347L9 14.5919C7.45584 16.136 4.95227 16.136 3.40812 14.5919C1.86396 13.0477 1.86396 10.5442 3.40812 9L5.36528 7.04284" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 529 B

View File

@ -0,0 +1,4 @@
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.625 10.875L11.375 7.125" stroke="#4E637E" stroke-width="1.5" stroke-linecap="round"/>
<path d="M13.1347 10.9572L15.0919 9C16.636 7.45584 16.636 4.95227 15.0919 3.40812C13.5477 1.86396 11.0442 1.86396 9.5 3.40812L7.54284 5.36528M11.4572 12.6347L9.5 14.5919C7.95584 16.136 5.45227 16.136 3.90812 14.5919C2.36396 13.0477 2.36396 10.5442 3.90812 9L5.86528 7.04284" stroke="#4E637E" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 537 B

View File

@ -0,0 +1,4 @@
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="2" height="10" rx="1" transform="matrix(0 -1 -1 0 10 6)" fill="white"/>
<rect x="4" width="2" height="10" rx="1" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 244 B

View File

@ -0,0 +1,14 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_169_1229)">
<path d="M17 7H7C5.89543 7 5 7.89543 5 9V18C5 19.1046 5.89543 20 7 20H17C18.1046 20 19 19.1046 19 18V9C19 7.89543 18.1046 7 17 7Z" fill="white"/>
<path d="M17 7.5H7C6.17157 7.5 5.5 8.17157 5.5 9V18C5.5 18.8284 6.17157 19.5 7 19.5H17C17.8284 19.5 18.5 18.8284 18.5 18V9C18.5 8.17157 17.8284 7.5 17 7.5Z" stroke="#A8B6C7" stroke-width="1.5"/>
<path d="M7 7H17C17.5304 7 18.0391 7.21071 18.4142 7.58579C18.7893 7.96086 19 8.46957 19 9V12H5V9C5 8.46957 5.21071 7.96086 5.58579 7.58579C5.96086 7.21071 6.46957 7 7 7Z" fill="#A8B6C7"/>
<path d="M9 5C9.26522 5 9.51957 5.10536 9.70711 5.29289C9.89464 5.48043 10 5.73478 10 6V8H8V6C8 5.73478 8.10536 5.48043 8.29289 5.29289C8.48043 5.10536 8.73478 5 9 5Z" fill="#A8B6C7"/>
<path d="M15 5C15.2652 5 15.5196 5.10536 15.7071 5.29289C15.8946 5.48043 16 5.73478 16 6V8H14V6C14 5.73478 14.1054 5.48043 14.2929 5.29289C14.4804 5.10536 14.7348 5 15 5Z" fill="#A8B6C7"/>
</g>
<defs>
<clipPath id="clip0_169_1229">
<rect width="16" height="16" fill="white" transform="translate(4 5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_169_1253)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.06815e-06 8C3.06815e-06 6.41775 0.469195 4.87103 1.34825 3.55544C2.2273 2.23985 3.47673 1.21447 4.93854 0.608967C6.40034 0.00346625 8.00888 -0.15496 9.56073 0.153721C11.1126 0.462403 12.538 1.22433 13.6569 2.34315C14.7757 3.46197 15.5376 4.88743 15.8463 6.43928C16.155 7.99113 15.9965 9.59966 15.391 11.0615C14.7855 12.5233 13.7602 13.7727 12.4446 14.6518C11.129 15.5308 9.58225 16 8 16C6.94917 16.0009 5.90847 15.7946 4.93745 15.3929C3.96643 14.9912 3.08415 14.402 2.3411 13.6589C1.59804 12.9159 1.0088 12.0336 0.607092 11.0626C0.20538 10.0915 -0.00091762 9.05084 3.06815e-06 8ZM8 6.872L10.072 4.8L11.2 5.928L9.128 8L11.2 10.072L10.072 11.2L8 9.128L5.928 11.2L4.8 10.072L6.872 8L4.8 5.928L5.928 4.8L8 6.872Z" fill="#A8B6C7"/>
</g>
<defs>
<clipPath id="clip0_169_1253">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,3 @@
<svg width="10" height="12" viewBox="0 0 10 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.0007 9.93023C10.0138 10.4593 9.84112 10.9762 9.51269 11.3912C9.37838 11.5781 9.20188 11.7306 8.99755 11.8364C8.79321 11.9422 8.5668 11.9984 8.33669 12.0002H1.66469C1.43459 11.9984 1.20818 11.9422 1.00384 11.8364C0.799503 11.7306 0.623008 11.5781 0.488694 11.3912C0.160266 10.9762 -0.0124006 10.4593 0.000693567 9.93023C-0.00072481 9.51133 0.0213097 9.09267 0.0666936 8.67623C0.11313 8.27361 0.195799 7.876 0.313694 7.48823C0.416695 7.12727 0.570573 6.78281 0.770694 6.46523C0.957125 6.1776 1.20855 5.93782 1.50469 5.76523C1.82451 5.58323 2.18781 5.49162 2.55569 5.50023C2.87512 5.82266 3.25627 6.0774 3.67636 6.24922C4.09645 6.42103 4.54687 6.5064 5.00069 6.50023C5.45452 6.5064 5.90494 6.42103 6.32503 6.24922C6.74512 6.0774 7.12627 5.82266 7.44569 5.50023C7.81539 5.49241 8.1802 5.58577 8.50069 5.77023C8.79683 5.94282 9.04826 6.1826 9.23469 6.47023C9.43481 6.78781 9.58869 7.13227 9.69169 7.49323C9.80925 7.88103 9.89158 8.27864 9.93769 8.68123C9.98189 9.09607 10.0029 9.51305 10.0007 9.93023ZM8.00069 3.00023C8.00686 3.39506 7.93204 3.78697 7.78086 4.15176C7.62967 4.51656 7.40534 4.8465 7.12169 5.12123C6.84696 5.40488 6.51702 5.62921 6.15223 5.78039C5.78743 5.93157 5.39553 6.00639 5.00069 6.00023C4.60586 6.00639 4.21395 5.93157 3.84916 5.78039C3.48436 5.62921 3.15442 5.40488 2.87969 5.12123C2.59605 4.8465 2.37171 4.51656 2.22053 4.15176C2.06935 3.78697 1.99453 3.39506 2.00069 3.00023C1.99453 2.6054 2.06935 2.21349 2.22053 1.8487C2.37171 1.4839 2.59605 1.15396 2.87969 0.879229C3.15442 0.595584 3.48436 0.371249 3.84916 0.220068C4.21395 0.0688871 4.60586 -0.00593148 5.00069 0.000229761C5.39553 -0.00593148 5.78743 0.0688871 6.15223 0.220068C6.51702 0.371249 6.84696 0.595584 7.12169 0.879229C7.40534 1.15396 7.62967 1.4839 7.78086 1.8487C7.93204 2.21349 8.00686 2.6054 8.00069 3.00023Z" fill="#A8B6C7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,16 @@
<svg width="19" height="14" viewBox="0 0 19 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_243_508)">
<path d="M9.5 0.5C7.44666 0.503119 5.44191 1.12498 3.74727 2.28447C2.05263 3.44397 0.74676 5.08726 0 7C0.743991 8.91467 2.04917 10.5598 3.74441 11.7199C5.43966 12.8799 7.44586 13.5005 9.5 13.5005C11.5541 13.5005 13.5603 12.8799 15.2556 11.7199C16.9508 10.5598 18.256 8.91467 19 7C18.2532 5.08726 16.9474 3.44397 15.2527 2.28447C13.5581 1.12498 11.5533 0.503119 9.5 0.5ZM9.5 11.333C8.64238 11.336 7.80317 11.0844 7.08864 10.6101C6.37411 10.1358 5.81641 9.46007 5.48615 8.66859C5.1559 7.8771 5.06794 7.00541 5.23344 6.16391C5.39893 5.3224 5.81042 4.54893 6.4158 3.94145C7.02118 3.33397 7.79322 2.9198 8.63414 2.75139C9.47507 2.58298 10.3471 2.66791 11.1397 2.99541C11.9323 3.32292 12.6099 3.87828 13.0867 4.59116C13.5635 5.30404 13.818 6.14238 13.818 7C13.8196 8.14707 13.3657 9.24784 12.556 10.0604C11.7463 10.8729 10.6471 11.3306 9.5 11.333ZM9.5 4.4C8.98539 4.39822 8.48182 4.54919 8.05307 4.8338C7.62432 5.1184 7.28967 5.52384 7.09151 5.99877C6.89334 6.4737 6.84056 6.99675 6.93987 7.5017C7.03917 8.00664 7.28608 8.47075 7.64934 8.83527C8.01259 9.19979 8.47585 9.44831 8.98045 9.54936C9.48504 9.65042 10.0083 9.59946 10.4839 9.40294C10.9595 9.20642 11.3661 8.87317 11.6522 8.44541C11.9383 8.01765 12.091 7.51461 12.091 7C12.0921 6.65903 12.0258 6.32119 11.8961 6.00586C11.7664 5.69052 11.5757 5.40388 11.335 5.16236C11.0943 4.92084 10.8083 4.72917 10.4935 4.59835C10.1786 4.46754 9.84098 4.40013 9.5 4.4Z" fill="#C6D2E0"/>
<mask id="mask0_243_508" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="19" height="14">
<path d="M9.5 0.5C7.44666 0.503119 5.44191 1.12498 3.74727 2.28447C2.05263 3.44397 0.74676 5.08726 0 7C0.743991 8.91467 2.04917 10.5598 3.74441 11.7199C5.43966 12.8799 7.44586 13.5005 9.5 13.5005C11.5541 13.5005 13.5603 12.8799 15.2556 11.7199C16.9508 10.5598 18.256 8.91467 19 7C18.2532 5.08726 16.9474 3.44397 15.2527 2.28447C13.5581 1.12498 11.5533 0.503119 9.5 0.5ZM9.5 11.333C8.64238 11.336 7.80317 11.0844 7.08864 10.6101C6.37411 10.1358 5.81641 9.46007 5.48615 8.66859C5.1559 7.8771 5.06794 7.00541 5.23344 6.16391C5.39893 5.3224 5.81042 4.54893 6.4158 3.94145C7.02118 3.33397 7.79322 2.9198 8.63414 2.75139C9.47507 2.58298 10.3471 2.66791 11.1397 2.99541C11.9323 3.32292 12.6099 3.87828 13.0867 4.59116C13.5635 5.30404 13.818 6.14238 13.818 7C13.8196 8.14707 13.3657 9.24784 12.556 10.0604C11.7463 10.8729 10.6471 11.3306 9.5 11.333ZM9.5 4.4C8.98539 4.39822 8.48182 4.54919 8.05307 4.8338C7.62432 5.1184 7.28967 5.52384 7.09151 5.99877C6.89334 6.4737 6.84056 6.99675 6.93987 7.5017C7.03917 8.00664 7.28608 8.47075 7.64934 8.83527C8.01259 9.19979 8.47585 9.44831 8.98045 9.54936C9.48504 9.65042 10.0083 9.59946 10.4839 9.40294C10.9595 9.20642 11.3661 8.87317 11.6522 8.44541C11.9383 8.01765 12.091 7.51461 12.091 7C12.0921 6.65903 12.0258 6.32119 11.8961 6.00586C11.7664 5.69052 11.5757 5.40388 11.335 5.16236C11.0943 4.92084 10.8083 4.72917 10.4935 4.59835C10.1786 4.46754 9.84098 4.40013 9.5 4.4Z" fill="white"/>
</mask>
<g mask="url(#mask0_243_508)">
<path d="M15.3699 -0.375707L17.3752 1.56459L3.91121 14.7797L1.90586 12.8394L15.3699 -0.375707Z" fill="white"/>
</g>
</g>
<defs>
<clipPath id="clip0_243_508">
<rect width="19" height="13" fill="white" transform="translate(0 0.5)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,3 @@
<svg width="9" height="12" viewBox="0 0 9 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.50011 5.50004H6.50011V4.00004C6.5042 3.73682 6.45431 3.47555 6.35352 3.23236C6.25274 2.98916 6.10319 2.7692 5.91411 2.58604C5.73094 2.39696 5.51098 2.24741 5.26779 2.14662C5.02459 2.04584 4.76333 1.99595 4.50011 2.00004C4.23689 1.99595 3.97562 2.04584 3.73243 2.14662C3.48924 2.24741 3.26927 2.39696 3.08611 2.58604C2.89703 2.7692 2.74748 2.98916 2.64669 3.23236C2.54591 3.47555 2.49602 3.73682 2.50011 4.00004V5.50004ZM9.00011 6.25004V10.75C9.00182 10.8488 8.98327 10.9469 8.9456 11.0382C8.90794 11.1295 8.85195 11.2122 8.78111 11.281C8.71226 11.3519 8.62962 11.4079 8.53829 11.4455C8.44696 11.4832 8.34888 11.5017 8.25011 11.5H0.750108C0.651333 11.5017 0.553255 11.4832 0.461927 11.4455C0.370599 11.4079 0.28796 11.3519 0.219108 11.281C0.148264 11.2122 0.0922805 11.1295 0.0546143 11.0382C0.016948 10.9469 -0.00160222 10.8488 0.000108407 10.75V6.25004C-0.00160222 6.15126 0.016948 6.05318 0.0546143 5.96186C0.0922805 5.87053 0.148264 5.78789 0.219108 5.71904C0.28796 5.64819 0.370599 5.59221 0.461927 5.55454C0.553255 5.51688 0.651333 5.49833 0.750108 5.50004H1.00011V4.00004C0.994168 3.53989 1.08259 3.08341 1.25991 2.65876C1.43723 2.23412 1.6997 1.85031 2.03111 1.53104C2.35038 1.19963 2.73419 0.937163 3.15883 0.759839C3.58348 0.582516 4.03996 0.494096 4.50011 0.500037C4.96025 0.494096 5.41673 0.582516 5.84138 0.759839C6.26603 0.937163 6.64983 1.19963 6.96911 1.53104C7.30052 1.85031 7.56298 2.23412 7.74031 2.65876C7.91763 3.08341 8.00605 3.53989 8.00011 4.00004V5.50004H8.25011C8.34888 5.49833 8.44696 5.51688 8.53829 5.55454C8.62962 5.59221 8.71226 5.64819 8.78111 5.71904C8.85195 5.78789 8.90794 5.87053 8.9456 5.96186C8.98327 6.05318 9.00182 6.15126 9.00011 6.25004Z" fill="#A8B6C7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,3 @@
<svg width="19" height="14" viewBox="0 0 19 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.5 0.522583C7.4493 0.523752 5.44643 1.14218 3.75206 2.29738C2.0577 3.45258 0.750291 5.09107 0 6.99958C0.749121 8.90896 2.05622 10.5483 3.75083 11.7038C5.44544 12.8593 7.44892 13.4774 9.5 13.4774C11.5511 13.4774 13.5546 12.8593 15.2492 11.7038C16.9438 10.5483 18.2509 8.90896 19 6.99958C18.2497 5.09107 16.9423 3.45258 15.2479 2.29738C13.5536 1.14218 11.5507 0.523752 9.5 0.522583ZM9.5 11.3226C8.64598 11.3226 7.81114 11.0693 7.10105 10.5949C6.39096 10.1204 5.83751 9.44602 5.51069 8.65701C5.18387 7.868 5.09836 6.99979 5.26497 6.16218C5.43158 5.32457 5.84283 4.55518 6.44671 3.9513C7.0506 3.34741 7.81999 2.93616 8.6576 2.76955C9.49521 2.60294 10.3634 2.68845 11.1524 3.01527C11.9414 3.34209 12.6158 3.89554 13.0903 4.60563C13.5648 5.31572 13.818 6.15056 13.818 7.00458C13.8175 8.14963 13.3624 9.24762 12.5527 10.0573C11.743 10.867 10.645 11.3221 9.5 11.3226ZM9.5 4.41358C8.98755 4.41358 8.4866 4.56554 8.06052 4.85025C7.63443 5.13495 7.30233 5.53961 7.10623 6.01305C6.91012 6.48649 6.85881 7.00746 6.95879 7.51006C7.05876 8.01267 7.30553 8.47434 7.66789 8.8367C8.03024 9.19905 8.49192 9.44582 8.99452 9.5458C9.49713 9.64577 10.0181 9.59446 10.4915 9.39835C10.965 9.20225 11.3696 8.87015 11.6543 8.44407C11.939 8.01798 12.091 7.51703 12.091 7.00458C12.0922 6.66376 12.026 6.32606 11.8963 6.01089C11.7666 5.69572 11.5758 5.40929 11.3351 5.16806C11.0943 4.92683 10.8082 4.73555 10.4933 4.60521C10.1784 4.47488 9.84083 4.40805 9.5 4.40858V4.41358Z" fill="#A8B6C7"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 12C4 10.4178 4.46919 8.87103 5.34825 7.55544C6.2273 6.23985 7.47672 5.21447 8.93853 4.60897C10.4003 4.00347 12.0089 3.84504 13.5607 4.15372C15.1126 4.4624 16.538 5.22433 17.6569 6.34315C18.7757 7.46197 19.5376 8.88743 19.8463 10.4393C20.155 11.9911 19.9965 13.5997 19.391 15.0615C18.7855 16.5233 17.7602 17.7727 16.4446 18.6518C15.129 19.5308 13.5822 20 12 20C10.9492 20.0009 9.90846 19.7946 8.93744 19.3929C7.96642 18.9912 7.08415 18.402 6.34109 17.6589C5.59804 16.9159 5.0088 16.0336 4.60709 15.0626C4.20538 14.0915 3.99908 13.0508 4 12ZM12 10.872L14.072 8.8L15.2 9.928L13.128 12L15.2 14.072L14.072 15.2L12 13.128L9.928 15.2L8.8 14.072L10.872 12L8.8 9.928L9.928 8.8L12 10.872Z" fill="#D9E1EC"/>
</svg>

After

Width:  |  Height:  |  Size: 852 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4C14.866 4 18 7.13401 18 11C18 12.6663 17.4164 14.1955 16.4443 15.3975C16.4539 15.4045 16.4644 15.4104 16.4736 15.418L16.5303 15.4697L19.5303 18.4697L19.582 18.5264C19.8223 18.8209 19.8049 19.2557 19.5303 19.5303C19.2557 19.8049 18.8209 19.8223 18.5264 19.582L18.4697 19.5303L15.4697 16.5303L15.418 16.4736C15.4104 16.4644 15.4045 16.4539 15.3975 16.4443C14.1955 17.4164 12.6663 18 11 18C7.13401 18 4 14.866 4 11C4 7.13401 7.13401 4 11 4ZM11 5.5C7.96243 5.5 5.5 7.96243 5.5 11C5.5 14.0376 7.96243 16.5 11 16.5C14.0376 16.5 16.5 14.0376 16.5 11C16.5 7.96243 14.0376 5.5 11 5.5Z" fill="#A8B6C7"/>
</svg>

After

Width:  |  Height:  |  Size: 711 B

View File

@ -0,0 +1,3 @@
<svg width="14" height="8" viewBox="0 0 14 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 1L7 7L13 1" stroke="#A8B6C7" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 210 B

View File

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 12H21" stroke="#101010" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 6H21" stroke="#101010" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 18H21" stroke="#101010" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 410 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.7072 5.29289C6.31668 4.90237 5.68351 4.90237 5.29299 5.29289C4.90246 5.68342 4.90246 6.31658 5.29299 6.7071L10.5858 12L5.29289 17.2929C4.90237 17.6834 4.90237 18.3166 5.29289 18.7071C5.68342 19.0976 6.31658 19.0976 6.70711 18.7071L12 13.4142L17.293 18.7071C17.6835 19.0976 18.3167 19.0976 18.7072 18.7071C19.0977 18.3166 19.0977 17.6834 18.7072 17.2929L13.4143 12L18.7071 6.70711C19.0976 6.31658 19.0976 5.68342 18.7071 5.29289C18.3166 4.90237 17.6834 4.90237 17.2929 5.29289L12 10.5857L6.7072 5.29289Z" fill="#101010"/>
</svg>

After

Width:  |  Height:  |  Size: 636 B

View File

@ -0,0 +1,4 @@
<svg width="17" height="20" viewBox="0 0 17 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.2104 18.9998V16.9001C15.2104 15.9767 14.882 15.1046 14.3177 14.4725C13.7907 13.8824 13.1027 13.5487 12.3926 13.5092L12.2499 13.5053H4.74992C3.98984 13.5053 3.24431 13.8429 2.68218 14.4725C2.1178 15.1046 1.7894 15.9767 1.7894 16.9001V18.9998C1.7894 19.4445 1.43594 19.805 0.999923 19.805C0.563909 19.805 0.210449 19.4445 0.210449 18.9998V16.9001C0.210449 15.5957 0.672785 14.3313 1.51493 13.3881C2.35931 12.4424 3.52093 11.8947 4.74992 11.8947H12.2499L12.4797 11.901C13.623 11.9647 14.6933 12.5016 15.4849 13.3881C16.3271 14.3313 16.7894 15.5957 16.7894 16.9001V18.9998C16.7894 19.4445 16.4359 19.805 15.9999 19.805C15.5639 19.805 15.2104 19.4445 15.2104 18.9998Z" fill="white"/>
<path d="M11.681 5.04991C11.6809 3.25793 10.2568 1.80526 8.49996 1.80526C6.74315 1.80531 5.31899 3.25796 5.31894 5.04991C5.31894 6.84189 6.74312 8.2945 8.49996 8.29455C10.2568 8.29455 11.681 6.84193 11.681 5.04991ZM13.2599 5.04991C13.2599 7.73139 11.1289 9.90508 8.49996 9.90508C5.87109 9.90503 3.73999 7.73136 3.73999 5.04991C3.74004 2.36849 5.87112 0.194787 8.49996 0.194736C11.1288 0.194736 13.2599 2.36846 13.2599 5.04991Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,6 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.4498 1.90001H9.54985C5.51941 1.90001 3.50419 1.90001 2.2521 3.15213C1 4.40424 1 6.4195 1 10.45C1 14.4805 1 16.4958 2.2521 17.7479C3.50419 19 5.51941 19 9.54985 19C13.5803 19 15.5955 19 16.8476 17.7479C18.0997 16.4958 18.0997 14.4805 18.0997 10.45V9.55001" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
<path d="M18.9996 4.15C18.9996 5.8897 17.5893 7.3 15.8497 7.3C14.11 7.3 12.6997 5.8897 12.6997 4.15C12.6997 2.4103 14.11 1 15.8497 1C17.5893 1 18.9996 2.4103 18.9996 4.15Z" stroke="white" stroke-width="1.5"/>
<path d="M5.5 9.1H9.09994" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.5 13.6H12.6999" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 861 B

View File

@ -0,0 +1,5 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.5 2.00372C10.6049 1.99039 9.7047 2.01289 8.8294 2.07107C4.64639 2.34913 1.31441 5.72838 1.04024 9.97072C0.986587 10.8009 0.986587 11.6607 1.04024 12.4909C1.1401 14.036 1.82343 15.4666 2.62791 16.6746C3.09501 17.5203 2.78674 18.5758 2.30021 19.4978C1.94941 20.1626 1.77401 20.495 1.91484 20.7351C2.05568 20.9752 2.37026 20.9829 2.99943 20.9982C4.24367 21.0285 5.08268 20.6757 5.74868 20.1846C6.1264 19.9061 6.31527 19.7668 6.44544 19.7508C6.5756 19.7348 6.83177 19.8403 7.34401 20.0513C7.8044 20.2409 8.33896 20.3579 8.8294 20.3905C10.2536 20.4852 11.7435 20.4854 13.1706 20.3905C17.3536 20.1125 20.6856 16.7332 20.9598 12.4909C21.0021 11.836 21.011 11.1627 20.9866 10.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.5 14H14.5M7.5 9H11" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14 4.5H21M17.5 1L17.5 8" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,5 @@
<svg width="19" height="22" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18 8.90909L18 6.81818C18 5.12494 18 4.27832 17.732 3.60214C17.3013 2.5151 16.3902 1.65765 15.2352 1.2522C14.5168 1 13.6173 1 11.8182 0.999999C8.66981 0.999999 7.09563 1 5.83836 1.44135C3.81714 2.15088 2.22282 3.65142 1.46894 5.55375C1 6.73706 1 8.21865 1 11.1818L1 13.7273C1 16.7966 1 18.3313 1.8477 19.3971C2.09058 19.7025 2.37862 19.9736 2.70307 20.2022C3.83546 21 5.46607 21 8.72727 21L9.5 21C10.0347 21 11.0337 21 11.5 20.9972" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1 11C1 9.15905 2.49238 7.66667 4.33333 7.66667C4.99912 7.66667 5.78404 7.78333 6.43137 7.60988C7.00652 7.45576 7.45576 7.00652 7.60988 6.43136C7.78333 5.78404 7.66667 4.99912 7.66667 4.33333C7.66667 2.49238 9.15905 1 11 1" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18 15H10.5M18 15C18 15.7002 16.0057 17.0085 15.5 17.5M18 15C18 14.2998 16.0057 12.9915 15.5 12.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 10.9899V13.0101H7.87879L13.4343 18.5657L12 20L4 12L12 4L13.4343 5.43434L7.87879 10.9899H20Z" fill="#2B2B2B"/>
</svg>

After

Width:  |  Height:  |  Size: 226 B

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.7072 5.29289C6.31668 4.90237 5.68351 4.90237 5.29299 5.29289C4.90246 5.68342 4.90246 6.31658 5.29299 6.70711L10.5858 12L5.29289 17.2929C4.90237 17.6834 4.90237 18.3166 5.29289 18.7071C5.68342 19.0976 6.31658 19.0976 6.70711 18.7071L12 13.4142L17.293 18.7071C17.6835 19.0976 18.3167 19.0976 18.7072 18.7071C19.0977 18.3166 19.0977 17.6834 18.7072 17.2929L13.4143 12L18.7071 6.70711C19.0976 6.31658 19.0976 5.68342 18.7071 5.29289C18.3166 4.90237 17.6834 4.90237 17.2929 5.29289L12 10.5857L6.7072 5.29289Z" fill="#535763"/>
</svg>

After

Width:  |  Height:  |  Size: 637 B

View File

@ -0,0 +1,3 @@
<svg width="6" height="11" viewBox="0 0 6 11" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 1.5L5 5.5L1 9.5" stroke="#8F9CB1" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 213 B

View File

@ -0,0 +1,5 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="#101010"/>
<path d="M34 34.1765V31.5686C34 30.1853 33.4996 28.8587 32.6088 27.8806C31.718 26.9024 30.5098 26.3529 29.25 26.3529H19.75C18.4902 26.3529 17.282 26.9024 16.3912 27.8806C15.5004 28.8587 15 30.1853 15 31.5686V34.1765" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M24.5001 21.8824C27.2778 21.8824 29.5295 19.6306 29.5295 16.8529C29.5295 14.0753 27.2778 11.8235 24.5001 11.8235C21.7224 11.8235 19.4707 14.0753 19.4707 16.8529C19.4707 19.6306 21.7224 21.8824 24.5001 21.8824Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 756 B

View File

@ -0,0 +1,8 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 4C1 2.34315 2.34315 1 4 1H16C17.6569 1 19 2.34315 19 4V18C19 19.6569 17.6569 21 16 21H4C2.34315 21 1 19.6569 1 18V4Z" fill="white"/>
<path d="M19 10V9C19 5.22876 19 3.34315 17.7595 2.17157C16.519 1 14.5225 1 10.5294 1L9.47059 1C5.47752 1 3.48098 1 2.24049 2.17157C1 3.34315 1 5.22876 1 9L1 13C1 16.7712 1 18.6569 2.24049 19.8284C3.48098 21 5.47751 21 9.47059 21H10" stroke="#7896BA" stroke-width="1.5" stroke-linecap="round"/>
<path d="M6 6H14" stroke="#7896BA" stroke-width="1.5" stroke-linecap="round"/>
<path d="M6 11H14" stroke="#7896BA" stroke-width="1.5" stroke-linecap="round"/>
<path d="M17.3285 13.8039C17.6619 13.4705 17.8285 13.3039 18.0019 13.2037C18.4725 12.9321 19.0522 12.9321 19.5227 13.2037C19.6961 13.3039 19.8628 13.4705 20.1961 13.8039C20.5295 14.1372 20.6961 14.3039 20.7963 14.4773C21.0679 14.9478 21.0679 15.5275 20.7963 15.9981C20.6961 16.1715 20.5295 16.3381 20.1961 16.6715L16.8883 19.9793C16.2274 20.6402 15.2301 20.6671 14.3477 20.8557C13.6578 21.0032 13.3128 21.077 13.1179 20.8821C12.923 20.6872 12.9968 20.3422 13.1443 19.6523C13.3329 18.7699 13.3598 17.7726 14.0207 17.1117L17.3285 13.8039Z" fill="#F4F9FF"/>
<path d="M14.3477 20.8557L14.1909 20.1223L14.3477 20.8557ZM13.1443 19.6523L13.8777 19.8091L13.1443 19.6523ZM14.0207 17.1117L13.4903 16.5814L14.0207 17.1117ZM16.8883 19.9793L16.358 19.449L16.8883 19.9793ZM20.7963 14.4773L21.4458 14.1023V14.1023L20.7963 14.4773ZM20.1961 16.6715L20.7265 17.2018L20.1961 16.6715ZM20.7963 15.9981L21.4458 16.3731L20.7963 15.9981ZM19.5227 13.2037L19.8977 12.5542V12.5542L19.5227 13.2037ZM17.3285 13.8039L17.8588 14.3342L17.3285 13.8039ZM18.0019 13.2037L17.6269 12.5542V12.5542L18.0019 13.2037ZM20.1961 16.6715L19.6658 16.1412L16.358 19.449L16.8883 19.9793L17.4186 20.5097L20.7265 17.2018L20.1961 16.6715ZM14.0207 17.1117L14.551 17.642L17.8588 14.3342L17.3285 13.8039L16.7982 13.2735L13.4903 16.5814L14.0207 17.1117ZM14.3477 20.8557L14.1909 20.1223C14.0155 20.1598 13.8753 20.1897 13.7548 20.2121C13.6333 20.2347 13.5536 20.2454 13.4996 20.2488C13.4441 20.2524 13.4479 20.2458 13.4825 20.2547C13.5296 20.2669 13.5936 20.2972 13.6482 20.3518L13.1179 20.8821L12.5876 21.4124C12.9113 21.7362 13.3158 21.7636 13.5948 21.7458C13.8603 21.7289 14.1839 21.6577 14.5045 21.5891L14.3477 20.8557ZM13.1443 19.6523L12.4109 19.4955C12.3423 19.8161 12.2711 20.1397 12.2542 20.4052C12.2364 20.6842 12.2638 21.0887 12.5876 21.4124L13.1179 20.8821L13.6482 20.3518C13.7028 20.4064 13.7331 20.4704 13.7453 20.5175C13.7542 20.5521 13.7476 20.5559 13.7512 20.5004C13.7546 20.4464 13.7653 20.3667 13.7879 20.2452C13.8103 20.1247 13.8402 19.9845 13.8777 19.8091L13.1443 19.6523ZM20.1961 13.8039L19.6658 14.3342C20.0333 14.7017 20.1084 14.786 20.1467 14.8523L20.7963 14.4773L21.4458 14.1023C21.2839 13.8218 21.0257 13.5728 20.7265 13.2735L20.1961 13.8039ZM20.1961 16.6715L20.7265 17.2018C21.0257 16.9026 21.2839 16.6535 21.4458 16.3731L20.7963 15.9981L20.1467 15.6231C20.1084 15.6894 20.0333 15.7737 19.6658 16.1412L20.1961 16.6715ZM20.7963 14.4773L20.1467 14.8523C20.2844 15.0908 20.2844 15.3846 20.1467 15.6231L20.7963 15.9981L21.4458 16.3731C21.8514 15.6705 21.8514 14.8049 21.4458 14.1023L20.7963 14.4773ZM20.1961 13.8039L20.7265 13.2735C20.4272 12.9743 20.1782 12.7161 19.8977 12.5542L19.5227 13.2037L19.1477 13.8533C19.214 13.8916 19.2983 13.9667 19.6658 14.3342L20.1961 13.8039ZM17.3285 13.8039L17.8588 14.3342C18.2263 13.9667 18.3106 13.8916 18.3769 13.8533L18.0019 13.2037L17.6269 12.5542C17.3465 12.7161 17.0974 12.9743 16.7982 13.2735L17.3285 13.8039ZM19.5227 13.2037L19.8977 12.5542C19.1951 12.1486 18.3295 12.1486 17.6269 12.5542L18.0019 13.2037L18.3769 13.8533C18.6154 13.7156 18.9092 13.7156 19.1477 13.8533L19.5227 13.2037ZM16.8883 19.9793L16.358 19.449C16.1624 19.6445 15.8952 19.771 15.5155 19.8679C15.3253 19.9165 15.1224 19.954 14.8963 19.9931C14.679 20.0306 14.4303 20.0711 14.1909 20.1223L14.3477 20.8557L14.5045 21.5891C14.7063 21.546 14.9131 21.5124 15.1517 21.4712C15.3814 21.4315 15.6346 21.3856 15.8866 21.3213C16.3914 21.1924 16.9533 20.975 17.4186 20.5097L16.8883 19.9793ZM13.1443 19.6523L13.8777 19.8091C13.9289 19.5697 13.9694 19.321 14.0069 19.1037C14.046 18.8776 14.0835 18.6747 14.1321 18.4845C14.229 18.1048 14.3555 17.8376 14.551 17.642L14.0207 17.1117L13.4903 16.5814C13.025 17.0467 12.8076 17.6086 12.6787 18.1134C12.6144 18.3654 12.5685 18.6186 12.5288 18.8483C12.4876 19.0869 12.454 19.2937 12.4109 19.4955L13.1443 19.6523Z" fill="#7896BA"/>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -0,0 +1,7 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2435 0.855705C15.4097 0.855705 19.5984 4.76701 19.5984 9.59169C19.5983 14.4163 15.4097 18.3277 10.2435 18.3277C9.21282 18.3276 8.22209 18.1686 7.2948 17.8811L6.93848 18.2343L3.16521 18.8557L4.21196 16.2668C2.1806 14.6643 0.889448 12.2694 0.889404 9.59169C0.889404 4.76712 5.07732 0.85588 10.2435 0.855705Z" fill="white"/>
<path d="M0 9.59678C0.000163056 4.27209 4.50324 3.08562e-05 9.99974 0C10.5114 0 11.0145 0.0367594 11.5062 0.108105L11.994 0.190773L12.0635 0.208033C12.4039 0.310445 12.6172 0.654717 12.5476 1.00928C12.478 1.36387 12.15 1.6032 11.7958 1.5707L11.7245 1.5607L11.3034 1.48894C10.8786 1.42731 10.4433 1.39537 9.99974 1.39537C5.22716 1.3954 1.40338 5.09254 1.40322 9.59678C1.40322 11.7648 2.28418 13.7385 3.73095 15.2082L3.89265 15.3881C4.25873 15.8329 4.5322 16.4532 4.40149 17.1468V17.1487C4.30484 17.6562 4.13751 18.1444 3.91092 18.6022C4.74024 18.5824 5.56144 18.369 6.29803 17.9772L6.82058 17.7073C6.95458 17.6437 7.12248 17.5708 7.30476 17.5429L7.43723 17.5302C7.56728 17.5242 7.69099 17.5364 7.79808 17.5511C7.94476 17.5712 8.12535 17.6059 8.33159 17.6447L8.74543 17.7119C9.16053 17.77 9.57922 17.7996 9.99883 17.7991H9.99974L10.4446 17.7882C15.0079 17.5669 18.5963 13.9603 18.5963 9.59678C18.5964 9.21163 18.9105 8.89916 19.2979 8.8991C19.6853 8.8991 19.9993 9.21159 19.9995 9.59678C19.9995 14.9216 15.4964 19.1936 9.99974 19.1936C9.51427 19.1941 9.02994 19.1608 8.54993 19.0936L8.07032 19.0155C7.84995 18.9741 7.71018 18.948 7.60623 18.9337C7.56695 18.9284 7.5409 18.924 7.52493 18.9228C7.5106 18.9282 7.47931 18.9408 7.42535 18.9664L6.96035 19.2072C5.6279 19.9161 4.07257 20.1676 2.57256 19.8885C2.32985 19.8433 2.12903 19.6747 2.04362 19.4443C1.95822 19.2139 2.00084 18.9558 2.15598 18.7648L2.31311 18.5586C2.66358 18.067 2.90718 17.4969 3.02294 16.8888C3.05428 16.7202 2.99503 16.5004 2.81374 16.2793L2.72787 16.1839C1.04031 14.4693 0 12.1512 0 9.59678Z" fill="#7896BA"/>
<path d="M19.2978 4.88379C19.2978 6.68195 17.8408 8.13965 16.0434 8.13965C14.2461 8.13965 12.7891 6.68195 12.7891 4.88379C12.7891 3.08563 14.2461 1.62794 16.0434 1.62794C17.8408 1.62794 19.2978 3.08563 19.2978 4.88379Z" fill="#F4F9FF"/>
<path d="M18.5967 4.88379C18.5967 3.46695 17.4492 2.32562 16.0433 2.32562C14.6376 2.32578 13.4909 3.46705 13.4909 4.88379C13.4909 6.30053 14.6376 7.4418 16.0433 7.44196C17.4492 7.44196 18.5967 6.30063 18.5967 4.88379ZM19.9999 4.88379C19.9999 7.06327 18.2322 8.83733 16.0433 8.83733C13.8546 8.83717 12.0876 7.06318 12.0876 4.88379C12.0876 2.70441 13.8546 0.930412 16.0433 0.930252C18.2322 0.930252 19.9999 2.70431 19.9999 4.88379Z" fill="#7896BA"/>
<path d="M6.28867 9.06989L6.38459 9.07444C6.85625 9.12213 7.22415 9.51853 7.22415 10.0001C7.22415 10.4817 6.85625 10.8781 6.38459 10.9258L6.28867 10.9304H6.28045C5.7638 10.9304 5.34497 10.5139 5.34497 10.0001C5.34497 9.48638 5.7638 9.06989 6.28045 9.06989H6.28867ZM10.0041 9.06989L10.0991 9.07444C10.571 9.12186 10.9396 9.51833 10.9396 10.0001C10.9396 10.4819 10.571 10.8784 10.0991 10.9258L10.0041 10.9304H9.99586C9.47921 10.9304 9.06039 10.5139 9.06039 10.0001C9.06039 9.48638 9.47921 9.06989 9.99586 9.06989H10.0041ZM13.7186 9.06989L13.8145 9.07444C14.2863 9.122 14.6541 9.51843 14.6541 10.0001C14.6541 10.4818 14.2863 10.8783 13.8145 10.9258L13.7186 10.9304H13.7104C13.1939 10.9302 12.7749 10.5138 12.7749 10.0001C12.7749 9.48648 13.1939 9.07005 13.7104 9.06989H13.7186Z" fill="#7896BA"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,5 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 1.5L13 2.5L19 8.5L20 9.5L20.5 10.5V11.5L19.5 12.5L19 13.5L18.5 14.5L18 16.5L17.5 18H16L14.5 18.5L12.5 19.5L11 20.5L9 19.5L8 18.5L5 18L4 17L3.5 15L3 13L1.5 11.5V10L3.5 7.5L4 4.5L5.5 4L9 2.5L11 1.5Z" fill="white"/>
<path d="M13.2618 2.59937C12.1956 1.53312 11.6625 1 11 1C10.3375 1 9.8044 1.53312 8.73815 2.59937C8.09832 3.2392 7.46427 3.53626 6.55208 3.53626C5.7556 3.53626 4.62243 3.38178 4 4.00944C3.38249 4.63214 3.53628 5.76065 3.53628 6.55206C3.53628 7.46428 3.2392 8.09832 2.59935 8.73817C1.53312 9.8044 1.00001 10.3375 1 11C1.00002 11.6624 1.53314 12.1956 2.59938 13.2618C3.31616 13.9786 3.53628 14.4414 3.53628 15.4479C3.53628 16.2444 3.38181 17.3776 4.00949 18C4.63218 18.6175 5.76068 18.4637 6.55206 18.4637C7.52349 18.4637 7.99128 18.6537 8.68457 19.347C9.27492 19.9374 10.0663 21 11 21C11.9337 21 12.7251 19.9374 13.3154 19.347C14.0087 18.6537 14.4765 18.4637 15.4479 18.4637C16.2393 18.4637 17.3678 18.6175 17.9905 18M19.4006 8.73817C20.4669 9.8044 21 10.3375 21 11C21 11.6624 20.4669 12.1956 19.4006 13.2618C18.6838 13.9786 18.4637 14.4414 18.4637 15.4479C18.4637 16.2444 18.6182 17.3776 17.9905 18M17.9905 18H18" stroke="#7896BA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.5 8.5L11 12L20.0002 2" stroke="#7896BA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,3 @@
<svg width="6" height="11" viewBox="0 0 6 11" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 1.5L5 5.5L1 9.5" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 211 B

View File

@ -0,0 +1,3 @@
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.29297 0.292734C5.65908 -0.0733816 6.23809 -0.0959754 6.63086 0.224375L6.70703 0.292734L11.707 5.29273C12.0976 5.68326 12.0976 6.31627 11.707 6.7068L6.70703 11.7068C6.31651 12.0973 5.68349 12.0973 5.29297 11.7068C4.90244 11.3163 4.90244 10.6833 5.29297 10.2927L8.58594 6.99977H1C0.447715 6.99977 0 6.55205 0 5.99977C0 5.44748 0.447715 4.99977 1 4.99977H8.58594L5.29297 1.7068L5.22461 1.63063C4.90426 1.23785 4.92685 0.65885 5.29297 0.292734Z" fill="#7896BA" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@ -0,0 +1,6 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.5 3H11.5C7.02166 3 4.78249 3 3.39124 4.39124C2 5.78249 2 8.02166 2 12.5C2 16.9783 2 19.2175 3.39124 20.6088C4.78249 22 7.02166 22 11.5 22C15.9783 22 18.2175 22 19.6088 20.6088C21 19.2175 21 16.9783 21 12.5V11.5" stroke="#B2A3FF" stroke-width="1.5" stroke-linecap="round"/>
<path d="M22 5.5C22 7.433 20.433 9 18.5 9C16.567 9 15 7.433 15 5.5C15 3.567 16.567 2 18.5 2C20.433 2 22 3.567 22 5.5Z" stroke="#B2A3FF" stroke-opacity="0.5" stroke-width="1.5"/>
<path d="M7 11H11" stroke="#B2A3FF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7 16H15" stroke="#B2A3FF" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 775 B

View File

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 11V7.81818C20 6.12494 20 5.27832 19.732 4.60214C19.3012 3.5151 18.3902 2.65765 17.2352 2.2522C16.5168 2 15.6173 2 13.8182 2C10.6698 2 9.09563 2 7.83836 2.44135C5.81714 3.15089 4.22281 4.65142 3.46894 6.55375C3 7.73706 3 9.21865 3 12.1818V14.7273C3 17.7966 3 19.3313 3.8477 20.3971C4.09058 20.7025 4.37862 20.9736 4.70307 21.2022C5.74797 21.9384 7.21706 21.9952 10 21.9996" stroke="#FFA1A1" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3 12C3 10.1591 4.49238 8.66667 6.33333 8.66667C6.99912 8.66667 7.78404 8.78333 8.43137 8.60988C9.00652 8.45576 9.45576 8.00652 9.60988 7.43136C9.78333 6.78404 9.66667 5.99912 9.66667 5.33333C9.66667 3.49238 11.1591 2 13 2" stroke="#FFA1A1" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.3477 21.8557L14.1909 21.1223L14.3477 21.8557ZM13.1443 20.6523L13.8777 20.8091L13.1443 20.6523ZM14.0207 18.1117L13.4903 17.5814H13.4903L14.0207 18.1117ZM20.7963 15.4773L21.4458 15.1023L20.7963 15.4773ZM20.7963 16.9981L21.4458 17.3731L20.7963 16.9981ZM19.5227 14.2037L19.8977 13.5542L19.5227 14.2037ZM17.3285 14.8039L17.8588 15.3342L17.3285 14.8039ZM18.0019 14.2037L17.6269 13.5542L17.6269 13.5542L18.0019 14.2037ZM20.1961 17.6715L19.6658 17.1412L16.358 20.449L16.8883 20.9793L17.4186 21.5097L20.7265 18.2018L20.1961 17.6715ZM14.0207 18.1117L14.551 18.642L17.8588 15.3342L17.3285 14.8039L16.7982 14.2735L13.4903 17.5814L14.0207 18.1117ZM14.3477 21.8557L14.1909 21.1223C14.0155 21.1598 13.8753 21.1897 13.7548 21.2121C13.6333 21.2347 13.5536 21.2454 13.4996 21.2488C13.4441 21.2524 13.4479 21.2458 13.4825 21.2547C13.5296 21.2669 13.5936 21.2972 13.6482 21.3518L13.1179 21.8821L12.5876 22.4124C12.9113 22.7362 13.3158 22.7636 13.5948 22.7458C13.8603 22.7289 14.1839 22.6577 14.5045 22.5891L14.3477 21.8557ZM13.1443 20.6523L12.4109 20.4955C12.3423 20.8161 12.2711 21.1397 12.2542 21.4052C12.2364 21.6842 12.2638 22.0887 12.5876 22.4124L13.1179 21.8821L13.6482 21.3518C13.7028 21.4064 13.7331 21.4704 13.7453 21.5175C13.7542 21.5521 13.7476 21.5559 13.7512 21.5004C13.7546 21.4464 13.7653 21.3667 13.7879 21.2452C13.8103 21.1247 13.8402 20.9845 13.8777 20.8091L13.1443 20.6523ZM20.1961 14.8039L19.6658 15.3342C20.0333 15.7017 20.1084 15.786 20.1467 15.8523L20.7963 15.4773L21.4458 15.1023C21.2839 14.8218 21.0257 14.5728 20.7265 14.2735L20.1961 14.8039ZM20.1961 17.6715L20.7265 18.2018C21.0257 17.9026 21.2839 17.6535 21.4458 17.3731L20.7963 16.9981L20.1467 16.6231C20.1084 16.6894 20.0333 16.7737 19.6658 17.1412L20.1961 17.6715ZM20.7963 15.4773L20.1467 15.8523C20.2844 16.0908 20.2844 16.3846 20.1467 16.6231L20.7963 16.9981L21.4458 17.3731C21.8514 16.6705 21.8514 15.8049 21.4458 15.1023L20.7963 15.4773ZM20.1961 14.8039L20.7265 14.2735C20.4272 13.9743 20.1782 13.7161 19.8977 13.5542L19.5227 14.2037L19.1477 14.8533C19.214 14.8916 19.2983 14.9667 19.6658 15.3342L20.1961 14.8039ZM17.3285 14.8039L17.8588 15.3342C18.2263 14.9667 18.3106 14.8916 18.3769 14.8533L18.0019 14.2037L17.6269 13.5542C17.3465 13.7161 17.0974 13.9743 16.7982 14.2735L17.3285 14.8039ZM19.5227 14.2037L19.8977 13.5542C19.1951 13.1486 18.3295 13.1486 17.6269 13.5542L18.0019 14.2037L18.3769 14.8533C18.6154 14.7156 18.9092 14.7156 19.1477 14.8533L19.5227 14.2037ZM16.8883 20.9793L16.358 20.449C16.1624 20.6445 15.8952 20.771 15.5155 20.8679C15.3253 20.9165 15.1224 20.954 14.8963 20.9931C14.679 21.0306 14.4303 21.0711 14.1909 21.1223L14.3477 21.8557L14.5045 22.5891C14.7063 22.546 14.9131 22.5124 15.1517 22.4712C15.3814 22.4315 15.6346 22.3856 15.8866 22.3213C16.3914 22.1924 16.9533 21.975 17.4186 21.5097L16.8883 20.9793ZM13.1443 20.6523L13.8777 20.8091C13.9289 20.5697 13.9694 20.321 14.0069 20.1037C14.046 19.8776 14.0835 19.6747 14.1321 19.4845C14.229 19.1048 14.3555 18.8376 14.551 18.642L14.0207 18.1117L13.4903 17.5814C13.025 18.0467 12.8076 18.6086 12.6787 19.1134C12.6144 19.3654 12.5685 19.6186 12.5288 19.8483C12.4876 20.0869 12.454 20.2937 12.4109 20.4955L13.1443 20.6523Z" fill="#FFA1A1" fill-opacity="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 14H16M8 9H12" stroke="#A0C653" stroke-opacity="0.5" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.09881 19.5C4.7987 19.3721 3.82475 18.9816 3.17157 18.3284C2 17.1569 2 15.2712 2 11.5V11C2 7.22876 2 5.34315 3.17157 4.17157C4.34315 3 6.22876 3 10 3H14C17.7712 3 19.6569 3 20.8284 4.17157C22 5.34315 22 7.22876 22 11V11.5C22 15.2712 22 17.1569 20.8284 18.3284C19.6569 19.5 17.7712 19.5 14 19.5C13.4395 19.5125 12.9931 19.5551 12.5546 19.655C11.3562 19.9309 10.2465 20.5441 9.14987 21.0789C7.58729 21.8408 6.806 22.2218 6.31569 21.8651C5.37769 21.1665 6.29454 19.0019 6.5 18" stroke="#A0C653" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 782 B

View File

@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.9165 10.5C21.9351 10.6556 21.9495 10.8126 21.9598 10.9707C22.0134 11.8009 22.0134 12.6607 21.9598 13.4909C21.6856 17.7332 18.3536 21.1125 14.1706 21.3905C12.7435 21.4854 11.2536 21.4852 9.8294 21.3905C9.33896 21.3579 8.8044 21.2409 8.34401 21.0513C7.83177 20.8403 7.5756 20.7348 7.44544 20.7508C7.31527 20.7668 7.1264 20.9061 6.74868 21.1846C6.08268 21.6757 5.24367 22.0285 3.99943 21.9982C3.37026 21.9829 3.05568 21.9752 2.91484 21.7351C2.77401 21.495 2.94941 21.1626 3.30021 20.4978C3.78674 19.5758 4.09501 18.5203 3.62791 17.6746C2.82343 16.4666 2.1401 15.036 2.04024 13.4909C1.98659 12.6607 1.98659 11.8009 2.04024 10.9707C2.31441 6.72838 5.64639 3.34913 9.8294 3.07107C11.0318 2.99114 12.2812 2.97856 13.5 3.03368" stroke="#D7B85A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.3477 9.85572L15.1909 9.1223H15.1909L15.3477 9.85572ZM14.1443 8.65228L14.8777 8.80911L14.1443 8.65228ZM15.0207 6.11171L14.4903 5.58138H14.4903L15.0207 6.11171ZM17.8883 8.97933L18.4186 9.50966L17.8883 8.97933ZM21.7963 3.47729L22.4458 3.10229L21.7963 3.47729ZM21.1961 5.67149L20.6658 5.14116L21.1961 5.67149ZM21.7963 4.99807L22.4458 5.37307L21.7963 4.99807ZM20.5227 2.20375L20.8977 1.55423V1.55423L20.5227 2.20375ZM18.3285 2.80388L18.8588 3.33421L18.3285 2.80388ZM19.0019 2.20375L18.6269 1.55423V1.55423L19.0019 2.20375ZM21.1961 5.67149L20.6658 5.14116L17.358 8.449L17.8883 8.97933L18.4186 9.50966L21.7265 6.20182L21.1961 5.67149ZM15.0207 6.11171L15.551 6.64205L18.8588 3.33421L18.3285 2.80388L17.7982 2.27355L14.4903 5.58138L15.0207 6.11171ZM15.3477 9.85572L15.1909 9.1223C15.0155 9.15981 14.8753 9.18973 14.7548 9.21212C14.6333 9.23472 14.5536 9.2454 14.4996 9.24884C14.4441 9.25237 14.4479 9.24579 14.4825 9.25471C14.5296 9.26685 14.5936 9.29719 14.6482 9.35178L14.1179 9.88211L13.5876 10.4124C13.9113 10.7362 14.3158 10.7636 14.5948 10.7458C14.8603 10.7289 15.1839 10.6577 15.5045 10.5891L15.3477 9.85572ZM14.1443 8.65228L13.4109 8.49546C13.3423 8.8161 13.2711 9.13973 13.2542 9.40523C13.2364 9.68419 13.2638 10.0887 13.5876 10.4124L14.1179 9.88211L14.6482 9.35178C14.7028 9.40637 14.7331 9.47039 14.7453 9.51747C14.7542 9.55207 14.7476 9.55591 14.7512 9.50044C14.7546 9.44641 14.7653 9.36674 14.7879 9.24519C14.8103 9.12473 14.8402 8.98455 14.8777 8.80911L14.1443 8.65228ZM21.1961 2.80388L20.6658 3.33421C21.0333 3.7017 21.1084 3.78597 21.1467 3.85229L21.7963 3.47729L22.4458 3.10229C22.2839 2.82184 22.0257 2.57275 21.7265 2.27355L21.1961 2.80388ZM21.1961 5.67149L21.7265 6.20182C22.0257 5.90261 22.2839 5.65353 22.4458 5.37307L21.7963 4.99807L21.1467 4.62307C21.1084 4.6894 21.0333 4.77367 20.6658 5.14116L21.1961 5.67149ZM21.7963 3.47729L21.1467 3.85229C21.2844 4.09077 21.2844 4.38459 21.1467 4.62307L21.7963 4.99807L22.4458 5.37307C22.8514 4.67049 22.8514 3.80488 22.4458 3.10229L21.7963 3.47729ZM21.1961 2.80388L21.7265 2.27355C21.4272 1.97434 21.1782 1.71615 20.8977 1.55423L20.5227 2.20375L20.1477 2.85326C20.214 2.89156 20.2983 2.96671 20.6658 3.33421L21.1961 2.80388ZM18.3285 2.80388L18.8588 3.33421C19.2263 2.96672 19.3106 2.89156 19.3769 2.85326L19.0019 2.20375L18.6269 1.55423C18.3465 1.71615 18.0974 1.97434 17.7982 2.27355L18.3285 2.80388ZM20.5227 2.20375L20.8977 1.55423C20.1951 1.14859 19.3295 1.14859 18.6269 1.55423L19.0019 2.20375L19.3769 2.85327C19.6154 2.71558 19.9092 2.71558 20.1477 2.85327L20.5227 2.20375ZM17.8883 8.97933L17.358 8.449C17.1624 8.64453 16.8952 8.77096 16.5155 8.8679C16.3253 8.91646 16.1224 8.954 15.8963 8.99307C15.679 9.03061 15.4303 9.07112 15.1909 9.1223L15.3477 9.85572L15.5045 10.5891C15.7063 10.546 15.9131 10.5124 16.1517 10.4712C16.3814 10.4315 16.6346 10.3856 16.8866 10.3213C17.3914 10.1924 17.9533 9.97497 18.4186 9.50966L17.8883 8.97933ZM14.1443 8.65228L14.8777 8.80911C14.9289 8.56974 14.9694 8.32097 15.0069 8.1037C15.046 7.87757 15.0835 7.67468 15.1321 7.48447C15.229 7.10477 15.3555 6.83758 15.551 6.64205L15.0207 6.11171L14.4903 5.58138C14.025 6.0467 13.8076 6.60863 13.6787 7.11341C13.6144 7.36544 13.5685 7.61864 13.5288 7.84832C13.4876 8.08687 13.454 8.29366 13.4109 8.49546L14.1443 8.65228Z" fill="#D7B85A" fill-opacity="0.5"/>
<path d="M8.5 15H15.5M8.5 10H11" stroke="#D7B85A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.5" y="0.5" width="21" height="21" rx="10.5" stroke="#A8B6C7"/>
<path d="M7 13L11 9L15 13" stroke="#A8B6C7" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 289 B

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 11C20 6.02944 15.9706 2 11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11Z" fill="#F1FFF4" stroke="#6CB67C"/>
<path d="M7 11.5875L9.5625 14.15L15.2 8" stroke="#6CB67C" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 387 B

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 11C20 6.02944 15.9706 2 11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11Z" fill="#EFF7FF" stroke="#67A9EF"/>
<path d="M10.9219 14.7871C11.3002 14.8253 11.5956 15.1448 11.5957 15.5332C11.5957 15.9217 11.3002 16.2411 10.9219 16.2793L10.8457 16.2832H10.833C10.419 16.283 10.083 15.9473 10.083 15.5332C10.0831 15.1192 10.4191 14.7834 10.833 14.7832H10.8457L10.9219 14.7871ZM10.835 5C12.4218 5.00022 13.6687 6.32107 13.6689 7.90039C13.6689 8.4001 13.545 8.87321 13.3252 9.28613L13.2256 9.45898C13.0473 9.74483 12.8377 10.0187 12.6436 10.2676C12.4417 10.5263 12.2576 10.7567 12.0908 10.9932C11.7534 11.4716 11.5851 11.8465 11.585 12.2002V12.7383C11.5847 13.1522 11.2489 13.4881 10.835 13.4883C10.4209 13.4883 10.0852 13.1523 10.085 12.7383V12.2002C10.0851 11.3669 10.4817 10.6716 10.8652 10.1279C11.059 9.85327 11.2756 9.58331 11.4609 9.3457C11.6538 9.09844 11.8192 8.87814 11.9521 8.66504L12.0439 8.49316C12.1238 8.3143 12.1689 8.11368 12.1689 7.90039C12.1687 7.10541 11.55 6.50023 10.835 6.5C10.1198 6.50002 9.50021 7.10528 9.5 7.90039C9.49985 8.31448 9.16412 8.65039 8.75 8.65039C8.33589 8.65037 8.00015 8.31447 8 7.90039C8.00021 6.32095 9.24791 5.00002 10.835 5Z" fill="#67A9EF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 11C20 6.02944 15.9706 2 11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11Z" fill="#F6F6F6" stroke="#999999"/>
<path d="M11.0088 13.75C11.5611 13.75 12.0088 14.1977 12.0088 14.75C12.0088 15.3023 11.5611 15.75 11.0088 15.75H11C10.4477 15.75 10 15.3023 10 14.75C10 14.1977 10.4477 13.75 11 13.75H11.0088ZM11 6C11.4142 6 11.75 6.33579 11.75 6.75V11.75C11.75 12.1642 11.4142 12.5 11 12.5C10.5858 12.5 10.25 12.1642 10.25 11.75V6.75C10.25 6.33579 10.5858 6 11 6Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 626 B

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 11C20 6.02944 15.9706 2 11 2C6.02944 2 2 6.02944 2 11C2 15.9706 6.02944 20 11 20C15.9706 20 20 15.9706 20 11Z" fill="#FFF3F7" stroke="#EB6F94"/>
<path d="M8 8L11 11M11 11L14 14M11 11L14 8M11 11L8 14" stroke="#EB6F94" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 401 B

View File

@ -0,0 +1,3 @@
<svg width="8" height="12" viewBox="0 0 8 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 9.75C0.585786 9.75 0.25 10.0858 0.25 10.5C0.25 10.9142 0.585786 11.25 1 11.25V9.75ZM7 11.25C7.41421 11.25 7.75 10.9142 7.75 10.5C7.75 10.0858 7.41421 9.75 7 9.75V11.25ZM6.55675 6.13091C6.83428 5.82343 6.81001 5.34918 6.50252 5.07164C6.19504 4.7941 5.72079 4.81838 5.44325 5.12586L6.55675 6.13091ZM5.06066 6.66908L5.6174 7.17161L5.61741 7.1716L5.06066 6.66908ZM2.93934 6.66908L2.38259 7.1716L2.93934 6.66908ZM2.55675 5.12586C2.27921 4.81838 1.80496 4.7941 1.49747 5.07164C1.18999 5.34918 1.16571 5.82343 1.44325 6.13091L2.55675 5.12586ZM4.75 1.5C4.75 1.08579 4.41421 0.75 4 0.75C3.58579 0.75 3.25 1.08579 3.25 1.5H4.75ZM1 10.5V11.25H7V10.5V9.75H1V10.5ZM6 5.62839L5.44325 5.12586L4.50391 6.16655L5.06066 6.66908L5.61741 7.1716L6.55675 6.13091L6 5.62839ZM2.93934 6.66908L3.49609 6.16655L2.55675 5.12586L2 5.62839L1.44325 6.13091L2.38259 7.1716L2.93934 6.66908ZM5.06066 6.66908L4.50391 6.16655C4.23928 6.45974 4.09104 6.62153 3.97516 6.71949C3.8727 6.80609 3.90069 6.75 4 6.75V7.5V8.25C4.40997 8.25 4.71829 8.05542 4.9435 7.86505C5.15528 7.68603 5.38204 7.43236 5.6174 7.17161L5.06066 6.66908ZM2.93934 6.66908L2.38259 7.1716C2.61796 7.43236 2.84472 7.68603 3.0565 7.86505C3.28171 8.05542 3.59003 8.25 4 8.25V7.5V6.75C4.09931 6.75 4.1273 6.80609 4.02484 6.71949C3.90896 6.62153 3.76072 6.45974 3.49609 6.16655L2.93934 6.66908ZM4 7.5H4.75V1.5H4H3.25V7.5H4Z" fill="#1259CB"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,4 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.5" y="0.5" width="21" height="21" rx="10.5" stroke="#2E3A59"/>
<path d="M7 9L11 13L15 9" stroke="#2E3A59" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 288 B

View File

@ -0,0 +1,6 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="toggle btn">
<rect x="0.5" y="0.5" width="21" height="21" rx="10.5" stroke="white"/>
<path id="Vector 7412" d="M7 13L11 9L15 13" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1,4 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 10L9 2L17 10" stroke="white" stroke-width="2"/>
<rect x="8" y="2" width="2" height="16" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 218 B

View File

@ -1,6 +1,7 @@
'use server'
import { SessionData, sessionOptions } from '@/libs/session'
import { sessionOptions } from '@/libs/session'
import type { SessionData } from '@/types/Auth'
import { getIronSession } from 'iron-session'
import { cookies } from 'next/headers'
import { redirect } from 'next/navigation'

View File

@ -38,58 +38,70 @@ export interface Suitable {
}
export const suitableApi = {
getList: async (): Promise<Suitable[]> => {
const response = await axiosInstance.get<Suitable[]>('/api/suitable/list')
console.log('🚀 ~ getList: ~ response:', response)
return response.data
},
getDetails: async (roofMaterial: string): Promise<Suitable[]> => {
const response = await axiosInstance.get<Suitable[]>(`/api/suitable/details?roof-material=${roofMaterial}`)
return response.data
},
create: async () => {
const suitableData: Suitable[] = []
database.forEach((item) => {
suitableData.push({
product_name: item[0],
manufacturer: item[1],
roof_material: item[2],
shape: item[3],
support_roof_tile: item[4],
support_roof_tile_memo: item[5],
support_roof_bracket: item[6],
support_roof_bracket_memo: item[7],
yg_anchor: item[8],
yg_anchor_memo: item[9],
rg_roof_tile_part: item[10],
rg_roof_tile_part_memo: item[11],
dido_hunt_support_tile_2: item[12],
dido_hunt_support_tile_2_memo: item[13],
takashima_power_base: item[14],
takashima_power_base_memo: item[15],
takashima_tile_bracket: item[16],
takashima_tile_bracket_memo: item[17],
slate_bracket_4: item[18],
slate_bracket_4_memo: item[19],
slate_single_metal_bracket: item[20],
slate_single_metal_bracket_memo: item[21],
dido_hunt_short_rack_4: item[22],
dido_hunt_short_rack_4_memo: item[23],
takashima_slate_bracket_slate_single: item[24],
takashima_slate_bracket_slate_single_memo: item[25],
df_metal_bracket: item[26],
df_metal_bracket_memo: item[27],
slate_metal_bracket: item[28],
slate_metal_bracket_memo: item[29],
takashima_slate_bracket_metal_roof: item[30],
takashima_slate_bracket_metal_roof_memo: item[31],
})
})
const response = await axiosInstance.post<Suitable[]>('/api/suitable', suitableData)
return response.data
},
// getList: async (category?: string, keyword?: string): Promise<Suitable[]> => {
// let condition: any = {}
// if (category) {
// condition['category'] = category
// }
// if (keyword) {
// condition['keyword'] = {
// contains: keyword,
// }
// }
// console.log('🚀 ~ getList: ~ condition:', condition)
// const response = await axiosInstance(null).get<Suitable[]>('/api/suitable/list', { params: condition })
// console.log('🚀 ~ getList: ~ response:', response)
// return response.data
// },
// getCategory: async (): Promise<Suitable[]> => {
// const response = await axiosInstance(null).get<Suitable[]>('/api/suitable/category')
// console.log('🚀 ~ getCategory: ~ response:', response)
// return response.data
// },
// getDetails: async (roofMaterial: string): Promise<Suitable[]> => {
// const response = await axiosInstance(null).get<Suitable[]>(`/api/suitable/details?roof-material=${roofMaterial}`)
// console.log('🚀 ~ getDetails: ~ response:', response)
// return response.data
// },
// create: async () => {
// const suitableData: Suitable[] = []
// database.forEach((item) => {
// suitableData.push({
// product_name: item[0],
// manufacturer: item[1],
// roof_material: item[2],
// shape: item[3],
// support_roof_tile: item[4],
// support_roof_tile_memo: item[5],
// support_roof_bracket: item[6],
// support_roof_bracket_memo: item[7],
// yg_anchor: item[8],
// yg_anchor_memo: item[9],
// rg_roof_tile_part: item[10],
// rg_roof_tile_part_memo: item[11],
// dido_hunt_support_tile_2: item[12],
// dido_hunt_support_tile_2_memo: item[13],
// takashima_power_base: item[14],
// takashima_power_base_memo: item[15],
// takashima_tile_bracket: item[16],
// takashima_tile_bracket_memo: item[17],
// slate_bracket_4: item[18],
// slate_bracket_4_memo: item[19],
// slate_single_metal_bracket: item[20],
// slate_single_metal_bracket_memo: item[21],
// dido_hunt_short_rack_4: item[22],
// dido_hunt_short_rack_4_memo: item[23],
// takashima_slate_bracket_slate_single: item[24],
// takashima_slate_bracket_slate_single_memo: item[25],
// df_metal_bracket: item[26],
// df_metal_bracket_memo: item[27],
// slate_metal_bracket: item[28],
// slate_metal_bracket_memo: item[29],
// takashima_slate_bracket_metal_roof: item[30],
// takashima_slate_bracket_metal_roof_memo: item[31],
// })
// })
// const response = await axiosInstance(null).post<Suitable[]>('/api/suitable', suitableData)
// return response.data
// },
}

View File

@ -2,66 +2,126 @@ import { axiosInstance } from '@/libs/axios'
export interface SurveySalesBasicInfo {
id?: number
representative: String
store: String | null
construction_point: String | null
investigation_date: String | null
building_name: String | null
customer_name: String | null
post_code: String | null
address: String | null
address_detail: String | null
submission_status: Boolean
submission_date?: String | null
representative: string
store: string | null
construction_point: string | null
investigation_date: string | null
building_name: string | null
customer_name: string | null
post_code: string | null
address: string | null
address_detail: string | null
submission_status: boolean
submission_date?: string | null
detail_info?: SurveySalesDetailInfo | null
}
export interface SurveySalesDetailInfo {
id?: number
contract_capacity: String | null
retail_company: String | null
supplementary_facilities: Number | null
supplementary_facilities_etc: String | null
installation_system: Number | null
installation_system_etc: String | null
construction_year: Number | null
construction_year_etc: String | null
roof_material: Number | null
roof_material_etc: String | null
roof_shape: Number | null
roof_shape_etc: String | null
roof_slope: String | null
house_structure: Number | null
house_structure_etc: String | null
rafter_material: Number | null
rafter_material_etc: String | null
rafter_size: Number | null
rafter_size_etc: String | null
rafter_pitch: Number | null
rafter_pitch_etc: String | null
rafter_direction: Number | null
open_field_plate_kind: Number | null
open_field_plate_kind_etc: String | null
open_field_plate_thickness: String | null
leak_trace: Boolean | null
waterproof_material: Number | null
waterproof_material_etc: String | null
insulation_presence: Number | null
insulation_presence_etc: String | null
structure_order: Number | null
structure_order_etc: String | null
installation_availability: Number | null
installation_availability_etc: String | null
memo: String | null
contract_capacity: string | null
retail_company: string | null
supplementary_facilities: number | null
supplementary_facilities_etc: string | null
installation_system: number | null
installation_system_etc: string | null
construction_year: number | null
construction_year_etc: string | null
roof_material: number | null
roof_material_etc: string | null
roof_shape: number | null
roof_shape_etc: string | null
roof_slope: string | null
house_structure: number | null
house_structure_etc: string | null
rafter_material: number | null
rafter_material_etc: string | null
rafter_size: number | null
rafter_size_etc: string | null
rafter_pitch: number | null
rafter_pitch_etc: string | null
rafter_direction: number | null
open_field_plate_kind: number | null
open_field_plate_kind_etc: string | null
open_field_plate_thickness: string | null
leak_trace: boolean | null
waterproof_material: number | null
waterproof_material_etc: string | null
insulation_presence: number | null
insulation_presence_etc: string | null
structure_order: number | null
structure_order_etc: string | null
installation_availability: number | null
installation_availability_etc: string | null
memo: string | null
}
export const surveySalesApi = {
create: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => {
const response = await axiosInstance.post<SurveySalesBasicInfo>('/api/survey-sales', data)
return response.data
create: async (data: SurveySalesBasicInfo): Promise<number> => {
try {
const response = await axiosInstance(null).post<SurveySalesBasicInfo>('/api/survey-sales', data)
return response.data.id ?? 0
} catch (error) {
console.error(error)
return 0
}
},
getList: async (): Promise<SurveySalesBasicInfo[]> => {
const response = await axiosInstance.get<SurveySalesBasicInfo[]>('/api/survey-sales')
return response.data
getList: async (): Promise<SurveySalesBasicInfo[] | []> => {
try {
const response = await axiosInstance(null).get<SurveySalesBasicInfo[]>('/api/survey-sales')
return response.data
} catch (error) {
console.error(error)
return []
}
},
getDetail: async (id: number): Promise<SurveySalesBasicInfo | null> => {
try {
const response = await axiosInstance(null).get<SurveySalesBasicInfo>(`/api/survey-sales/${id}`)
return response.data
} catch (error) {
console.error(error)
return null
}
},
update: async (id: number, data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo | null> => {
try {
const response = await axiosInstance(null).put<SurveySalesBasicInfo>(`/api/survey-sales/${id}`, data)
return response.data
} catch (error) {
console.error(error)
return null
}
},
delete: async (id: number, isDetail: boolean = false): Promise<boolean> => {
try {
await axiosInstance(null).delete(`/api/survey-sales/${id}`, {
params: {
detail_id: isDetail ? id : undefined,
},
})
return true
} catch (error) {
throw error
}
},
createDetail: async (surveyId: number, data: SurveySalesDetailInfo): Promise<boolean> => {
try {
await axiosInstance(null).post<SurveySalesDetailInfo>(`/api/survey-sales/${surveyId}`, data)
return true
} catch (error) {
throw error
}
},
confirm: async (id: number): Promise<boolean> => {
try {
await axiosInstance(null).patch<SurveySalesBasicInfo>(`/api/survey-sales/${id}`)
return true
} catch (error) {
throw error
}
},
// update: async (data: SurveySalesBasicInfo): Promise<SurveySalesBasicInfo> => {
// const response = await axiosInstance.put<SurveySalesBasicInfo>(`/api/survey-sales`, data)
// return response.data
// },
}

View File

@ -21,17 +21,17 @@ export interface LoginData {
export const userApi = {
create: async (data: UserData): Promise<User> => {
const response = await axiosInstance.post<User>('/api/user/create', data)
const response = await axiosInstance(null).post<User>('/api/user/create', data)
return response.data
},
getList: async (): Promise<User[]> => {
const response = await axiosInstance.get<User[]>('/api/user/list')
const response = await axiosInstance(null).get<User[]>('/api/user/list')
return response.data
},
getUser: async (data: LoginData): Promise<User> => {
const response = await axiosInstance.post<User>(`/api/user`, data)
const response = await axiosInstance(null).post<User>(`/api/user`, data)
return response.data
},
}

View File

@ -0,0 +1,5 @@
import FloatBtn from '@/components/ui/common/FloatBtn'
export default function page() {
return <FloatBtn />
}

View File

@ -0,0 +1,5 @@
import Footer from '@/components/ui/common/Footer'
export default function page() {
return <Footer />
}

View File

@ -0,0 +1,5 @@
import Header from '@/components/ui/common/Header'
export default async function page() {
return <Header />
}

View File

@ -0,0 +1,21 @@
import { NextResponse } from 'next/server'
import { axiosInstance } from '@/libs/axios'
export async function POST(req: Request) {
const { loginId, email, pwd, chgPwd } = await req.json()
console.log('🚀 ~ POST ~ loginId:', loginId)
console.log('🚀 ~ POST ~ email:', email)
console.log('🚀 ~ POST ~ pwd:', pwd)
console.log('🚀 ~ POST ~ chgPwd:', chgPwd)
const result = await axiosInstance(`${process.env.NEXT_PUBLIC_QSP_API_URL}`).post(`/api/user/userPwdChg`, {
loginId,
chgType: 'C',
email,
pwd,
chgPwd,
})
console.log('🚀 ~ result ~ result:', result)
return NextResponse.json({ code: 200, data: result.data })
}

Some files were not shown because too many files have changed in this diff Show More