전체 활용 사례

// 업종별 — 그대로 따라가는 시나리오

법인카드 — 주간 승인내역 지출 모니터링

매주 월요일 09:00 KST 지난 7일치 법인카드 승인내역이 PR 로 — 가맹점·금액·할부·승인상태 컬럼 그대로, 매입 확정 전 단계까지 포함.

GitHub Actions매주 월요일 09:00 KST

이런 분께 법인카드 지출을 매입 확정 전에 거의 실시간으로 들여다보려는 재무·운영.

Opendata/card-9f2c4a

법인카드 승인내역 2026-W18 · 신한카드 41건

  • data/card/card.approvals.corp.v1-2026-W18.csv

01사전 점검

아래 명령을 그대로 붙여넣어 지금 내 환경이 준비됐는지 확인한다.

  • repo secret H6S_API_KEY 가 등록돼 있다

    gh secret list

    목록에 H6S_API_KEY 가 보인다

    아니면 — gh secret set H6S_API_KEY # 또는 repo Settings → Secrets

  • 워크스페이스에 대상 자격증명이 있다

    h6s credentials list

    그 기관에 매칭되는 자격증명이 1건 이상 보인다

    아니면 — h6s credentials create --interactive --cert

  • Actions 가 PR 을 만들 수 있다

    repo Settings → Actions → General → Workflow permissions

    "Read and write" + "Allow GitHub Actions to create pull requests" 체크

    아니면 — 두 옵션을 켠다 (yml 의 permissions 블록만으로도 동작하지만 repo 설정이 우선).

02실행

아래 파일을 .github/workflows/ 에 저장하고 기본 브랜치에 commit. 첫 검증은 Actions 탭 → Run workflow 로 수동 트리거.

yaml
# 매주 월요일 (한국시간 09:00) 지난 7일치 법인카드 승인내역을 수집해 PR 로 올린다.
# 승인 시점 거래(매입 확정 전 단계 포함)라 지출을 거의 실시간으로 모니터링할 수 있다.
name: 법인카드 승인내역 주간 수집 (지출 모니터링)

on:
  schedule:
    - cron: '0 0 * * 1'   # 매주 월요일 00:00 UTC (KST 09:00)
  workflow_dispatch: {}

jobs:
  fetch:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v6

      - id: window
        run: |
          echo "from=$(date -u -d '7 days ago' +%Y-%m-%d)" >> "$GITHUB_OUTPUT"
          echo "to=$(date -u +%Y-%m-%d)" >> "$GITHUB_OUTPUT"

      - id: fetch
        uses: bolta-io/h6s-action@v0
        with:
          api-key: ${{ secrets.H6S_API_KEY }}
          schema: card.approvals.corp.v1
          provider: CCD_SHINHAN
          from: ${{ steps.window.outputs.from }}
          to: ${{ steps.window.outputs.to }}
          output-path: ./data/card/

      - uses: peter-evans/create-pull-request@v6
        with:
          title: '법인카드 승인내역 ${{ steps.fetch.outputs.summary }}'
          body: |
            자동 수집된 법인카드 승인내역 PR.

            - Schema: `card.approvals.corp.v1`
            - 기간: ${{ steps.window.outputs.from }} ~ ${{ steps.window.outputs.to }}
            - 레코드 수: ${{ steps.fetch.outputs.count }}
            - Job ID: `${{ steps.fetch.outputs.job-id }}`
          branch: data/card-${{ steps.fetch.outputs.job-id }}
          commit-message: 'feat(data): 법인카드 승인내역 ${{ steps.window.outputs.from }}~${{ steps.window.outputs.to }}'
          add-paths: data/

card.approvals.corp.v1 는 보유카드(C0001) prerequisite 후 카드별로 승인내역을 모은다 — 카드 수가 많으면 첫 실행이 다소 길 수 있다.

03검증

  • 월요일에 지난 7일치 법인카드 승인내역 CSV 가 PR 로 생성된다.
  • PR 본문에 기간·레코드 수·Job ID 가 채워져 있다.
  • 같은 기간 재실행이면 변경 파일이 없어 PR 이 안 생긴다(정상).

04흔한 에러

워크플로우는 초록인데 PR 이 안 생긴다

Actions 의 PR 생성 권한이 막혀 있거나 변경 파일이 없다(중복 실행).

해결 repo Settings → Actions 에서 PR 생성 허용. 같은 기간 재실행이면 정상.

fetch step 에서 NO_API_KEY 로 실패

secret 이름이 yml 의 secrets.H6S_API_KEY 와 다르다.

해결 secret 을 정확히 H6S_API_KEY 로 등록.

CREDENTIAL_INSUFFICIENT_FOR_PROVIDER

그 provider 에 매칭되는 자격증명이 워크스페이스에 없다.

해결 h6s credentials create --interactive --cert (공동인증서 1개로 전 기관 공용).

cron 시간이 지나도 안 돈다

yml 이 기본 브랜치에 없거나, repo 가 60일 비활성이라 scheduled workflow 가 멈췄다.

해결 기본 브랜치에 머지하고, 가끔 수동 트리거해 활성 유지.

05변형

같은 사례에서 자주 바꾸는 옵션. 다른 사례는 아래 이전/다음에서.

특정 카드 한 장만 (CLI 즉석 확인)

terminal
h6s fetch card.approvals.corp.v1 --provider CCD_SHINHAN --month 2026-04 --cardNumberMasked '123456******1234'
다음1인 사장님 — 분기 부가세 신고 자료