Community연구 & 데이터 분석github.com

Auromix/expense-reimbursement-skill

에이전트가 사용자로부터 받은 원시 지출 증빙 자료를 정리하여 구조화된 폴더, 작성된 비용 명세서, 재무팀 참고용 추가 설명서, 추적 가능한 작업 기록(台账)을 포함한 최종 산출물로 만드는 스킬입니다.

expense-reimbursement-skill란 무엇인가요?

이 스킬은 기업의 지출 증빙 자료(영수증, 송장 등)를 체계적으로 정리하여 재무팀에 바로 제출할 수 있는 최종 산출물을 생성하는 AI 에이전트 스킬입니다. 사용자가 제공한 다양한 형식(사진, PDF, OFD, Excel 등)의 원시 자료를 분석하고, 명확한 분류 기준과 워크플로우에 따라 자료를 분류, 명명, 집계합니다. 특히 원본 자료는 절대 수정하지 않으며, 정보가 불확실한 경우에는 추측하지 않고 사용자에게 명확히 질문하는 원칙을 따릅니다. 또한 이중 계상을 방지하고 지출 항목별로 명확히 구분하여 정확한 비용 보고를 지원합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, Python 스크립트를 통해 작업 공간 설정, 템플릿 작성, 재계산 등을 자동화하여 사용자의 수작업을 최소화합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add Auromix/expense-reimbursement-skill

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

기업 비용 증빙 정리

사용자가 제공한 여러 원시 지출 증빙 자료를 정리하여 구조화되고 명명 규칙이 적용된, 재무팀에 바로 제출할 수 있는 산출물로 만듭니다: 버킷별로 정리된 자료 + 작성된 비용 명세서 + 재무팀 참고용 추가 설명 + 추적 가능한 작업 기록(台账).

절대 넘을 수 없는 세 가지 선

  1. 원본 자료와 원본 템플릿은 절대 수정하지 않습니다. 모든 변경은 백업 복사본과 템플릿 사본에서만 이루어집니다.
  2. 절대 정보를 지어내지 않습니다. 흐리거나, 일치하지 않거나, 필수 요소가 누락된 경우, 의문점 목록에 담아 사용자에게 요청합니다. 묻는 편이 지어내는 것보다 낫습니다.
  3. 하나의 지출은 테이블의 한 행에만 기록하며, 절대 이중으로 계산하지 않습니다. 청구서와 그 결제 화면 캡처는 동일한 건입니다. 변경 전후는 동일한 구간입니다. 기업이 이미 대납한 부분은 청구하지 않습니다. 자세한 내용은 references/归类与命名规范.md의 3.1–3.3, 섹션 6을 참조하세요.

명령은 항상 python3를 사용합니다(많은 환경에 python 별칭이 없음). 스크립트 경로는 이 스킬 디렉토리 기준 상대 경로 scripts/...를 사용합니다.


시작하기 전에 받아야 할 입력

  1. 원시 자료 폴더 경로(내부에는 jpg/png/pdf/ofd/excel 등 다양한 형식이 섞여 있을 수 있으며, 하위 디렉토리가 있을 수 있음).
  2. 비용 템플릿 .xlsx 경로.
  3. 신원 정보(이름, 부서, 제출일, 통화, 기본 부서, 기본 프로젝트 코드, 선지급 현금).
    • 먼저 过程文件/身份信息.json이 이미 존재하는지 확인합니다(이전 실행 시 저장됨). 존재하면 읽어서 재사용하고, 사용자에게 그대로 사용할지 확인합니다.
    • 존재하지 않거나 불완전하면, 누락된 필드를 사용자에게 요청한 후 过程文件/身份信息.json에 기록하여 다음에 재사용합니다.

템플릿 필드, 열 의미, 사유 필수 입력 사항은 references/模板与字段映射.md를 참조하세요. 작업을 시작하기 전에 먼저 읽으십시오.


조정 가능한 세 가지 기본 동작(사용자가 한 마디로 변경 가능)

  • 자율성 수준(기본값: 확실하지 않을 때만 문의). 신뢰도가 높으면 자동으로 분류/버킷에 넣습니다. 교통비 vs 시내 교통비 구분이 불분명하거나, 금액이 흐리거나, 개인 지출로 의심되거나, 사유 요소가 누락된 경우, 의문점 목록에 모아 한 번에 사용자에게 문의합니다. 사용자는 완전 자동 또는 항목별 확인을 요청할 수도 있습니다.
  • 신원 정보(기본값: 처음에 물어보고, 저장하여 재사용). 위 참조.
  • 다중 통화(기본값: RMB로 환산하여 테이블에 입력). 외화 증빙(USD/KRW 등, 예: 해외 Uber 영수증)은 사용자가 지정한 환율로 환산합니다. 환율이 주어지지 않으면 임의로 결정하지 마십시오 — 먼저 의문점에 나열하여 사용자에게 문의하거나(또는 해당일자 중국 은행 매매 기준율을 사용하고 출처를 명시), 원화/금액/환율/결과를 额外说明/에 기록하고 작업 기록의 '원화 금액/환율' 열에 채웁니다. 원화 그대로 입력하고 환율은 사용자에게 맡기도록 변경할 수도 있습니다.

워크플로우

0단계: 작업 공간 구축 + 백업(스크립트)

python3 scripts/setup_workspace.py --source <원시 자료 폴더> [--out <작업 공간 루트 디렉토리>] [--template <비용 템플릿.xlsx>]
  • --out 은 생략 가능. 기본값: 원시 자료 폴더 옆(상위 폴더 = 기본 위치)에 의미 있는 이름의 작업 공간 <원래 폴더명>_报销整理_<YYYYMMDD>을 새로 만듭니다. --out으로 사용자가 원하는 디렉토리를 지정할 수도 있습니다.
  • --template 은 생략 가능. 사용자마다 템플릿이 다를 수 있고, 없을 수도 있습니다. 템플릿이 없으면 '템플릿 없음' 분기로 진행합니다(6단계 참조). 마지막에 make_default_table.py를 사용하여 일반 비용 명세서를 생성합니다. 이 스크립트는 다음을 수행합니다: 10개의 하위 폴더(영수증 있음/영수증 없음/보조 자료/확인 필요/대체 영수증/추가 설명/프로세스 파일/백업/추가 자료/관련 없음)를 만들고, 모든 원시 자료를 备份/에 전체 백업합니다(템플릿 자체와 *.skill은 자료로 간주되지 않으며 자동으로 건너뜁니다). 템플릿이 있는 경우 원본 템플릿을 备份/_模板原件/에 저장하고 쓰기 가능한 복사본 <원래 이름>_已填写.xlsx를 생성합니다. 过程文件/manifest.json을 생성합니다. 작업 공간은 원시 자료 폴더 외부에 생성됩니다. stdout에 각 주요 경로(workspace/writable_template, 템플릿이 없는 경우 writable_template은 null)가 반환됩니다. 모든 스크립트는 순수 python3이며, 크로스 플랫폼(mac/linux/windows 호환) 이고, 시스템 고유 명령어에 의존하지 않습니다.

1단계: 자료를 하나씩 읽고 이해

manifest.json의 순서대로 자료를 하나씩 읽고, 유형에 따라 읽기 방법을 선택합니다:

  • 이미지(jpg/png/webp 등): 먼저 OCR을 수행하지 않고, 직접 시각적 이해를 사용합니다(이 모델은 이미지를 읽을 수 있음). 다음 요소를 읽습니다: 소비 날짜, 상점/프로젝트, 금액, 공식 청구서 여부, 출발지/도착지/인원수 등.
  • PDF: 먼저 extract-text 또는 pdf-reading 스킬을 사용하여 텍스트를 추출합니다. 스캔본/포맷 증빙의 경우 텍스트를 추출할 수 없으면 이미지로 변환한 다음 시각적 이해를 사용합니다(pdf-reading 스킬의 래스터화 방법 참조).
  • OFD(국가 표준 전자 청구서):
    python3 scripts/extract_ofd.py <file.ofd> --json
    
    텍스트를 추출할 수 없는 경우(순수 레이어 OFD), 대비 방법: 이미지로 변환한 후 시각적 식별.
    • 철도 전자 승차권: '운임'(정상 승차 시 청구 가능 금액)인지 '취소 수수료/차액 환불'(취소, 금액이 매우 작음)인지 읽고, '출발역 변경' 표시에 주의합니다.
    • 부가가치세 청구서: 테이블 입력 금액은 세금 포함 합계(含税)입니다. 세금을 제외한 '금액'이 아닙니다(references/模板与字段映射.md 참조).
  • Excel/CSV: extract-text file.xlsx 또는 pandas로 읽습니다. 일반적으로 전화 요금 명세서, 거래 내역서, 상세 내역 요약에서 볼 수 있습니다.
  • 기타/알 수 없는 형식: 먼저 file <path>로 유형을 확인한 다음, 적절한 읽기 방법을 선택합니다. 정말 읽을 수 없으면 의문점 목록에 넣습니다.

각 자료에 대해 추출된 요소를 过程文件/extracted/<원래 이름>.json에 기록합니다.

2단계: 버킷 분류 + 카테고리 분류 + 이벤트 연결

references/归类与命名规范.md에 따라:

  • 영수증 있음 / 영수증 없음 / 보조 자료 중 어느 버킷에 넣을지 판단합니다(판단 기준은 참조 파일의 섹션 1 참조). 중요: 공식 청구서가 없는 실제 소비의 캡처 화면만 있는 것은 '영수증 없음'에 들어갑니다(이것이 주요 증거입니다). '보조 자료'가 아닙니다(섹션 1.1). 보조 자료 옆에는 주요 증거가 있어야 합니다. 영수증 없음 항목이 나타나면, 커뮤니케이션에서 고객에게 替票/에 대체 영수증을 넣도록 알립니다('특수 디렉토리 · 대체 영수증/' 참조).
  • 12가지 비용 유형 중 어느 유형에 속하는지 판단합니다 → 템플릿의 해당 열(열 매핑은 references/模板与字段映射.md 참조). J 교통비와 Q 시내 교통비의 구분에 유의합니다.
  • 동일한 소비 건의 여러 자료에 동일한 이벤트 번호를 할당합니다(청구서 + 결제 화면 캡처 + 여행 일정 + 환불 화면 캡처 모두 동일한 이벤트 번호로 연결). 변경 전후, 기업 대납/개인 선지급도 동일한 이벤트로 연결합니다(섹션 3.1–3.3).
  • 개인적인 것으로 의심되거나 / 이번 여정과 관련 없음(개인 구독, 관련 없는 국가 비자, 영수증 없는 고액 증빙 등)은 의문점 목록에 넣고, 기본적으로 포함하지 않습니다(섹션 5). 사용자가 이번 건과 관련 없음/청구 불가/기간 외로 확인하면 无关/로 이동합니다(이번 기간에 포함되지 않음).
  • 확실하지 않으면 억지로 넣지 마십시오: 버킷/카테고리/청구 가능 여부가 불확실한 자료는 먼저 待核实/에 넣고, 有票/ 또는 无票/에 먼저 넣지 마십시오. 의문점 목록에 모아 사용자에게 문의하고, 확인 후 待核实/에서 올바른 버킷으로 이동합니다.

3단계: 작업 기록(프로세스 파일) 생성

过程文件/物料台账.csv(UTF-8-SIG)에서 각 원시 자료당 한 행씩 기록합니다. 열 구조는 references/归类与命名规范.md의 섹션 4를 참조하세요. 작업 기록은 이후 입력 및 검토 보고서의 유일한 데이터 소스입니다 — 먼저 작업 기록을 정확하게 만드십시오.

4단계: 복사 + 이름 변경 + 버킷 분류

명명 규칙 날짜_비용 유형_핵심 정보_금액에 따라 备份/에서 해당 버킷으로 자료를 복사하고 이름을 변경합니다. 동일 이벤트가 여러 버킷에 걸쳐 있으면 이름을 동일하게 하고, 동일 버킷 내에서는 의미적 접미사를 추가합니다(규칙은 참조 파일 참조). 새 파일 이름을 작업 기록에 다시 입력합니다.

5단계: 추가 설명 작성(필요 시)

병합, 부분 환불, 외화 환산, 분할/AA, 또는 자료 금액 ≠ 테이블 입력 금액이 있는 경우 references/额外说明写法.md에 따라 额外说明/에 txt 파일을 작성하고, 작업 기록의 '비고'에서 이를 가리킵니다.

6단계: 작업 기록 → 중복 제거 및 검증 → 원장(ledger) 생성 → 템플릿 사본 입력(스크립트)

먼저 중복 제거 및 검증을 수행합니다(references/归类与命名规范.md 섹션 6): 이벤트 번호별로 작업 기록을 '이벤트당 한 행'으로 접습니다 — 청구서/영수증 없음 주요 증거에서 금액을 추출하고, 보조 자료와 환불 화면 캡처는 별도 행으로 만들지 않습니다. 취소는 취소 수수료만 계산합니다. 기업 대납은 개인 선지급만 계산합니다. 외화는 RMB로 환산합니다. Σ(ledger 금액)을 검증 기준으로 기록합니다.

시간 순서로 정렬: 템플릿 헤더는 '시간 순서대로 순차적으로 입력'을 요구합니다. ledger의 항목은 소비 발생일의 오름차순으로 정렬되어야 합니다(같은 날 여러 건은 '정상 청구서 먼저, 환불 후' 순서로 정렬 가능). fill_template.py는 기본적으로 월/일의 안정적인 오름차순으로 정렬합니다(사용자가 지정한 순서를 유지하려면 --no-sort를 사용하십시오).

그런 다음 过程文件/ledger.json을 구성합니다(구조는 scripts/fill_template.py 상단 주석 참조: identity + items, 각 항목은 '열' 또는 '카테고리' + 금액 + 사유 + 출발지/도착지/부서/프로젝트 코드 포함). 사유는 references/模板与字段映射.md에 따라 재무팀이 필요한 요소를 모두 포함해야 합니다. 그런 다음:

python3 scripts/fill_template.py --xlsx <쓰기 가능한 템플릿> --ledger 过程文件/ledger.json

fill_template.py는 31행 초과 시 행 삽입 및 SUM 확장을 자동으로 처리하고, 출력 computed에 각 열 소계/총액의 예상 값을 직접 제공합니다 — 먼저 검증 기준과 일치하는지 확인합니다.

그런 다음 수식을 다시 계산합니다(두 가지 중 선택):

# 첫 번째 선택: xlsx 스킬(LibreOffice 필요)
python3 /mnt/skills/public/xlsx/scripts/recalc.py <쓰기 가능한 템플릿>
# LibreOffice가 없거나 해당 경로가 없는 경우, 이 스킬에 내장된 대비 방법 사용(--write는 값을 다시 쓰고, 전달 파일에 숫자를 직접 표시):
python3 scripts/recalc_fallback.py <쓰기 가능한 템플릿> --write

반드시 total_errors가 0인지 확인하고, 재계산 결과가 fill_template의 computed, 작업 기록 합계와 세 가지가 일치하는지 확인합니다.

템플릿 없음 분기: 사용자에게 템플릿이 없는 경우, fill_template.py/recalc를 건너뛰고, 대신 스크립트를 사용하여 일반 비용 명세서를 생성합니다(직접 값과 합계를 작성하고 .md 미리보기 포함):

python3 scripts/make_default_table.py --ledger 过程文件/ledger.json --out <작업 공간>/<의미 있는 이름>.xlsx

이 경우 ledger.json은 '템플릿 없음' 구조를 사용합니다(make_default_table.py 상단 주석 참조: identity는 제목/보고자/부서 등을 포함할 수 있고, 각 items 항목은 날짜/카테고리/사유/상점/통화/원래 금액/환율/금액(RMB)/비고를 포함). 생성된 xlsx의 총액은 작업 기록 합계와 일치해야 합니다.

7단계: 검토 보고서 + 전달

작업 공간 루트에 审阅报告.md를 작성합니다:

  • 비용 카테고리별 금액 합계, 총 청구 금액;
  • 검증 확인: 작업 기록 합계 = 템플릿 총액 = 각 버킷 자료 금액 합계(항목별로 나열하고, 불일치하는 경우 빨간색으로 표시하여 설명);
  • 의문점 목록: 사용자가 보충해야 할 항목(접대 인원수, 출장 일수, 환율, 흐릿한 금액, 개인 소비 의심 등);
  • 각 버킷 파일 수, 추가 설명 목록. <쓰기 가능한 템플릿>을 가장 먼저 제시하고(present_files와 같은 프레젠테이션 도구가 있으면 사용하고, 없으면 작업 공간 경로와 파일 목록을 직접 제공), 검토 보고서와 함께 사용자에게 보여주며, 의문점 목록을 직접 질문합니다.

특수 디렉토리(필요에 따라 처리하며, 메인 흐름 검증을 오염시키지 않음)

위의 0–7 핵심 흐름 외에도 필요에 따라 활성화되는 네 개의 디렉토리가 있습니다. 각각 독립적이며, 영수증 있음/영수증 없음/보조 자료의 작업 기록 및 검증에 영향을 미치지 않습니다.

待核实/ — 확실하지 않은 것은 먼저 여기에 저장

판단이 불확실한(어떤 버킷에 넣을지, 어떤 카테고리인지, 청구 가능한지) 자료는 먼저 待核实/에 넣고, 절대로 有票/나 无票/에 먼저 넣지 마십시오. 의문점 목록에 모아 한 번에 사용자에게 문의합니다. 사용자가 결정하면 待核实/에서 올바른 버킷으로 이동하여 장부에 반영합니다. 전달 시 待核实/는 비어 있는 것이 가장 좋습니다. 아직 미결 항목이 있으면 검토 보고서에서 명시합니다.

无关/ — 이번 건과 관련 없음 / 이번 기간에 청구 불가 / 기간 외

사용자 확인을 통해 이번 청구와 관련 없거나, 이번 기간에 청구 불가하거나 다음 기간으로 넘어가는 자료(이번 여정과 관련 없는 항공권, 관련 없는 국가 비자 등)는 백업에서 无关/에 복사하여 별도로 보관하고, 이번 기간의 작업 기록 및 템플릿에 포함하지 않습니다. 검토 보고서에 '관련 없음으로 이동 완료'로 명시합니다. 검증을 오염시키지도 않고, 자료를 잃지도 않습니다.

替票/ — 선택적 대체 영수증 풀(영수증 있음으로 전환되지 않으며, 금액 계산되지 않음)

일부 '영수증 없음' 항목은 실제 소비이지만 공식 청구서를 받을 수 없는 경우입니다(회사 임대료/공과금, 소액 개인 대납 등). 고객은 선택적으로 평소 다른 소비의 정규 청구서를 제공하여 替票/에 넣고, 금액을 대략적으로 맞추어 이러한 영수증 없음 항목을 충당하고, 재무팀에 청구서를 첨부할 수 있습니다 — 제공하지 않을 수도 있습니다. 가장 중요한 점: 대체 영수증은 영수증 없음 항목과 일대일로 일치하는 실제 청구서가 아니라, 단지 금액이 비슷할 뿐입니다. 따라서:

  • 대체 영수증은 절대로 有票/로 전환되지 않으며, 영수증 없음 항목도 절대로 '영수증 있음'으로 변경되지 않습니다 — 영수증 없음은 항상 영수증 없음으로 관리됩니다(이것이 이 실제 소비의 기록입니다).
  • 대체 영수증은 替票/에 남아 재무팀에 별도로 첨부되며, 작업 기록 비용 행에 들어가지 않고, 청구 금액에 계산되지 않습니다(그렇지 않으면 영수증 없음 항목과 중복 계산됨).
  • 过程文件/替票池.csv에만 대체 영수증 목록과 풀 총액을 기록하고, 영수증 없음 총액과 대략적인 적용 범위를 비교합니다. 1:1 매핑, 버킷 변경, ledger 변경은 하지 않습니다.
  • 영수증 없음 항목이 나타날 때마다, 커뮤니케이션에서 고객에게 대체 영수증을 선택적으로 넣을 수 있음을 알립니다(영수증 없음 항목과 합계 금액을 나열하고 '넣을 수도 있고 안 넣을 수도 있음'을 설명). 고객을 대신하여 억지로 맞추거나, 반드시 보충할 것이라고 가정하지 않습니다.

补充材料/ — 고객이 이후에 제출한 자료(처리 후 비움)

고객이 이후에 제출한 자료(이전에 누락된 청구서, 빠진 증빙)는 补充材料/에 넣습니다. 다시 실행할 때 아래와 같이 처리하고, 완료 후 补充材料/는 비워야 합니다:

  1. 백업 보존: 각 자료를 备份/_补充_<날짜>/에 복사합니다(원본을 잃지 않음).
  2. 이해 + 이벤트 연결: 1단계 읽기 방법을 사용하여 식별하고, 기존 이벤트 번호에 연결하거나 새 이벤트를 생성합니다.
  3. 청구서 보충 작업: 어떤 항목이 원래 '영수증 없음(청구서 보충 대기)'이었는데, 공식 청구서가 도착하면 — 청구서는 有票/에 넣고, 원래 캡처 화면은 辅助材料/로 재분류하며, 작업 기록에서 해당 이벤트의 버킷/신뢰도/금액(세금 포함 합계 사용)을 함께 업데이트하고, 해당 의문점 항목을 삭제합니다.
  4. 중복 제거 및 검증 재수행 + 재입력: 6단계에 따라 다시 계산하고, 총액이 업데이트되고 세 가지가 여전히 일치하는지 확인합니다.
  5. 补充材料/ 비우기: 처리 후 파일을 제거합니다(백업 및 각 버킷에 이미 복사본이 있음). 비어 있게 유지하여 다음에 쉽게 사용할 수 있습니다.

완료 후 디렉토리 구조

<작업 공간>/
├── <원래 이름>_已填写.xlsx          ← 작성된 비용 명세서(전달물)
├── 审阅报告.md
├── 有票/        공식 증빙이 있고 독립적으로 증명 가능한 자료(확인 완료 후에만 여기에 넣음)
├── 无票/        실제 소비지만 공식 청구서가 없는 주요 증거(확인 완료 후에만 여기에 넣음)
├── 辅助材料/    간접 증거(주문/결제/여정 캡처 화면)
├── 待核实/      확실하지 않은 것(버킷/카테고리/청구 가능 여부)은 먼저 여기에 넣고, 有票/无票에 서둘러 넣지 마십시오. 확인 후 이동.
├── 替票/        선택적 대체 영수증 풀: 영수증 없음 금액을 대략적으로 맞추어 재무팀에 제출. 有票로 전환되지 않으며, 금액 계산되지 않음('특수 디렉토리' 참조)
├── 额外说明/    재무팀을 위한 txt 파일(병합/환불/외화/분할)
├── 过程文件/    신원 정보.json, manifest.json, extracted/, 物料台账.csv, ledger.json, (替票池.csv)
├── 备份/        원시 자료 1:1 백업 + _模板原件/(템플릿과 *.skill은 자료 백업에 포함되지 않음)
├── 补充材料/    고객이 이후 제출한 자료는 여기에 넣음. 처리 후 비워짐('특수 디렉토리' 참조)
└── 无关/        확인 후 이번 건과 관련 없음/이번 기간 청구 불가/기간 외 자료를 별도로 보관하며, 이번 기간에 포함되지 않음

마무리 자체 점검

  • 원본 자료와 원본 템플릿이 모두 수정되지 않았음(백업 복사본/사본만 수정)
  • 각 자료가 어떤 디렉토리에 들어갔고, 작업 기록에 한 행이 있음
  • 중복 계산 없음: 각 이벤트 번호는 ledger에서 한 행만 있음. 청구서+결제 화면 캡처, 변경 전후, 환불 차감이 여러 건으로 계산되지 않음
  • 부가가치세 청구서는 **세금 포함 합계(含税)**로 테이블에 입력됨. 취소는 취소 수수료만 계산됨. 기업 대납은 개인 선지급만 계산됨
  • 외화가 이미 환산되었고 환율 출처가 있음(또는 의문점에 나열됨)
  • 템플릿이 시간 순서로 채워짐. recalc 후 수식 오류가 0이고, 템플릿 총액 = ledger 합계 = fill_template의 computed
  • 사유가 해당 주석 요구 사항을 모두 충족함(인원수/시간/출발지/도착지/일수 등)
  • 待核实/가 이미 비워짐(모두 결정됨), 补充材料/가 이미 비워짐. 替票/(있는 경우)는 금액에 계산되지 않음
  • 개인적인 것으로 의심되거나 관련 없는 항목 및 기타 의문점이 모두 사용자에게 직접 확인됨

관련 스킬