법정 교육·안전 교육이 끝나면 누가 듣지 않았는지 확인해야 합니다. "대상자 45명 − 이수자 38명 = 7명"처럼 개수를 빼면, 이름 뒤 공백이나 팀명 띄어쓰기 차이, 대상자 명단에 없는 외부 이수자 때문에 틀린 숫자가 오류 없이 나옵니다.
이 안내서는 두 명단을 양방향으로 대조하는 방법과, 실명단을 AI에 넣지 않고 대조 코드를 받는 방법을 다룹니다. 결과는 담당자가 원장으로 확인할 후보 목록입니다.
- 대상자 수와 이수자 수의 단순 차이가 틀릴 수 있는 이유를 설명할 수 있습니다.
- 미이수·대상 외 이수·중복 이수를 양방향으로 식별할 수 있습니다.
- 실명단을 AI에 넣지 않고 대조 코드를 받아 기관 PC에서 실행할 수 있습니다.
- 동명이인·전입·면제처럼 자동 확정할 수 없는 항목을 분리할 수 있습니다.
AI에게 맡기는 프롬프트
명단 대조 코드를 코드 실행이 되는 AI(파일 분석 기능이나 코딩 에이전트)에게 맡길 때 씁니다. 실명단은 먼저 생성형 AI 입력 확인과 기관 지침으로 다룰 수단을 확인하고, AI에게는 열 이름과 가짜 명단 몇 줄만 줍니다. 받은 코드는 기관 PC에서 실제 명단으로 실행하고, AI에게 다시 보여 줄 때는 건수처럼 이름이 없는 결과만 줍니다.
[목적] 교육 이수 확인용으로, 대상자 명단과 이수 기록을 대조하는 파이썬 코드를 만들어 주세요. 결과는 담당자가 원장으로 확인할 후보 목록입니다. [자료] 붙임 파일은 실제 직원 정보가 없는 가짜 명단입니다(각 5행). - target.csv: 교육번호, 성명, 소속 - completed.csv: 교육번호, 성명, 소속, 이수일 [대조 규칙] - 교육번호로 맞춥니다. 교육번호는 문자로 읽고 앞뒤 공백을 지웁니다. - 미이수 후보(대상자에만 있음), 대상 외 이수(이수 기록에만 있음), 중복 이수(같은 교육번호가 두 번 이상)를 각각 다른 파일로 저장합니다. - 교육번호가 빈 행은 대조하지 말고 확인 목록으로 따로 저장하고, 그 행 수를 출력합니다. [완성 기준] 결과와 함께 다음 검산 두 줄을 출력해 주세요. 교육번호가 빈 행(키 확인 필요)과 중복으로 더 들어간 행은 먼저 따로 셉니다. - 대상자 명단 행 수 = 매칭 이수 + 미이수 후보 + 대상자 쪽 중복 추가 행 + 대상자 쪽 키 확인 필요 행 - 이수 기록 행 수 = 매칭 이수 + 대상 외 이수 + 이수 쪽 중복 추가 행 + 이수 쪽 키 확인 필요 행 [하지 말 것] 이름이 비슷하다는 이유로 다른 사람을 같은 사람으로 합치지 마세요. 안내 문자나 통보 문안을 만들지 마세요. 규칙이 자료로 분명하지 않은 부분은 추측하지 말고 [확인 필요]로 남겨 주세요. 확인 기준은 https://119-ai-studio.kr/roster-match-check.html 안내서를 따릅니다. 작업 전에 빠진 정보가 있으면 먼저 질문해 주세요.
가짜 명단에는 이름 뒤 공백, 중복 기록, 대상 외 이수자를 한 건씩 일부러 넣어 둡니다. 만드는 방법은 119 합성 데이터로 안전하게 연습하기에 있습니다.
결과를 받은 뒤 확인할 것은 다음과 같습니다.
- 검산 두 줄이 출력에 실제로 찍혔고 양쪽 수가 같은지 봅니다.
- 일부러 넣은 공백·중복·대상 외 사례가 각각 맞는 파일에 나왔는지 봅니다.
- 실제 명단으로 실행한 뒤 대상 외 이수가 한 건이라도 있으면 안내를 멈추고 원자료를 확인합니다.
배경지식
명단 대조에서는 개수보다 어느 사람이 어느 명단에 있는지를 봅니다. 대상자와 이수자가 같은 수여도 사람이 다르면 미이수와 대상 외 이수가 함께 있을 수 있습니다.
대상자 전체를 하나의 집합, 이수 기록을 다른 집합이라고 보면 방향이 분명해집니다. 대상자에는 있지만 이수 기록에는 없는 사람이 미이수 후보이고, 반대 방향이 대상 외 이수입니다(외부기관 이수·오입력). 같은 키가 이수 기록에 여러 번 나타나면 중복 후보입니다. 세 결과는 원인과 후속 확인이 달라 한 숫자로 합치지 않습니다. 같은 원리를 시설 점검 기록에 쓰는 방법은 예방 점검표 누락·재점검 대상 찾기에 있습니다.
두 표의 같은 사람을 연결하는 기준이 키입니다. 이름은 동명이인이 있고 소속은 바뀔 수 있으므로 안정적인 키가 아닙니다. 교육번호처럼 승인된 식별자를 키로 쓰고, 키가 없거나 충돌하면 사람 확인 목록으로 보냅니다. 이름·소속·교육번호는 모두 개인정보이므로 다루는 수단을 먼저 확인합니다.
대조를 시작하기 전에는 기대 관계를 적어 둡니다. 매칭 이수와 미이수 후보를 합치면 대상자 수가 되어야 하고, 이수 기록은 매칭·대상 외·중복으로 모두 설명되어야 합니다.
단순 빼기가 위험한 이유
가상 사례: 개수는 맞지만 사람이 다른 교육 명단
다음은 설명을 위한 가상 사례입니다. 대상자 45명, 이수자 38명이니 미이수자는 7명이어야 합니다. 그런데 이름만으로 비교했더니 15명이 나왔습니다.
[비교] 정규화 없이: 15명 → 정규화 후: 7명
원인은 손으로 입력한 자료의 보이지 않는 차이였습니다. 이름 뒤에 공백('김가온 ')이 붙어 있거나, 소속이 구조1팀과 구조 1팀처럼 달랐습니다. 프로그램은 오류 없이 15명을 냈고, 이 숫자를 그대로 쓰면 미이수자로 잘못 분류된 8명에게 재교육 통보가 나갈 수 있습니다.
개수만 보면 서로 다른 두 오류가 상쇄되어 맞아 보이기도 합니다. 대상자는 김가온·이초롱·박두리 3명, 이수 기록은 김가온·이초롱·최봄이라고 해 보겠습니다. 3 대 3이라 단순 빼기로는 미이수 0명입니다. 명단을 맞대 보면 박두리는 대상자인데 이수 기록에 없어 미이수 후보이고, 최봄은 이수했지만 대상자 명단에 없어 대상 외 이수입니다. 한 방향(대상자 − 이수자)만 보면 최봄은 보이지 않으므로 두 방향을 모두 봅니다.
보이지 않는 표기 차이
대조 전에 정규화로 두 명단의 표기를 맞춥니다. 앞뒤 공백을 지우고, 팀명 사이 공백과 구분자를 통일하는 작업입니다. 아래는 모두 가상의 예입니다.
| 대상자 명단 | 이수 기록 | 무엇이 다른가 |
|---|---|---|
홍길동 | 홍길동 | 이름 뒤 보이지 않는 공백 하나 |
구조1팀 김가온 | 구조 1팀 김가온 | 팀명 가운데 띄어쓰기 |
소방-001 | 소방_001 | 교육번호 구분자가 하이픈과 밑줄로 다름 |
정규화 없이 글자를 그대로 비교하면 세 쌍 모두 다른 사람으로 셉니다. 앞의 15명도 이런 차이 때문에 늘어난 숫자였습니다.
이름 대신 교육번호로 맞추면 이름·소속 띄어쓰기 문제는 처음부터 생기지 않습니다. 결과를 다른 사람과 나눌 때는 교육번호도 가립니다. 교육번호를 해시값으로 바꿔도 번호 목록을 같은 방식으로 바꿔 대조하면 원래 번호를 다시 찾을 수 있으므로, 해시값도 공개해도 되는 값으로 보지 않습니다(가명처리, 재식별).
가상 사례: 전입 직원의 입문 교육 기록 대조
다음은 실제 직원·부서·교육과 무관한 가상 사례입니다. 인사 담당자가 이번 기간에 전입한 직원의 합성 대상 명단과 입문 교육 이수 기록을 대조합니다. 대상 명단에는 현재 소속이, 이수 기록에는 이전 소속이 남아 있고 같은 이름의 다른 직원도 있습니다.
이름과 소속 문자열로 비교하면 전입 직원을 미이수로 잘못 분류하거나 동명이인의 기록을 연결할 수 있습니다. 담당자는 기관 PC에서 교육번호로 먼저 대조하고, 교육번호가 비거나 두 사람 이상에 연결되는 행은 자동 안내 대상에서 뺍니다. 현재 소속은 비교를 돕는 정보로만 씁니다.
한 사람으로 매칭돼도 이수 과정과 대상 기간이 맞는지 확인해야 합니다. 담당자는 인사 변동 기록과 교육 원장을 확인한 뒤 이수 여부를 확정합니다.
실행 결과와 검산
프롬프트로 받은 코드를 기관 PC에서 실행하면 다음과 같은 결과가 나와야 합니다. 숫자는 가상의 예입니다.
[입력] 대상자 10명, 이수 기록 8건 [결과] 매칭 이수 7명, 미이수 후보 3명, 대상 외 이수 1명, 중복 이수 0건 [검산1] 대상자 10명 = 매칭 이수 7 + 미이수 후보 3 → 일치 [검산2] 이수 기록 8건 = 매칭 7 + 대상 외 1 + 중복 0 → 일치 [주의] 대상 외 이수 1명 → 자동 안내 중단, 담당자 확인 [OK] 저장: output/missing.csv [OK] 저장: output/external_completed.csv [OK] 저장: output/duplicate_completed.csv
세 파일은 확인할 일이 각각 다릅니다.
missing.csv(미이수 후보): 전입·면제·외부 이수를 확인한 뒤 재교육 안내 대상을 정합니다.external_completed.csv(대상 외 이수): 대상자 명단이 빠졌는지, 입력 오류인지 확인합니다.duplicate_completed.csv(중복 이수): 이수 시스템의 입력을 고칩니다.
검산 1이 어긋나면 교육번호 결측과 중복을 먼저 봅니다. 검산 2에서 대상 외 이수가 한 건이라도 나오면 자동 안내를 멈추고 원자료를 확인합니다.
정규화로도 못 맞추는 것
공백을 지우고 양방향으로 대조해도 사람이 확인해야 하는 경우가 남습니다.
- 동명이인: "김가온"이 두 명이면 이름만으로는 누가 들었는지 알 수 없습니다. 교육번호 같은 고유 키가 있어야 구분됩니다.
- 전입·전출: 기간 중 부서를 옮긴 사람은 대상자 명단과 이수 기록의 소속이 다릅니다.
- 외부기관 이수·교육 면제: 다른 기관에서 듣거나 면제 사유가 있는 사람은 우리 이수 기록에 없어도 미이수자가 아닙니다.
실명단과 교육번호는 다룰 수단을 확인하기 전에는 기관 PC에서만 처리합니다. 수집·이용 근거와 안전조치를 확인할 조문은 개인정보 보호법 카드에, 넣기 전 점검 절차는 개인정보, AI에 넣기 전에 점검하기에 있습니다.
사람 검토 체크리스트
- [ ] 실명단은 확인된 수단(기관 PC 또는 기관이 승인한 도구) 안에서만 다뤘습니다. - [ ] 교육번호로 대조하고, 원본 교육번호는 공유 결과에 넣지 않았습니다. - [ ] 동명이인 가능성이 있으면 이름만으로 자동 안내하지 않았습니다. - [ ] 대상 외 이수 목록이 비어 있지 않으면 자동 안내를 멈췄습니다. - [ ] 검산 두 줄(대상자 행 = 매칭 + 미이수 후보 + 중복 추가 + 키 확인 필요, 이수 기록 행 = 매칭 + 대상 외 + 중복 추가 + 키 확인 필요)이 맞습니다. - [ ] 결과 공유 전 수신자, 포함 열, 보안 등급을 확인했습니다.
용어 한 줄 사전
| 용어 | 한 줄 설명 |
|---|---|
| 대상자 집합 | 해당 교육을 확인해야 하는 사람들의 기준 명단입니다. |
| 이수자 집합 | 교육 완료 기록에 나타난 사람들의 명단입니다. |
| 키 | 두 명단에서 같은 사람인지 연결하는 기준값입니다. |
| 정규화 | 공백·하이픈·표기 형식을 비교할 수 있는 형태로 맞추는 작업입니다. |
| 미이수 후보 | 대상자에는 있지만 이수 기록에는 없어 확인이 필요한 사람입니다. |
| 대상 외 이수 | 이수 기록에는 있지만 대상자 명단에는 없어 확인이 필요한 사람입니다. |
자주 묻는 질문
Q. 대상자 수에서 이수자 수를 빼면 왜 안 되나요?
대상 외 이수와 미이수가 함께 있으면 서로 개수를 상쇄할 수 있습니다. 총계가 맞아도 사람이 다를 수 있으므로 두 방향의 명단을 직접 대조합니다.
Q. 이름과 소속을 합치면 고유 키가 되나요?
동명이인과 소속 변경이 있어 여전히 충돌할 수 있습니다. 승인된 교육 식별자를 우선 쓰고, 키가 없거나 중복되면 사람이 원장을 확인합니다.
Q. 엑셀에 들어 있는 AI 기능으로 대조해도 되나요?
기관이 승인한 도구인지와 계정 종류를 먼저 확인합니다. 예를 들어 Microsoft 365 Copilot 카드는 개인 계정의 무료 Copilot Chat에는 업무 문서를 넣지 않고 기관 계약 환경 안에서만 쓰라고 안내합니다. 확인하기 전에는 이 안내서의 프롬프트처럼 가짜 명단으로 코드를 받아 기관 PC에서 실행합니다.
Q. 미이수 후보에게 바로 안내해도 되나요?
대상 외 이수·중복·키 충돌이 없는지 보고, 전입·외부 이수·면제 기록을 사람이 확인한 뒤 안내 대상을 확정합니다.
핵심 정리
- 명단은 개수를 빼지 않고 대상자와 이수자를 양방향으로 대조합니다.
- 결과는 대상자 행 = 매칭 + 미이수 후보 + 중복 추가 + 키 확인 필요, 이수 기록 행 = 매칭 + 대상 외 + 중복 추가 + 키 확인 필요의 두 식으로 검산합니다.
- 실명단은 AI에 넣지 않고, 가짜 명단으로 코드를 받아 기관 PC에서 실행합니다.
- 미이수 결과는 후보이며 원장과 예외 사유를 확인한 사람이 확정합니다.
다음 단계
- 출동 데이터의 결측·중복·표기 불일치 정제하기 — 명단 대조 전에 공백·결측·중복을 다루는 기본을 익힙니다.
- 개인정보, AI에 넣기 전에 점검하기 — 실명단과 내부 식별자를 외부로 내보내지 않는 점검 절차를 확인합니다.
- 119 합성 데이터로 안전하게 연습하기 — 실제 직원 명단 없이 양방향 대조와 검산을 반복해 볼 수 있습니다.