diff --git a/.github/workflows/jira-integration.yml b/.github/workflows/jira-integration.yml new file mode 100644 index 0000000..7b26d44 --- /dev/null +++ b/.github/workflows/jira-integration.yml @@ -0,0 +1,43 @@ +name: Jira Integration + +on: + issues: + types: [opened, closed] + +jobs: + jira-integration: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Create Jira Issue + if: github.event.action == 'opened' + uses: atlassian/gajira-create-issue@v3 + with: + issueType: '10001' # Story + projectKey: 'DASOMFE' + summary: ${{ github.event.issue.title }} + description: | + GitHub Issue: ${{ github.event.issue.html_url }} + + ${{ github.event.issue.body }} + fields: | + { + "customfield_10014": "${{ github.event.issue.number }}" + } + env: + JIRA_URL: ${{ secrets.JIRA_URL }} + JIRA_EMAIL: ${{ secrets.JIRA_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + + - name: Close Jira Issue + if: github.event.action == 'closed' + uses: atlassian/gajira-transition-issue@v3 + with: + issueKey: DASOMFE-${{ github.event.issue.number }} + transition: 'Done' + env: + JIRA_URL: ${{ secrets.JIRA_URL }} + JIRA_EMAIL: ${{ secrets.JIRA_EMAIL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TO KEN }} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..17951ca --- /dev/null +++ b/.prettierrc @@ -0,0 +1,13 @@ +{ + "semi": false, + "trailingComma": "es5", + "singleQuote": true, + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "bracketSpacing": true, + "bracketSameLine": false, + "arrowParens": "avoid", + "endOfLine": "lf", + "jsxSingleQuote": true +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 42dffe3..6c2edd8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,11 @@ import React from 'react' import './assets/styles/index.css' -import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom' +import { + BrowserRouter as Router, + Routes, + Route, + useLocation, +} from 'react-router-dom' import Main from './pages/Main' import AdminMain from './pages/admin/AdminMain' import Login from './pages/Login' @@ -30,54 +35,120 @@ import ProtectedRoute from './components/layout/ProtectRoute' import SomkatonApplicants from './pages/admin/SomkatonApplicants' function App() { - return ( -
{answer}
++ {answer} +
) } @@ -34,42 +38,42 @@ const containerVariants = { transition: { staggerChildren: 0.1, ease: 'easeOut', - } - } + }, + }, } const FAQSection: React.FC = () => { return ({title}
-작성일: {formattedDate}
-+ {title} +
+작성일: {formattedDate}
++-+@@ -125,9 +183,17 @@ const PythonEditor: React.FC = () => { className={`text-xs p-3 rounded ${selectedCode === 0 ? 'border-[#007ACC]' : 'border-neutral-700'} border-2`} onClick={() => handleCodeClick(0)} > -+
+- import pandas as pd{'\n'} - import numpy as np{'\n'} - import seaborn as sns{'\n'} - import matplotlib.pyplot as plt{'\n\n'} - sns.set(style= 'darkgrid' ) + import pandas{' '} + as pd{'\n'} + import numpy{' '} + as np{'\n'} + import seaborn{' '} + as sns{'\n'} + import{' '} + matplotlib.pyplot as{' '} + plt{'\n\n'} + sns.set(style= + 'darkgrid' )-✔ 0.3s-Python++ ✔ 0.3s +++ Python +print(+) + print( + ++ + ) +
- 다솜에서 개발자로서 성장해 갈 34기 멤버분들을 찾습니다! +
+ 다솜에서 개발자로서 성장해 + 갈 34기 멤버분들을 + 찾습니다!
-📅 모집 일정 :
+📅 모집 일정 :
{recruitmentData ? ( -모집 폼 제출 : {formatDate(recruitmentData.RECRUITMENT_PERIOD_START)} ~ {formatDate(recruitmentData.RECRUITMENT_PERIOD_END)}
++ 모집 폼 제출 :{' '} + {formatDate(recruitmentData.RECRUITMENT_PERIOD_START)} ~{' '} + {formatDate(recruitmentData.RECRUITMENT_PERIOD_END)} +
) : (모집 일정 불러오는 중...
)} {recruitmentData ? ( -대면 면접 : {formatDate(recruitmentData.INTERVIEW_PERIOD_START)} ~ {formatDate(recruitmentData.INTERVIEW_PERIOD_END)}
++ 대면 면접 : {formatDate(recruitmentData.INTERVIEW_PERIOD_START)} ~{' '} + {formatDate(recruitmentData.INTERVIEW_PERIOD_END)} +
) : (대면 일정 불러오는 중...
)} {recruitmentData ? ( -최종 합격자 발표 : {formatDate(recruitmentData.INTERVIEW_PASS_ANNOUNCEMENT)}
++ 최종 합격자 발표 :{' '} + {formatDate(recruitmentData.INTERVIEW_PASS_ANNOUNCEMENT)} +
) : (최종 합격 일정 불러오는 중...
)}📝 모집 대상 :
- 25년도 1학기부터 다솜과 함께할 예비 다솜 멤버 +📝 모집 대상 :
+ + 25년도 1학기부터 다솜과 함께할 예비 다솜 멤버 +🌿 신청 조건 :
- 컴퓨터공학부 학생 +🌿 신청 조건 :
+ 컴퓨터공학부 학생🍀 회비 :
- 20,000원 -+
+ 🍀 회비 : +
+ 20,000원 +회비는 동아리 운영자금 및 프로젝트 서버비용 지원 등에 사용됩니다.
👀 의지가 있으며 교류를 중시하는 분을 기다립니다.
++ 👀 의지가 있으며 교류를 중시하는 분을 기다립니다. +
+
{`${name}님 안녕하세요 컴퓨터공학부 전공동아리 다솜입니다. 먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며, `} -
1차 서류 합격을 진심으로 축하드립니다!
++ + 1차 서류 합격 + + 을 진심으로 축하드립니다! +
-{`다음 전형인 대면 인터뷰에서 뵐 수 있게 되어 기쁜 마음을 담아 +
+ {`다음 전형인 대면 인터뷰에서 뵐 수 있게 되어 기쁜 마음을 담아 안내드립니다.`}
@@ -123,14 +148,14 @@ export const RecruitUI_SUB: React.FC+
{`${name}님 안녕하세요 컴퓨터공학부 전공동아리 다솜입니다. 먼저 다솜 34기에 많은 관심을 갖고 지원해 주셔서 감사드리며, `}
-{`안타깝게도, 모집 인원 제한으로 인해 +
+ {`안타깝게도, 모집 인원 제한으로 인해 ${name}님의 1차 서류 결과 불합격을 안내드리게 되었습니다.`}
@@ -143,13 +168,15 @@ export const RecruitUI_SUB2: React.FC
- 안녕하세요 {`${name}`}님,
다솜 34기에 최종합격 되신 점 축하드립니다!
+
+ 안녕하세요 {`${name}`}님,
다솜 34기에
+ 최종합격{' '}
+ 되신 점 축하드립니다!
{`길었던 면접 과정 간 고생 많으셨습니다. +
+ {`길었던 면접 과정 간 고생 많으셨습니다. 향후 활동 내용은 디스코드 및 카카오톡 단체 톡방을 통해 전달 될 예정이며, 카카오톡 단체 톡방은 금일 밤 중 초대해 드릴 예정입니다.`}
@@ -165,19 +192,20 @@ export const RecruitUI_FINAL: React.FC+
{`${name}님 안녕하세요. 컴퓨터공학부 전공동아리 다솜입니다. 먼저, 다솜 34기에 관심을 갖고 지원해 주시고 소중한 시간을 내어 대면 인터뷰까지 함께해 주셔서 진심으로 감사드립니다.`}
-{`함께할 수 있기를 기대했지만, 모집 인원 제한으로 인해 +
+ {`함께할 수 있기를 기대했지만, 모집 인원 제한으로 인해 안타깝게도 ${name}님께 불합격 소식을 전하게 되었습니다.`}
-{`짧은 시간이었지만 ${name}님의 열정과 역량을 볼 수 있어 감사했고, +
+ {`짧은 시간이었지만 ${name}님의 열정과 역량을 볼 수 있어 감사했고, 더 좋은 기회에서 빛을 발하실 거라 믿습니다.`}
@@ -191,35 +219,42 @@ export const RecruitUI_FINAL2: React.FC- 솜커톤에서 멋진 프로젝트를 만들어 주실 학우 여러분들을 모집합니다! + return ( +
+ 솜커톤에서 멋진 프로젝트를 + 만들어 주실 학우 여러분들을 모집합니다!
-📅 모집 일정 :
- 4월 11일 (금) ~ 4월 16일 (수) +📅 모집 일정 :
+ 4월 11일 (금) ~ 4월 16일 (수)📝 모집 대상 :
- 25년도 1학기 솜커톤에 참가하는 학우 여러분 +📝 모집 대상 :
+ + 25년도 1학기 솜커톤에 참가하는 학우 여러분 +🌿 신청 조건 :
- 컴퓨터공학부 학생 +🌿 신청 조건 :
+ 컴퓨터공학부 학생🍀 참가비 :
- 10,000원 -- 참가비는 솜커톤 행사 운영 자금으로 사용됩니다. - 납부 방법은 추후 안내드리겠습니다. +
+ 🍀 참가비 : +
+ 10,000원 ++ 참가비는 솜커톤 행사 운영 자금으로 사용됩니다. 납부 방법은 추후 + 안내드리겠습니다.
👀 의지가 있으며 교류를 중시하는 분을 기다립니다.
++ 👀 의지가 있으며 교류를 중시하는 분을 기다립니다. +
{message}