260123 : [BOJ 1451] 직사각형으로 나누기 #1106
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PR Emoji & Notion Update by Author | |
| on: | |
| pull_request: | |
| types: [opened, edited, reopened] | |
| jobs: | |
| update-notion-checkbox: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check PR title and body, then update author-specific checkbox | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }} | |
| NOTION_DATABASE_ID: ${{ secrets.NOTION_DATABASE_ID }} | |
| run: | | |
| echo "🔍 시작: PR 제목과 본문 확인" | |
| PR_TITLE=$(jq -r .pull_request.title "$GITHUB_EVENT_PATH") | |
| PR_BODY=$(jq -r .pull_request.body "$GITHUB_EVENT_PATH") | |
| PR_AUTHOR=$(jq -r .pull_request.user.login "$GITHUB_EVENT_PATH") | |
| echo "📌 PR Title: $PR_TITLE" | |
| echo "👤 작성자: $PR_AUTHOR" | |
| # ✅ 및 ❌ 이모지 감지 | |
| HAS_CHECK=$(echo "$PR_BODY" | grep -q "✅" && echo "yes" || echo "no") | |
| HAS_CROSS=$(echo "$PR_BODY" | grep -q "❌" && echo "yes" || echo "no") | |
| if [[ "$HAS_CHECK" == "yes" && "$HAS_CROSS" == "yes" ]]; then | |
| CHECKBOX_VALUE=false | |
| echo "⚠️ 둘 다 포함 → false" | |
| elif [[ "$HAS_CROSS" == "yes" ]]; then | |
| CHECKBOX_VALUE=false | |
| echo "❌ 포함 → false" | |
| elif [[ "$HAS_CHECK" == "yes" ]]; then | |
| CHECKBOX_VALUE=true | |
| echo "✅ 포함 → true" | |
| else | |
| echo "⚠️ 이모지가 없어 스킵합니다." | |
| exit 0 | |
| fi | |
| # 작성자 → 체크박스 필드 매핑 | |
| case "$PR_AUTHOR" in | |
| "Eunjin3395") FIELD_NAME="은진" ;; | |
| "KII1ua") FIELD_NAME="성윤" ;; | |
| "dlchdaud123") FIELD_NAME="총명" ;; | |
| "sksn12") FIELD_NAME="영만" ;; | |
| "3veryDay") FIELD_NAME="현서" ;; | |
| "alirz-pixel") FIELD_NAME="문형" ;; | |
| "esc10946") FIELD_NAME="호준" ;; | |
| "pinkkj") FIELD_NAME="제희" ;; | |
| "sunha20") FIELD_NAME="선하" ;; | |
| *) | |
| echo "❌ 알 수 없는 작성자: $PR_AUTHOR" | |
| exit 1 | |
| ;; | |
| esac | |
| echo "🧩 적용 대상 필드: $FIELD_NAME" | |
| # PR 제목에서 BOJ 문제 번호 추출 | |
| PROBLEM_NO=$(echo "$PR_TITLE" | grep -oE '\[BOJ [0-9]+\]' | grep -oE '[0-9]+') | |
| if [ -z "$PROBLEM_NO" ]; then | |
| echo "❌ PR 제목에서 문제 번호를 찾을 수 없습니다." | |
| exit 1 | |
| fi | |
| echo "🔢 추출된 문제 번호: $PROBLEM_NO" | |
| # Notion DB에서 문제 번호 필드 == 문제 번호인 페이지 검색 | |
| PAGE_ID=$(curl -s -X POST "https://api.notion.com/v1/databases/$NOTION_DATABASE_ID/query" \ | |
| -H "Authorization: Bearer $NOTION_API_KEY" \ | |
| -H "Notion-Version: 2022-06-28" \ | |
| -H "Content-Type: application/json" \ | |
| --data '{ | |
| "filter": { | |
| "property": "문제 번호", | |
| "title": { | |
| "equals": "'"$PROBLEM_NO"'" | |
| } | |
| } | |
| }' | jq -r '.results[0].id') | |
| if [ "$PAGE_ID" = "null" ] || [ -z "$PAGE_ID" ]; then | |
| echo "❌ Notion에서 문제 번호 $PROBLEM_NO에 해당하는 페이지를 찾을 수 없습니다." | |
| exit 1 | |
| fi | |
| echo "✅ 대상 Notion 페이지 ID 확인됨" | |
| # 해당 체크박스와 제출 체크박스 모두 업데이트 | |
| SUBMIT_FIELD="제출$FIELD_NAME" | |
| echo "📦 대상 제출 필드: $SUBMIT_FIELD" | |
| JSON_BODY=$(cat <<EOF | |
| { | |
| "properties": { | |
| "$FIELD_NAME": { | |
| "checkbox": $CHECKBOX_VALUE | |
| }, | |
| "$SUBMIT_FIELD": { | |
| "checkbox": true | |
| } | |
| } | |
| } | |
| EOF | |
| ) | |
| # 👁 JSON 본문 출력 | |
| echo "📤 Notion PATCH 요청 본문:" | |
| echo "$JSON_BODY" | |
| # 🔁 PATCH 요청 전송 | |
| curl -s -o /dev/null -w "%{http_code}" -X PATCH "https://api.notion.com/v1/pages/$PAGE_ID" \ | |
| -H "Authorization: Bearer $NOTION_API_KEY" \ | |
| -H "Notion-Version: 2022-06-28" \ | |
| -H "Content-Type: application/json" \ | |
| --data "$JSON_BODY" | |
| echo "🎉 Notion 업데이트 완료!!: $FIELD_NAME → $CHECKBOX_VALUE" | |
| echo "🎯 Lambda API 호출 시작" | |
| curl -s -o lambda_response.json -w "%{http_code}" -X POST https://p7vk9p47d0.execute-api.ap-northeast-2.amazonaws.com/api/save \ | |
| -H "Content-Type: application/json" \ | |
| -d "{\"prAuthor\": \"$PR_AUTHOR\", \"problemId\": \"$PROBLEM_NO\"}" | |
| echo "📬 Lambda 응답:" | |
| cat lambda_response.json | |
| echo "🎉 Lambda API 호출 완료!!: $PR_AUTHOR, $PROBLEM_NO" |