학교생활기록부 전체 점검 프로그램의 개발 이력입니다. 세특 중복 점검기(v1.0)로 시작해 세특·행특·창체 3탭(v1.1)으로 넓혔고, 규정 점검을 통합(v2.x)한 뒤 중복 판정을 길이 기준으로 다시 설계(v3.0)했습니다. 인공지능은 쓰지 않으며, 모든 검출은 2026 학교생활기록부 기재요령·입력 시 주의사항·생기부 수정 사항 체크리스트의 문구에 근거하고 그 출처를 화면과 리포트에 그대로 인용합니다. 2026-08-22 ~ 10-07. 가장 최신 내용이 맨 위입니다.
v6.92026-10-07🏷 학생자치 임원의 재임기간이 빠진 것을 잡습니다최신
- 규정🏷 기재요령 p.83 — 임원은 재임기간을 ( ) 안에 병기합니다 — 창체에서 학급자치회 · 학생자치회의 회장 · 부회장 · ○○부장 · ○○부원 바로 뒤에 (2026.03.01.-2026.08.17.) 처럼 연도로 시작하는 괄호가 없으면 「재임기간 누락」 으로 표시합니다. 날짜가 맞는지는 학교마다 학사일정이 달라 보지 않고, 있고 없고만 봅니다. 걸린 학생은 담당 선생님께 재임기간을 확인해 넣어 주세요.
- 범위📋 학교 안내문에 정해진 이름만 봅니다 — 학급자치회 회장 · 부회장, 전교 학생자치회 회장 · 부회장 · ○○부장(원) 입니다. 「학생회 환경봉사부 부원」 · 「학생자치회의 학예부원」 · 「부학생회장」처럼 정해진 이름이 아닌 표현은 재임기간을 묻지 않습니다.
- 명칭✏ 「학급회장」 의 권장 표현을 바로잡았습니다 — 지금까지는 학급회장 · 학급부회장 모두 「학생자치회 회장」 으로 바꾸라고 안내했습니다. 학급 임원은 「학급자치회 회장」 · 「학급자치회 부회장」 이 맞으므로 따로 안내합니다.
- 한계🔎 「학생자치회 회장 선거 · 후보」 는 넘깁니다 — 임원이 아니라 선거에 나간 이야기이기 때문입니다. 「회장, 부회장(기간)」처럼 한 괄호로 묶은 것, 같은 칸에서 기간과 함께 이미 쓴 직책을 다시 말하는 것, 「학급자치회 회장과 부회장을 대신하여」처럼 다른 학생의 직책을 말하는 것(뒤에 대신 · 도와 · 보조)도 넘깁니다.
v6.82026-09-22🎓 줄여 쓴 대학 이름도 잡습니다 — 서울대 · 이화여대 · 카이스트
- 규정🎓 기재요령 p.19 타 — 구체적인 특정 대학명은 어떠한 항목에도 쓸 수 없습니다 — 지금까지의 「대학명」 규칙은 「○○대학교」 로 끝까지 써야만 걸렸습니다. 그런데 선생님들은 대개 서울대 · 이화여대 · 한국외대 · 카이스트 처럼 줄여 씁니다. 실제 파일 30개에서도 「서울대 의대」 · 「연세대 공과대학」 · 「교원대 진학」 · 「카이스트 과학 여행」 4건이 그대로 빠져나가고 있었습니다.
- 목록📚 대한민국 대학 468개 이름을 통째로 넣었습니다 — 대학알리미(academyinfo.go.kr) 대학 목록(대학 255 · 전문대학 169 · 대학원대학 44, 2026-09-22 수집)에서 캠퍼스 괄호를 떼고, 이름마다 줄여 쓰는 꼴을 모두 만들어 박아 두었습니다. ○○대학교 → ○○대, 여자대학교 → 여대(덕성여대), 교육대학교 → 교대(서울교대), 과학기술대학교 → 과기대(서울과기대), 외국어대학교 → 외대(한국외대), 공과대학교 → 공대(포항공대), 신학대학교 → 신대, 사이버대학교 → 사이버대, 국립을 뗀 이름(금오공대 · 부경대 · 한밭대), 그리고 카이스트 · 포스텍 · 유니스트 · 지스트 · 디지스트 · 한예종 · 폴리텍. 정식 이름 823개 · 줄임말 461개입니다.
- 함정🪤 「대」 로 끝나는 말을 다 잡으면 49번 틀립니다 — 목록의 줄임말을 그냥 찾아보니 실제 파일에서 56번 걸렸는데, 그중 49번이 대학이 아니었습니다 — 세종대왕 35번, 국제대회 3, 정석대로 3, 국민대표 2, 광주대단지 2, 강남대로 1, 동서대비원 1. 그래서 줄임말 바로 뒤를 봅니다. 띄어쓰기 · 문장부호 · 조사(에 · 의 · 를 · 은 …), 또는 생 · 병원 · 합격 · 진학 · 입학 · 학과 · 의대 같은 말이 올 때만 잡고, 왕 · 회 · 표 · 단 · 교 · 공원처럼 다른 낱말이 되는 자리는 넘깁니다. 조사 「로」 는 뺐습니다 — 정석대로 · 강남대로 · 세종대로가 모두 「○○대 + 로」 이기 때문입니다.
- 흔한말🔤 연대 · 고대 · 이대 · 성대 · 중대 는 대학 이야기일 때만 — 이 두 글자 줄임말은 연대 의식 · 고대 그리스 · 이대로 · 성대 결절 · 중대한 처럼 평소에 쓰는 말과 똑같습니다. 그래서 바로 뒤에 학과 · 진학 · 입학 · 합격 · 의대 · 공대 · 캠퍼스 · 수시 · 정시 같은 말이 붙을 때만 잡습니다. 세종대도 여기에 넣었습니다 — 역사 세특의 「세종대에 편찬된」 은 세종 임금 때를 말하기 때문입니다. 교대는 뺐습니다 — 「사범대, 교대 진학」 처럼 대학의 종류를 말할 때가 많습니다.
- 확인✅ 거짓 적발 0건 · 새로 잡은 4건은 모두 진짜 대학 — 손으로 만든 문장 36개(잡아야 할 18 · 넘겨야 할 18)가 모두 맞고, 실제 파일에서 새로 잡힌 것은 서울대 · 연세대 · 교원대 · 카이스트 4건뿐입니다. 세특 위반 9,875 → 9,878, 창체 2,464 → 2,465, 행특 그대로이고 검토 건수는 세 탭 모두 그대로입니다. 이름이 많아 규정 검사가 1만 9천 건에 0.6~0.8초 더 걸립니다.
- 한계🔎 「연대 경영학과」 는 놓칩니다 — 두 글자 줄임말 뒤에 학과 이름을 통째로 허용하면 「고대 철학과 근대 철학」 의 「고대 철학과」 까지 걸립니다. 그래서 학과 · 진학처럼 정해진 말이 바로 붙을 때만 잡습니다. 외국 대학 줄임말(하버드대 등)은 목록에 없어, 「○○대학교」 로 끝까지 쓴 것만 원래 규칙으로 걸립니다. 목록은 해마다 바뀔 수 있습니다.
v6.72026-09-14✍ 학교 이름을 어떻게 적어도 알아듣고, 칸을 실행 단추 옆으로
- 자리🟥 빨간 두 칸을 「통합 점검 실행」 바로 옆으로 옮겼습니다 — 설정 칸 안에 두니 파일을 올리고 곧장 실행하는 흐름에서 눈에 띄지 않아 잊기 쉬웠습니다. 이제 「세부능력 및 특기사항 점검 [통합 점검 실행] [학교 이름] [학교 축제 이름]」 처럼 제목 줄에 함께 있어, 실행하려고 누를 때마다 우리 학교 이름이 맞는지 저절로 보게 됩니다. 점검이 끝나 설정 칸이 접혀도 사라지지 않고, 규정과 상관없는 「중복만 보기」 에서는 숨습니다.
- 알아듣기🧠 풍생 · 풍생고 · 풍생고등학교 — 무엇을 적어도 「풍생」 으로 찾습니다 — 학교 이름을 이름만 적는 분은 드뭅니다. 그런데 적은 그대로 찾으면, 칸에 「풍생고등학교」 라고 적은 경우 본문의 「풍생고」 · 「풍생인」 은 그 긴 말이 들어 있지 않아 모두 빠져나갑니다. 이제 칸에 적은 말에서 고등학교 · 고교 · 고 · 중학교 · 학교 같은 꼬리말을 떼어 핵심 이름만 남긴 뒤 찾습니다. 30개 파일로 「풍생」 과 「풍생고등학교」 를 각각 넣고 돌려 결과가 똑같은 것(위반 2,464 · 목련제 4건)을 확인했습니다.
- 여고👩🎓 성남여고 · 성남여자고 · 성남여자고등학교 는 모두 「성남여」 — 여자 학교는 줄여 쓸 때 「여고」, 풀어 쓸 때 「여자고등학교」 라서 둘의 겹치는 부분이 「성남여」 입니다. 그래서 「여자」 를 「여」 로 맞춘 뒤 꼬리말을 뗍니다. 칸에 어느 쪽을 적어도 본문의 두 표기가 모두 걸립니다.
- 지명🗺 성남시 는 학교가 아닙니다 — 시·군·구가 붙으면 뺍니다 — 꼬리말을 떼면 학교 이름이 지명과 같아지는 경우가 있습니다. 실제 파일에 「성남」 이 29번 나오는데 모두 「성남시」 였습니다 — 「성남고」 를 넣었다면 29건이 모두 잘못 걸렸을 것입니다. 그래서 핵심 이름 뒤에 시 · 군 · 구가 오면 지명으로 보고 넘깁니다. 「여」 로 끝나는 이름은 뒤에 「성」 이 오는 자리도 넘깁니다 — 「여성」 은 실제 파일에 397번 나오고, 「성남여성가족재단」 같은 기관이 있기 때문입니다.
- 보이기👀 칸 옆에 「→ 풍생」 처럼 알아들은 이름을 보여 줍니다 — 무엇으로 찾는지 모르면 믿기 어렵습니다. 적은 말과 찾는 말이 다를 때만 회색으로 나타나고, 「풍생」 처럼 적은 그대로면 표시하지 않습니다.
- 한계🔎 핵심 이름이 같은 중학교도 함께 걸립니다 — 「성남여」 로는 성남여고와 성남여중을 가를 수 없습니다. 같은 이름의 중학교는 대개 같은 재단이라 기재요령이 금지하는 재단명에 가깝지만, 걸린 자리는 한 번 눈으로 확인해 주세요. 정식 이름을 끝까지 쓴 「풍생고등학교」 는 원래 있던 「학교명」 규칙과 겹쳐 그 이름표로 표시됩니다 — 빨간 위반인 것은 같습니다.
v6.62026-09-14🏫 우리 학교 이름·축제 이름을 잡아냅니다 — 풍생 · 목련제
- 규정🏫 기재요령 p.19 — 학교를 알 수 있는 말은 어떠한 항목에도 쓸 수 없습니다 — 금지 대상은 학교명만이 아니라 재단명 · 학교 축제명 · 학교 별칭 등 일체입니다. 예외는 인적·학적사항, 수상경력의 수여기관, 봉사활동 실적의 장소 또는 주관기관명 세 자리뿐입니다.
- 구멍🕳 지금까지는 「○○고등학교」 라고 끝까지 써야만 걸렸습니다 — 규칙이 꼬리말 고등학교·중학교·초등학교를 찾는 모양이었습니다. 규정 검사 엔진을 그대로 떼어내 돌려 보니 풍생고등학교 만 걸리고 풍생고 · 풍생인 · 풍생학원 · 풍생 축제는 모두 통과였습니다. 학교 이름은 기계가 추측할 수 없어 생긴 구멍입니다 — 꼬리말을 「○○고」 까지 넓히면 이해하고·분석하고 같은 말이 16,584건 걸립니다.
- 칸🟥 설정에 빨간 두 칸 — 「학교 이름」 과 「학교 축제 이름」 — 「4. 기준 설정 후 실행」 의 글자 수 상한 옆에 있습니다. 처음부터 풍생과 목련제가 들어 있어 손대지 않아도 곧바로 검사합니다. 빨갛게 둔 까닭은 다른 학교에서 쓰실 때 반드시 바꿔야 하는 칸이기 때문입니다 — 지우고 그 학교 이름을 넣으면 그 이름으로 검사합니다.
- 잡기🔎 그 말이 들어가기만 하면 위반입니다 — 풍생 하나로 풍생고 · 풍생고등학교 · 풍생인 · 풍생학원이 모두 걸립니다. 별칭·재단명이 따로 있으면 쉼표로 이어 적습니다. 세특·행특·창체 세 탭 어디에서나 빨간 위반으로 올라가고, 「걸린 말」 에는 우리 학교 이름 / 우리 학교 축제 이름 으로 따로 모입니다.
- 예외✅ 규정이 허용하는 자리는 건드리지 않습니다 — 봉사활동 실적의 장소에 「(학교) 풍생고등학교」 라고 적는 것은 규정이 인정하는 정상 표기입니다. 이 프로그램은 봉사 탭·수상경력·인적·학적사항에서 원래 규정 검사를 돌리지 않으므로 그대로 통과합니다 — 따로 예외를 만든 것이 아니라 검사가 도는 곳이 처음부터 세 탭뿐임을 코드로 확인했습니다.
- 실제🎯 실제 파일에서 목련제 4건이 새로 잡혔습니다 — 창체에 「목련제에서 학급 댄스를 위한 안무 담당으로서…」 가 네 학생에게 있었습니다. 두 칸을 비우고 돌리면 창체 위반이 2,464 → 2,460 으로 정확히 4건 줄어, 다른 판정에는 아무 영향이 없음을 확인했습니다. 세특(위반 9,875 · 검토 1,802)과 행특(54 · 47)은 그대로입니다. 풍생은 이번 파일에 한 번도 나오지 않았습니다.
- 조심🌸 「목련」 이 아니라 「목련제」 로 잡습니다 — 세특 한 건에 「희생정신을 지닌 목련에 비유하여」 처럼 꽃 이름으로 쓰인 자리가 있습니다. 축제 이름을 끝까지 적어 두어야 이런 자리를 잘못 잡지 않습니다. 한 글자는 받지 않습니다 — 「제」 한 글자를 넣으면 문제·주제·항생제가 모두 걸리기 때문입니다.
- 기억💾 한 번 적으면 브라우저가 기억하고, 세 탭이 함께 바뀝니다 — 세특에서 바꾸면 행특·창체 칸도 같은 값이 되고, 다음에 열어도 그대로 남아 있습니다. 칸을 비워 두면 비운 채로 기억해 기본값이 다시 살아나지 않습니다. 저장되는 것은 두 칸의 글자뿐이고, 학생 자료는 여전히 브라우저 밖으로 나가지 않습니다.
v6.52026-09-13🎛 출결·봉사의 걸러 보기 줄을 다른 탭과 똑같이 맞췄습니다
- 모양🎛 「보기 / 전체 학년」 두 칸뿐이던 줄을 제대로 된 걸러 보기 줄로 바꿨습니다 — 세특·행특·창체는 반 · 학년 · 정도 · 전체 펼치기 · 전체 접기 · 보이는 것 전체 PDF 가 한 줄에 놓인 하얀 칸인데, 출결·봉사만 맨 위에 붙은 글자 몇 개였습니다. 이제 다섯 탭이 같은 모양입니다.
- 반🏫 반으로 걸러 보기 가 새로 생겼습니다 — 서른 반을 함께 올리면 왼쪽 목록이 길어지는데, 지금까지 출결·봉사에는 반을 고르는 칸이 없어 학년으로만 줄일 수 있었습니다. 이제 「3학년 9반」 처럼 한 반만 골라 볼 수 있고, 남는 것이 없는 학년은 머리까지 함께 숨습니다.
- 정도🔴 「지적만」 을 따로 골라 볼 수 있습니다 — 예전에는 전체 아니면 지적된 것만 둘뿐이었는데, 「지적된 것만」에 「확인 필요」가 함께 들어 있었습니다. 실제 파일에서 출결은 지적 1건에 확인 필요 240건이라, 정작 급한 1건이 240건에 묻혔습니다. 이제 전체 · 지적만 · 지적 · 확인 필요 세 가지이고, 「지적만」을 고르면 반 서른 개가 한 개로 줄어 바로 찾아집니다. 처음 열릴 때 보이는 것은 예전과 같습니다.
- 펼침📂 전체 펼치기 · 전체 접기 로 학년과 반을 한꺼번에 — 학년 → 반 → 학생 세 단계를 하나씩 누르지 않아도 됩니다. 펼치면 학생까지 모두 열리고, 접으면 학년만 남습니다.
- PDF🖨 보이는 것 전체 PDF — 걸러 놓은 그대로 한 벌로 — 지금까지는 「반별 PDF 30개 저장」 처럼 파일 서른 개로 따로 떨어졌습니다. 이제 지금 화면에 보이는 반만 모아 한 벌로 내려받습니다 — 「지적만」 으로 걸러 놓고 누르시면 고칠 것만 담긴 PDF가 나옵니다. 파일 이름에 고른 반·학년이 붙습니다. 반별로 따로 받는 예전 단추도 그대로 있습니다.
- 셈🔢 남은 개수를 함께 적습니다 — 「펼친 학생 6명」 만 있던 자리에 「목록 30개 반 · 펼친 학생 241명」 처럼 반 수까지 적어, 걸러낸 뒤 무엇이 얼마나 남았는지 바로 보입니다.
v6.42026-09-13🎯 실행 단추를 제목 옆으로 — 스크롤을 내리지 않아도 됩니다
- 자리🎯 「통합 점검 실행」 과 「점검 실행」 을 제목 바로 옆으로 옮겼습니다 — 지금까지는 설정 칸 맨 아래에 있었습니다. 파일을 올리면 파일 줄이 길게 쌓이는데, 그러면 단추가 화면 밖으로 밀려나 실행하려고 매번 스크롤을 내려야 했습니다. 이제 「세부능력 및 특기사항 점검」 같은 제목 바로 오른쪽에 붙어 있어, 파일을 몇 개를 올리든 늘 같은 자리에서 누르실 수 있습니다. 다섯 탭 모두 그렇습니다.
- 상태🔒 읽어들인 기록이 있을 때만 눌립니다 — 파일을 올리기 전에는 회색으로 잠겨 있다가, 다 읽고 나면 파란색으로 켜집니다. 예전처럼 빈 상태에서 눌러 경고창을 보실 일이 없습니다. 「올린 파일 모두 비우기」 를 누르면 다시 잠깁니다.
- 유지🔁 보기를 바꾸면 이름도 따라 바뀝니다 — 위의 「중복 / 규정 / 통합」 을 고르면 단추 이름이 중복 점검 실행 · 규정 점검 실행 · 통합 점검 실행 으로 바뀌던 것은 그대로입니다. 실행하는 동안에는 「점검 중…」 으로 바뀌고 다시 눌리지 않습니다.
- 덤👀 실행한 뒤에도 단추가 사라지지 않습니다 — 점검이 끝나면 설정 칸이 접히는데, 단추가 그 안에 있던 탓에 함께 사라져 기준을 바꿔 다시 돌리려면 설정을 먼저 펴야 했습니다. 이제 제목 옆에 남아 있어 바로 다시 실행하실 수 있습니다.
v6.32026-09-13🗂 왼쪽 목록을 학년으로 접었습니다 — 3학년부터 차례로
- 접기🗂 다섯 탭 모두 학년으로 한 겹 접힙니다 — 서른 반을 한꺼번에 올리면 왼쪽 목록이 수백 줄이 되어, 찾으시는 반이 어디쯤인지 스크롤로 헤매야 했습니다. 이제 3학년 → 2학년 → 1학년 차례로 접혀 나오고, 처음에는 모두 접힌 채로 뜹니다. 학년 머리에는 그 학년의 반 수·학생 수·지적 건수가 함께 적혀 있어, 펼치지 않아도 어느 학년이 문제인지 보입니다.
- 펼침📂 누르면 탭마다 알맞은 단위로 펼쳐집니다 — 세부능력 및 특기사항은 과목별(가정과학·경제 수학·고급 생명과학… 가나다순), 행동특성 및 종합의견과 창의적 체험활동은 반별(1반·2반·3반… 번호순, 창체는 「3반 · 자율활동」처럼 영역까지), 출결상황과 봉사활동실적은 학년 → 반 → 학생 세 단계로 들어갑니다.
- 이름표🏷 행특·창체 목록이 모두 「이 학년 전체」 로만 보이던 것 — 이름표를 만드는 자리가 학년과 과목만 쓰고 반을 빠뜨려, 서로 다른 네 개 반이 화면에서는 똑같은 줄 네 개로 보였습니다. 어느 반인지 알 수 없어 누르기 전에는 구분이 되지 않았습니다. 이제 반 이름을 앞에 붙입니다.
- 지킴🖨 접어도 「보이는 것 모두 PDF」 가 줄지 않습니다 — 이 기능은 목록이 눈에 보이는지로 대상을 셉니다. 접은 줄을 목록에서 빼 버리면 접어 둔 학년이 PDF에서도 통째로 빠집니다. 그래서 접은 줄도 자리에는 그대로 두고 화면에서만 감춥니다.
- 연결🔗 걸러 보기·전체 개요와 함께 움직입니다 — 학년·반·과목으로 걸러 보시면 남는 것이 없는 학년은 머리까지 함께 숨습니다. 오른쪽 전체 개요 표에서 항목을 누르면 왼쪽에서 그 학년이 저절로 펼쳐져 지금 보고 있는 곳이 어디인지 보입니다.
v6.22026-09-13🎓 출결·봉사에서 학년이 뒤섞이던 것을 바로잡았습니다
- 증상🎓 서른 반을 함께 올리면 3학년만 나왔습니다 — 반이 서른 개가 아니라 열 개로 줄고, 1·2학년 학생이 모두 「3학년 N반」 아래로 들어갔습니다. 학년별로 따로 올리면 제대로 나왔기에 더 알기 어려웠습니다.
- 원인🔍 학생부 쪽 아래에는 반 번호만 있고 학년이 없습니다 — 그래서 1학년 1반·2학년 1반·3학년 1반 이 모두 「반 1」 로 읽힙니다. 올해 학년은 누가기록 가운데 가장 높은 학년으로 정하는데, 이때 반 번호만으로 학급을 가르다 보니 세 학급이 한 덩어리가 되어 올해가 3학년으로 잡혔습니다. 파일 하나가 곧 한 학급이므로, 이제 파일까지 함께 봐서 학급을 가릅니다.
- 여파🚨 지적이 1건에서 180건으로 부풀어 있었습니다 — 1·2학년 학생이 「지난 학년」 으로 오인되면서, 아직 쓰지 않아 넘어가 주어야 할 것까지 빨간 지적으로 올라갔습니다. 바로잡은 뒤 출결 지적 180건 → 1건, 반은 10개 → 30개, 학생은 676명 → 677명이 되었습니다.
- 봉사🤝 봉사활동은 원인이 하나 더 있었습니다 — 2학년 학급인데 봉사 실적이 1학년분만 들어 있는 경우가 있습니다. 그 탭의 기록만 보고 학년을 정하니 그 학급이 「1학년」으로 내려앉아 다른 학급과 뭉쳤습니다(29개 반). 이제 세특·행특·창체에서 이미 구해 둔 그 파일의 올해 학년을 함께 넘겨받아 정합니다 — 30개 반이 모두 제대로 섭니다.
- 겹침👥 학년이 다른 동명이인이 한 사람으로 합쳐지던 것 — 학생을 가리는 열쇠도 반 번호만 쓰고 있어, 1학년 6반 3번 홍길동과 3학년 6반 3번 홍길동이 한 사람이 되었습니다. 같은 기준으로 맞췄습니다.
- 확인✅ 학년별로 따로 돌린 결과와 합계가 딱 맞습니다 — 출결 677명 = 215 + 219 + 243, 확인 필요 240 = 91 + 88 + 61, 지적 1 = 0 + 0 + 1. 봉사 657명 = 197 + 217 + 243, 실적 3,602건 = 590 + 1,130 + 1,882, 지적 4 = 0 + 3 + 1.
v6.12026-09-13🧊 서른 개를 한꺼번에 올려도 멈추지 않습니다
- 규모📦 파일 서른 개는 6,590쪽 입니다 — 파일 하나가 학생 한 명이 아니라 한 학급 전체(학생 서른한 명 × 열다섯 쪽)입니다. 서른 반이면 156MB · 6,590쪽 · 기록 약 2만 건이라, 파일 몇 개를 셈하고 만든 자리들이 이 크기에서 무너졌습니다.
- 한꺼번🧊 워커를 서른 개나 띄우고 있었습니다 — v5.9 에서 동시에 읽기로 바꾸면서 몇 개까지라는 제한을 두지 않았습니다. 서른 개를 올리면 딴 갈래 서른 개가 한꺼번에 뜨고, 파일마다 내용이 여러 벌씩 복사되어 메모리가 크게 부풀었습니다. 이제 컴퓨터 코어 수에 맞춰 대여섯 개씩 나눠 읽습니다. 파일 줄은 서른 개를 먼저 다 만들어 두므로 기다리는 파일도 보입니다.
- 사본📮 파일 내용을 복사해 넘기던 것을 손잡이만 넘기도록 — 지금까지는 본체에서 파일을 통째로 읽어 그 사본을 워커에 보냈습니다. 이제 파일 손잡이 를 그대로 넘겨 워커가 직접 읽습니다 — 본체는 파일 내용을 아예 들고 있지 않습니다. 피크 메모리가 231MB → 68MB 로 줄었습니다.
- 되풀이🔁 파일이 하나 들어올 때마다 그때까지 읽은 전부를 다시 만들고 있었습니다 — 학생부 하나는 세특·행특·창체 세 탭에 함께 들어가므로, 서른 개면 약 120번 전체가 다시 만들어졌습니다. 서른 번 할 일을 465번 한 셈이고, 이 일은 화면을 그리는 갈래에서 돌아 그동안 화면이 굳었습니다. 이제 다 읽은 뒤 탭마다 한 번씩, 모두 네 번만 합니다.
- 성적⏱ 올리는 동안 굳어 있던 시간이 17.2초 → 0.9초 — 서른 개를 올리며 화면이 멈춘 시간을 모두 더한 값입니다. 1초를 넘게 멈추는 자리가 여섯 번 → 없음이 되었습니다.
- 검사🧮 「검사 실행」이 한 번에 19초씩 굳던 것 — 중복을 찾을 때 모든 쌍을 하나하나 맞대 보느라 묶음 하나가 통째로 한 덩어리였고, 진행 막대는 묶음 사이에서만 움직였습니다. 이제 지문을 모아 둔 표를 묶음마다 한 번 만들어 같은 칸에 든 것끼리만 견주고, 중간중간 화면에 자리를 내줍니다. 검사 시간은 54.4초 → 27.4초, 한 번에 가장 오래 굳는 시간은 19.2초 → 0.6초입니다.
- 같음🔒 빨라졌을 뿐 결과는 글자 하나까지 같습니다 — 걸러내는 조건 자체는 바꾸지 않았기 때문입니다. 서른 개 파일로 예전 방식과 새 방식을 끝까지 돌려 결과 지문이 일치하는 것을 확인했습니다 — 겹친 쌍 4,272, 공통 문구 2,328, 세특 15,748건 · 676명 · 과목 239개, 모두 그대로입니다.
- 취소🛑 「읽기 취소」 를 달았습니다 — 잘못 올리셨을 때 탭을 닫는 것 말고는 멈출 방법이 없었습니다. 이제 읽는 동안 취소 단추가 나타나고, 누르면 기다리던 파일은 버리고 돌고 있던 것은 즉시 정리합니다. 「올린 파일 모두 비우기」 도 읽는 중이면 먼저 멈추도록 이었습니다.
- 솔직🕰 전체 시간은 크게 줄지 않았습니다 — 6,590쪽을 실제로 읽어 내는 데 드는 시간은 어쩔 수 없습니다(서른 개 기준 1~2분). 이번에 고친 것은 「기다리는 것」이 아니라 「굳는 것」 입니다 — 이제 그동안 진행 막대가 계속 움직이고, 언제든 취소하실 수 있습니다.
v6.02026-09-10✂ PDF 읽는 방식 재설계 — 문장을 원래대로 되살려 읽습니다
- 근본✂ 줄이 바뀌던 자리의 띄어쓰기를 읽는 단계에서 되살립니다 — 지금까지는 그 자리를 그냥 붙여 두고(“어려운말기”, “따뜻한성품”) 글자 수와 중복 판정만 따로 손봤습니다. 증상을 가린 것이지 고친 것이 아니었습니다. 이제 표를 만드는 그 자리에서 문장을 제대로 복원합니다. 그러면 화면에 보이는 글도 깨끗해지고, 세특·행특·창체 모든 검사가 저절로 정확해집니다.
- 근거🔍 근거는 올리신 파일 안에 이미 있습니다 — 같은 표현이 다른 기록에서는 줄 한가운데에 나오고, 거기에는 띄어쓰기가 그대로 남아 있습니다. 그래서 파일 전체를 말뭉치 삼아 그 자리 앞뒤 네 글자를 열쇠로 찾아봅니다 — 띄어 쓴 예만 나오면 띄우고, 붙여 쓴 예만 나오면 붙입니다. 양쪽이 다 나오거나 근거가 없으면 판정을 미루고 세로 막대를 남깁니다. 줄이 바뀌던 자리는 근거에서 뺍니다 — 거기야말로 알 수 없는 자리이기 때문입니다. 인공지능은 쓰지 않고, 올리신 파일 안의 증거만 씁니다. 근거가 없을 때 쓰는 규칙은 딱 하나 — 쉼표 뒤는 띄어 쓴다(실제 파일 17곳이 모두 그러했습니다).
- 성적📊 띄어쓰기 오류가 330곳 → 139곳으로 줄었습니다 — 엑셀 원본과 짝지어지는 세특 139건을 띄어쓰기까지 포함해 대조한 결과입니다. 완전히 똑같은 기록이 12건 → 37건이 되었습니다. 판정한 자리의 정확도는 97.5%, 되살린 자리는 842곳, 붙는 것이 맞다고 확정한 자리가 1,178곳입니다.
- 효과🎯 중복 검사가 엑셀과 거의 같아졌습니다 — 예전에는 두 학생의 줄바꿈 자리가 달라 198자 복붙이 119자로 줄어 보였습니다. 이제 26쌍 가운데 21쌍이 길이까지 똑같이 나오고, 짧게 나오는 것은 1쌍(102자→101자)뿐입니다. 규정 검사는 예전처럼 엑셀에서 잡히는 것을 하나도 놓치지 않습니다.
- 보강🧷 중복 비교도 띄어쓰기를 무시하도록 했습니다 — 되살리지 못한 자리가 아직 남아 있고, 학생마다 띄어쓰기 습관이 다른 복붙도 있습니다. 그래서 맞대 볼 때는 공백을 빼고 견주고, 화면에 칠할 때만 원문 자리로 되돌립니다. 덤으로 수업 공통 서술도 띄어쓰기가 달라도 알아보게 되어(체육 논술·음악 교가 등 2가지가 새로 잡힘), 그것 때문에 겹친 것처럼 보이던 허위 4쌍이 빠지고 진짜 1쌍(84자)이 새로 잡혔습니다.
- 지난학년🕓 지난 학년 기록도 빠짐없이 검사합니다 — 규정 위반과 중복은 학년을 가리지 않고 모두 봅니다. 실제 파일에서 1학년 세특 지적 139건·겹친 쌍 64쌍이 그대로 잡힙니다(오히려 학년 가운데 겹친 쌍이 가장 많습니다). 글자 수만 학년을 나눠 보는데, 그 사이에 기준이 강화되어 그때는 정상이던 것이 지금 기준으로는 넘기 때문입니다. 그래서 지난 학년은 「그때의 상한」(행동특성 1,500B · 진로활동 2,100B)으로 다시 재어, 그때 기준으로도 넘은 것이 있으면 빨간 지적으로 올립니다 — 그해 기준으로도 어긋난 것이니까요. 실제 파일 두 종에서는 0건이었습니다.
- 화면📁 중복 대조표를 처음에는 모두 접어 둡니다 — 지금까지 첫 번째 쌍과 「문장째 복사」 이상은 자동으로 펼쳐져 있어, 묶음을 열면 긴 본문이 먼저 쏟아졌습니다. 이제 모두 접힌 채로 뜨고 필요한 것만 눌러서 봅니다. 위의 「전체 펼치기」 로 한꺼번에 여는 것은 그대로입니다.
- 속도⏱ 되살리는 데 파일 하나당 0.4초쯤 듭니다 — 말뭉치를 한 번만 훑도록 만들어, 455쪽 파일에서도 부담이 크지 않습니다. 웹 워커 안에서 함께 돌아 여러 파일을 올리면 나란히 처리됩니다.
v5.92026-09-10⚡ 여러 파일을 한꺼번에 — 차례로 읽던 것을 동시에
- 동시⚡ 파일 열 개를 올리면 열 개가 함께 읽힙니다 — 지금까지는 하나를 다 읽어야 다음이 시작되었습니다. 파일 줄도 하나씩 늦게 생겨서, 앞 파일이 큰 것이면 뒤엣것은 한참 기다려야 했습니다. 이제 파일 줄을 먼저 모두 만들어 두고 읽기를 한꺼번에 시작합니다 — 진행 막대 여러 개가 나란히 차오릅니다. 끌어다 놓기와 클릭 → 열기 두 경로 모두 그렇습니다(예전에는 클릭 쪽만 차례로 읽혔습니다).
- 속도🚀 컴퓨터의 다른 코어까지 씁니다 — 실제로 두 배 빨라집니다 — 자바스크립트는 본디 한 갈래로만 돌아서, 그냥 동시에 시작하기만 하면 번갈아 조금씩 처리될 뿐 총 시간은 그대로입니다. 그래서 PDF 읽기를 웹 워커로 내보내 딴 갈래에서 돌립니다. 네 파일을 재어 보니 30.2초 → 15.9초 였습니다. 워커에서 나온 결과가 본체에서 읽은 것과 글자 하나까지 같은지 확인했습니다(세특 368행·창체 92행·행특 20행·출결 36·봉사 91, 모두 일치).
- 안전🛟 워커를 못 쓰는 자리에서는 조용히 예전 방식으로 — 파일을 직접 열어 보실 때(file://)는 브라우저가 워커를 막습니다. 그런 자리에서는 말없이 이 자리에서 읽습니다 — 조금 느릴 뿐 결과는 똑같고, 진행 막대도 그대로 나란히 움직입니다. 한 번 막히면 그 뒤로는 곧장 예전 방식으로 갑니다.
v5.82026-09-10✅ 「엑셀로 확인 필요」를 없앴습니다 — 저장됐다는 것이 곧 증거
- 없앰✅ 「글자 수를 딱 잘라 말할 수 없습니다」 라는 판정을 통째로 없앴습니다 — PDF 는 줄이 바뀌는 자리의 띄어쓰기를 지워 버려, 상한에 걸치는 기록은 넘었는지 알 수 없다고 미뤄 두고 엑셀로 다시 확인하시라 했습니다. 그런데 그럴 필요가 없었습니다. 나이스는 상한을 넘으면 저장 자체를 막습니다. 학생부에 그 기록이 남아 있다는 것이 곧 상한 안이라는 증거입니다. 그래서 있을 수 있는 최대치를 상한에서 끊습니다 — 되살릴 수 있는 띄어쓰기가 몇 개든 상한을 넘을 수는 없기 때문입니다. 실제 파일에서 「엑셀로 확인 필요」가 세특 12건·창체 9건·행특 1건 → 모두 0건이 되었습니다. 엑셀을 다시 받으실 일이 없습니다.
- 덤📐 그 기록들은 글자 수가 오히려 정확합니다 — 상한까지 여유가 0인 기록이라면, 줄바꿈 자리 가운데 단 한 곳도 띄어쓰기가 아니었다는 뜻입니다(하나라도 있었으면 저장이 안 됐을 테니까요). 그래서 이런 기록은 범위가 아니라 딱 떨어지는 값입니다.
- 표시▌줄바꿈 자리 표시를 글자에서 세로 막대로 바꿨습니다 — 지금까지 ⌷ 라는 글자로 찍었는데, 이 글자가 없는 글꼴에서는 빈칸처럼 보여 오히려 없는 띄어쓰기가 있는 것처럼 읽혔습니다 — “전환해야 한⌷다는” 이 “한 다는” 으로 보이는 식입니다. 이제 글자가 아니라 얇은 노란 세로 막대를 직접 그리므로 글꼴과 상관없이 글자와 헷갈리지 않습니다.
- 안내💬 펼친 화면의 설명을 사실에 맞게 고쳤습니다 — 상한 안인 기록에는 “나이스는 상한을 넘으면 저장 자체를 막으므로, 이 기록은 반드시 N B 이하입니다 (여유 M B)” 라고 적습니다. 지난 학년 기록에는 “그때 기준으로는 상한 안이었습니다” 라고 적고 왜 지금 기준으로는 넘는지 함께 알려 드립니다.
v5.72026-09-10📏 글자 수 초과 재정립 — 나이스가 이미 막은 것을 우리가 또 지적하고 있었습니다
- 깨달음🔎 “저장이 됐다면 상한 안이었다” — 나이스는 상한을 넘으면 저장 자체를 막습니다. 그러니 학생부 PDF 에 남아 있는 기록은 모두 그때 기준으로는 상한 안입니다. 그런데도 초과가 뜬다면 우리 쪽이 틀린 것이거나 그 사이에 기준이 바뀐 것입니다. 이 사실을 기준 삼아 전부 다시 재어 봤습니다.
- 실측📊 저장된 값이 어디서 멈추는지가 진짜 상한입니다 — 실제 파일 두 개를 항목별로 재었습니다. 과목별 세특 1,498B · 개인별 세특 1,496B · 자율 1,496B · 동아리 1,490B 는 모두 1,500B(500자) 코앞에서 멈춥니다 — 기재요령과 일치합니다. 그런데 행동특성은 1,496B, 진로활동은 2,081B 에서 멈췄습니다. 지금 기준(행특 300자·진로 500자)이 아니라 예전 기준(행특 500자·진로 700자) 으로 저장된 기록이라는 뜻입니다.
- 고침✅ 지난 학년 기록은 지적에서 뺐습니다 — 이미 마감되어 고칠 수도 없고, 그때 기준으로는 정상이었기 때문입니다. 대신 「지난 학년 (참고)」 로 따로 모아, 행동특성 500자→300자 · 진로활동 700자→500자 로 기준이 강화되었다는 사실을 함께 알려 드립니다. 올해 쓰실 때만 새 기준을 지키시면 됩니다. 실제 파일에서 글자 수 초과가 세 항목 모두 0건이 되었습니다 — 올해 기록 중에는 넘은 것이 정말로 하나도 없습니다.
- 1·2학기🔧 한 칸에 붙어 있던 1학기·2학기를 갈랐습니다 — 3학년 양식은 “…양면성을 인식함.(2학기)통합과학: 처음 만나는 뇌과학…” 처럼 줄 중간에서 학기가 바뀝니다. 줄 단위로만 나누다 보니 1·2학기가 한 건이 되어 1,519B 처럼 상한을 넘은 것처럼 보였습니다. 이제 줄 중간의 (N학기)과목명: 도 새 기록으로 가릅니다.
- 개인별🔧 개인별 세특의 학년 합산을 되돌렸습니다 — v5.6 에서 기재요령 각주를 근거로 학년마다 합쳐 500자로 보았는데, 실제 저장본을 재어 보니 조각 하나하나가 각각 1,496B 안에서 멈춥니다 — 한 학년에 여럿 있어도 각자 별개의 칸입니다. 합치면 3,262B 짜리 허깨비가 생기므로 따로 셉니다. 실측이 문서 해석보다 확실합니다.
v5.62026-09-10🔧 기록이 서로 붙던 것을 바로잡고 · 글자 수를 눌러서 본문 보기
- 바로잡음🔧 두 기록이 한 건으로 붙어 글자 수가 배로 잡히던 것 — 세특 대부분은 「과목명: 내용」 꼴이라 과목 이름으로 나눌 수 있었는데, 「수업량 유연화에 따른 학교 자율적 교육 활동…」 처럼 과목 이름이 없는 기록은 앞 과목에 그대로 달라붙었습니다. 그 결과 진로와 직업 1,215자 같은 허깨비 기록이 생겨 상한을 크게 넘은 것처럼 보였습니다. 이제 줄 간격(같은 기록 14pt, 다른 기록 28pt)으로 기록을 가르므로 이름이 없어도 따로 셉니다. 실제 파일에서 글자 수 초과가 49건 → 17건으로 줄었습니다 — 32건이 허깨비였습니다.
- 쪽넘김📄 쪽이 바뀌는 자리를 '줄이 꽉 찼는지'로 가립니다 — 쪽이 넘어가면 줄 간격을 쓸 수 없어, 새 기록인지 이어지는 문장인지 알 수 없었습니다. 이제 앞 쪽의 마지막 줄이 오른쪽 끝까지 찼는지를 봅니다 — 꽉 찼으면 문장이 이어지는 중이고, 짧게 끝났으면 그 기록은 거기서 끝난 것입니다. 창체·행특도 쪽이 넘어가며 영역·학년이 다시 찍히는 탓에 한 기록이 두 줄로 갈라지고 있었는데, 같은 학년의 같은 영역은 두 번 나올 수 없으므로 이어 붙이도록 했습니다.
- 확인🎯 엑셀 238건이 모두 '한 줄 안에 온전히' 들어감을 확인했습니다 — 예전 검사는 내용이 어딘가에 있는지만 봤습니다. 이번에는 기록 사이에 칸막이를 두고 한 기록이 한 줄 안에 통째로 들어가는지를 봤습니다 — 쪼개져도 붙어도 실패하는 더 엄한 검사입니다. 세특 184 · 창체 52 · 행특 2, 모두 통과했습니다.
- 개인별📚 과목 이름이 없는 기록에 제 이름을 붙였습니다 — 개인별 세부능력 및 특기사항 입니다. 기재요령 p.205 각주에 교과학습발달상황* 은 “최대 글자수 기준은 학년 단위임(과목별 세부능력 및 특기사항은 제외)” 이라고 되어 있어, 개인별 세특은 학년마다 합쳐 500자로 봅니다. 3학년 파일에서 이 기준으로 13건이 상한을 넘었습니다. 3학년 양식은 과목 앞에 (1학기) 가 붙는데, 이것도 학기 칸으로 옮겨 과목 이름이 지저분해지지 않게 했습니다.
- 펼치기👁 글자 수 표에서 이름을 누르면 본문이 펼쳐집니다 — “1,498B” 만 봐서는 무엇을 줄여야 할지 알 수 없었습니다. 이제 줄을 누르면 그 기록의 본문 전체가 바로 아래에 펴지고, 한글 445자×3B + 그 밖 163자×1B = 1,498B 처럼 어떻게 세었는지도 함께 나옵니다. 규정에 걸린 대목은 예전처럼 표시되고, 줄이 바뀌던 자리에는 세로 막대 를 찍어 띄어쓰기가 있었을 수 있는 곳을 눈으로 짚을 수 있습니다. 확정 초과인 기록에는 “한글로 약 456자를 줄이면 됩니다” 처럼 얼마나 줄여야 하는지도 적습니다.
- 아슬아슬📐 얼마나 아슬아슬한지 숫자로 말해 줍니다 — “줄바꿈 자리 10군데 가운데 3군데 이상이 실제 띄어쓰기였다면 상한을 넘습니다”. 실제 파일을 재어 보니 이런 자리의 절반쯤이 띄어쓰기였으므로, 3/10 이면 넘었을 가능성이 낮지 않다는 뜻입니다. 추측으로 판정하지는 않되, 어느 쪽으로 기울었는지는 알려 드립니다.
v5.52026-09-09📊 진행 세로 막대 · 파일 한 개당 한 줄
- 중복🧹 파일 두 개를 올리면 네 줄이 뜨던 것을 고쳤습니다 — 파일을 올린 탭이 자기 줄을 만든 뒤, 다섯 탭에 나눠 넣는 과정에서 그 탭에도 또 한 줄을 만들고 있었습니다. 이제 나눠 넣는 쪽이 올린 탭인지 알고 줄을 건너뜁니다. 파일 한 개당 정확히 한 줄, 다섯 탭 모두 그렇습니다.
- 진행📊 얼마나 걸리는지 막대로 보여 줍니다 — 지금까지는 “PDF 읽는 중…” 한 줄뿐이라 455쪽짜리를 올리면 10초쯤 멈춘 것처럼 보였습니다. 이제 진행 막대와 함께 「PDF 읽는 중 43% (196 / 455쪽)」 로 지금 어디쯤인지 나오고, 끝나면 막대가 사라지며 초록색 ✅ 완료 로 바뀝니다. 쪽을 훑는 사이사이 화면에 틈을 내어 브라우저가 얼어붙지 않습니다 — 읽는 동안에도 탭을 옮겨 다닐 수 있습니다.
- 목록↳ 반을 펼치면 학생이 들여쓰기로 붙습니다 — 펼친 학생들이 반 제목과 같은 줄맞춤이라 어디까지가 한 반인지, 다음 반 제목이 어디인지 알아보기 어려웠습니다. 이제 학생 줄은 안쪽으로 들여쓰고 왼쪽에 안내선이 그어지며, 반 제목은 굵게 표시됩니다. 30명을 펼쳐 놓아도 다음 반을 바로 찾아 누를 수 있습니다.
- 일관🔗 어느 탭에 올리든 다섯 탭이 함께 찹니다 — 출결·봉사 탭에 올린 PDF 는 그 탭만 채우고 있었습니다. 이제 다섯 탭이 같은 배포 경로를 쓰므로 어디에 올리든 결과가 같습니다.
v5.42026-09-09🏫 출결·봉사를 반으로 묶어서 · 내려받기는 반 단위로
- 표시🏫 학년까지 붙여 3학년 5반 14번 ○○○ 으로 씁니다 — 지금까지 출결·봉사 탭은 5반 14번 ○○○ 처럼 학년이 빠져 있었습니다. 학생부 PDF 의 쪽 아래 띠에는 반과 번호만 있고 학년이 없기 때문입니다. 누가기록이라 지난 학년까지 함께 들어오므로, 그 반에서 가장 높은 학년이 올해라는 점을 이용해 반 이름을 3학년 5반 으로 세웁니다. 이제 세특·행특·창체와 같은 방식으로 학년·반·번호·성명이 모두 나옵니다.
- 목록📁 처음에는 반만 접어서 보여 줍니다 — 왼쪽 목록이 ▸ 3학년 5반 30명 처럼 반 단위로 접혀 있고, 반을 누르면 그때 번호순으로 학생이 펼쳐집니다. 반을 누르면 오른쪽에는 그 반 전체(지적된 것 + 학생별 요약)가 함께 열려 담임 선생님이 한 화면에서 훑을 수 있습니다. 전체 개요에는 반별 실태 표가 새로 들어가 반마다 몇 명·몇 건·지적 몇 건인지 한눈에 보입니다.
- 내려받기📦 PDF 는 반 단위로만 만듭니다 — 담임 선생님이 자기 반을 한꺼번에 고칠 수 있어야 쓸모가 있으므로, 학생 하나씩 쪼갠 파일은 만들지 않습니다. 전체 개요에 「반별 PDF N개 저장」(하나로 합치지 않고 반마다 따로), 반별 실태 표의 각 줄에 PDF 단추, 반 화면과 학생 화면에 「이 반 전체 PDF」 를 두었습니다. 파일 이름도 출결점검_3학년 5반.pdf 처럼 반 이름이 그대로 들어갑니다. CSV 는 전체와 반별 모두 받을 수 있습니다.
v5.32026-09-09🪟 출결·봉사도 좌우 분할로 · 🐞 파일 여러 개 고르기 버그
- 버그🐞 파일을 여러 개 골라도 하나만 읽히던 것을 고쳤습니다 — 끌어다 놓으면 여러 개가 들어오는데 클릭해서 여러 개 고른 뒤 「열기」를 누르면 맨 앞 하나만 들어갔습니다. 원인은 파일 목록(FileList)이 살아 있는 목록이라, 다음 선택을 받으려고 입력칸을 비우는 순간 그 목록까지 함께 비워졌기 때문입니다. 파일 읽기는 비동기라 첫 파일을 읽고 돌아오면 목록이 이미 텅 비어 있었습니다. 이제 먼저 배열로 떠 두고 비웁니다. 브라우저와 똑같이 흉내 낸 확인에서 3개를 골라 3개가 모두 읽히는 것을 확인했습니다. 다섯 탭 모두 고쳤습니다.
- 화면🪟 출결·봉사 탭도 좌우 분할로 바꿨습니다 — 세특·행특·창체와 같은 방식입니다. 왼쪽에 지적 · 확인 필요 · 이상 없음으로 나뉜 학생 목록이 서고, 학생을 누르면 오른쪽에 그 학생의 표 원문이 그대로 열립니다. 출결은 학년별 세 줄(수업일수·결석·지각·조퇴·결과·특기사항)이 함께 나와 어느 학년이 걸렸는지 한눈에 보이고, 봉사는 실적 전체가 나오며 (학교)·(개인) 앞머리에 색을 칠해 있는 것과 없는 것이 바로 구별됩니다. 전체 개요의 표에서 줄을 눌러도 그 학생으로 넘어갑니다. 내려받기 버튼(인쇄·CSV·PDF)도 오른쪽 머리에 고정됩니다.
- 규칙📐 괄호 안에 공백이 있으면 지적합니다 — ( 학교 ), (학교 ), ( 개인) 처럼 괄호와 글자 사이가 벌어진 것은 이제 지적입니다. (학교) 라야 맞습니다. 괄호 뒤의 띄어쓰기는 그대로 괜찮습니다 — (학교) 대한적십자사 는 정상입니다. 일부러 어긋나게 만든 15가지로 확인했습니다.
v5.22026-09-09🗓 출결상황 · 🤝 봉사활동실적 탭 추가 — 3탭에서 5탭으로
- 출결🗓 ‘개근’이 맞게 적혔는지 봅니다 — 학생부 PDF 1쪽 2. 출결상황 표를 읽어, 결석·지각·조퇴·결과 12칸이 모두 비어 있으면 특기사항에 개근이 있어야 하고, 하나라도 있으면 개근이 있으면 안 됩니다(기재요령 p.63). 표의 세로줄로 학년·수업일수·결석(질병/미인정/기타)·지각·조퇴·결과·특기사항 15칸을 정확히 가르고, 가로줄로 학년 행을 나눕니다. 실제 파일에서 지난 학년인데 개근이 빠진 학생 1명을 찾아냈습니다.
- 봉사🤝 (학교) · (개인) 표기가 빠진 실적을 찾습니다 — 6. 창의적 체험활동상황 안 봉사활동실적 표에서 장소 또는 주관기관명이 (학교) 또는 (개인) 으로 시작하는지 봅니다(기재요령 p.104). 학교 계획에 따른 것인지 학생 개인 계획에 따른 것인지 구분해 적어야 하기 때문입니다. 칸 하나가 여러 줄로 접히거나(‘(학교) 대한적십자사 / 서울남부혈액원’) 일자가 기간으로 적힌 것(‘2025.04.03. - 2025.06.20.’)도 이어 붙여 읽습니다. 실제 파일 325건은 모두 정상이었습니다.
- 한번에📄 PDF 한 개로 다섯 탭이 함께 채워집니다 — 새 탭 둘도 같은 학생부 PDF를 씁니다. 어느 탭에 올리든 세특·행특·창체·출결·봉사 다섯 탭이 한꺼번에 찹니다. 다만 이 두 점검은 PDF 에만 있는 표를 읽는 것이라 엑셀로는 할 수 없습니다.
- 구분🕓 진행 중인 학년은 ‘확인 필요’로 따로 둡니다 — 올해는 아직 학년이 끝나지 않아 개근을 적지 않았을 수 있습니다. 그래서 지난 학년의 누락은 ‘지적’, 올해의 누락은 ‘확인 필요’로 나눕니다. 결석이 있는데 개근이 적힌 경우는 학년과 상관없이 지적입니다.
- 확인✅ 일부러 어긋난 값 22가지로 확인했습니다 — 봉사 13가지((학교)·(개인)·띄어쓴 ( 학교 )는 통과, (교내)·(학생)·괄호 없음·빈칸·‘봉사(학교)활동’은 지적)와 출결 9가지(개근이 다른 말과 함께 적힌 경우는 통과, 띄어쓴 ‘개 근’도 검출)가 모두 뜻대로 나왔습니다. 기존 세 탭도 회귀 확인을 마쳤습니다.
v5.12026-09-09🍫 초콜릿 원료 ‘카카오’를 회사 이름으로 잡지 않습니다
- 오탐🍫 홑으로 쓰인 한글 ‘카카오’를 상호명 규칙에서 제외 — “초콜릿의 원료인 카카오 생산지 서아프리카의 아동 노동 착취…” 처럼 세계지리·경제·환경 탐구에 나오는 카카오나무·카카오 열매가 회사 이름으로 잡히고 있었습니다. 실제 파일 653건(85만 자)을 훑어 보니 ‘카카오’ 3건이 전부 식물이었고 회사 용법은 0건이었습니다. 회사를 가리킬 때는 거의 언제나 카카오톡·카카오맵·카카오페이처럼 제품명을 붙여 쓰기 때문입니다. 그래서 홑으로 쓰인 한글 ‘카카오’는 빼고, 제품명이 붙은 경우와 영문 Kakao 만 잡습니다 — 카카오톡·카톡(메신저)과 카카오맵(지도)은 예전처럼 각자의 규칙에서 그대로 걸립니다. 한글 ‘다음’을 뺐던 것(v2.3)과 ‘줌’을 뺐던 것(v3.1)과 같은 이유입니다.
- 확인✅ 14가지 문장으로 앞뒤를 맞춰 확인했습니다 — 식물 카카오 4문장은 모두 통과, 회사 카카오톡·카톡·카카오맵·카카오페이·카카오뱅크·카카오T·Kakao 7문장은 모두 검출, 네이버·구글은 그대로 검출, 한글 ‘다음’은 그대로 통과. 실제 파일에서도 확정 위반이 886건 → 883건으로 딱 3건만 줄었고 다른 항목 수치는 하나도 바뀌지 않았습니다.
v5.02026-09-09📄 학생부 PDF 한 개로 세 항목을 한 번에
- 입력📄 나이스 학생부 PDF 를 그대로 올릴 수 있습니다 — 지금까지는 세특·행특·창체 엑셀 세 개를 탭마다 따로 올려야 했습니다. 이제 학교생활세부사항기록부 PDF 한 개를 올리면 세 탭이 한꺼번에 채워집니다. 한 파일에 세 항목이 모두 들어 있기 때문입니다. 엑셀도 예전 그대로 쓸 수 있고, 둘을 섞어 올려도 됩니다.
- 검증🎯 엑셀 원본과 글자 단위로 대조해 100% 일치를 확인했습니다 — 같은 학급의 PDF와 엑셀 3종을 전수 비교했습니다. 세특 184건 · 창체 52건 · 행특 2건 — 238건 전부 일치합니다. 프로그램 안에서 엑셀로 넣은 결과와 PDF로 넣은 결과도 지적된 본문 26건이 완전히 같습니다. 중복 판정도 규정 검사도 어느 쪽으로 넣든 결과가 같습니다.
- 범위🕓 지난 학년 기록까지 함께 봅니다 — 엑셀은 현재학년만 나오지만 PDF 는 누가기록이라 1·2학년 것이 함께 들어 있습니다. 그만큼 점검 범위가 넓어집니다 — 실제 파일에서 세특이 368건 → 1,100건으로 늘었습니다. 지난 학년 기록은 이미 마감된 것이라, 글자 수 표에 「지난 학년」 표시를 달아 올해 제출할 것과 구별해 두었습니다.
- 글자수📏 상한에 걸치는 기록은 「엑셀로 확인 필요」로 알려 드립니다 — PDF 는 줄이 바뀌는 자리의 띄어쓰기를 지워 버립니다. 모든 줄이 같은 위치에서 끝나는 양쪽 정렬이라 좌표로도 되살릴 수 없고, PDF 안에도 그 공백이 남아 있지 않습니다. 다만 몇 개가 사라졌는지는 정확히 셀 수 있어(=이어 붙인 자리 수) 글자 수를 하한~상한으로 냅니다. 하한이 상한선을 넘으면 초과 확정, 상한도 못 넘으면 정상 확정이라 대부분은 그대로 판정되고, 그 사이에 걸치는 소수만 「엑셀로 확인 필요」로 따로 모아 나이스에서 엑셀을 내려받아 다시 올려 보시라고 안내합니다. 추측하지 않고 수학적으로 확정되는 것만 확정합니다. 중복 검사와 규정 검사는 영향을 받지 않습니다.
- 개인정보🔒 주민등록번호·주소·성적·출결은 읽는 즉시 버립니다 — 학생부 PDF 에는 엑셀에 없던 주민등록번호와 주소가 들어 있습니다(9개 구역 전체). 이 프로그램은 세특·행특·창체 본문만 꺼내고 나머지는 표를 만드는 단계에서 버리므로, 화면·CSV·PDF 어디에도 실리지 않습니다. 파일 자체는 여전히 민감하니 주고받으실 때 조심해 주세요.
- 판독⚙ PDF 판독기를 직접 만들었습니다 — 외부 라이브러리 0개 그대로 — 압축 해제는 엑셀용으로 이미 갖고 있어 그대로 썼고, 여기에 객체 표 · 내용 스트림 해석 · 글꼴 변환표(ToUnicode)를 더했습니다. 글자마다 위치가 찍혀 있어 좌표로 칸을 다시 조립합니다 — 읽는 순서대로 읽으면 8반 1번이 8반 8번으로 잘못 읽힙니다. 표의 가로줄을 함께 읽어 창체·행특의 기록 경계를 정확히 가르고, 쪽마다 되풀이되는 표 머리와 쪽 넘김으로 잘린 문장을 이어 붙입니다. 174쪽 3.4초 · 455쪽 9.3초이며 파일은 여전히 어디로도 전송되지 않습니다.
v4.02026-09-07🪟 좌우 분할 화면 — 왼쪽에서 고르고 오른쪽에서 봅니다
- 화면🪟 결과를 좌우 두 칸으로 나눴습니다 — 지금까지는 실행 결과가 한 줄로 아래로 계속 이어져, 세특을 통합으로 돌리면 패널 일곱 개와 상세 마흔 개가 한 화면에 쏟아졌습니다. 찾던 과목 하나를 보려면 한참 굴려 내려가야 했고, 다른 과목으로 옮기려면 다시 위로 올라가야 했습니다. 이제 왼쪽은 고르는 곳, 오른쪽은 고른 것 하나만 크게 보는 곳입니다. 두 칸이 각각 따로 스크롤되므로 왼쪽 목록은 늘 제자리에 있습니다.
- 왼쪽📑 규정 위반 · 중복 · 걸린 말이 한 목록에 — 왼쪽에는 위에서부터 점검 결과 요약(건수·인원·위반·겹침), 규정 위반 묶음(과목·반별, 위반 건수와 미입력 인원을 옆에 표시), 중복 묶음(가장 긴 겹침 글자 수와 쌍 수), 걸린 말(실제로 검출된 표현을 유형별 칩으로), 그리고 특기사항 미입력 · 글자 수 초과 · 육안 점검 목록이 놓입니다. 아무거나 누르면 오른쪽이 바로 바뀝니다.
- 오른쪽⬇ 내려받기 버튼이 보고 있는 화면 바로 위에 — 오른쪽 머리에 지금 보고 있는 것의 제목·요약과 함께 인쇄 · CSV · PDF 다운로드 버튼이 붙습니다. 어느 묶음의 버튼인지 헷갈릴 일이 없고, 스크롤해도 머리는 맨 위에 붙어 있습니다. 전체 개요 화면에서는 규정 전체 N개 저장 · 중복 전체 N개 저장으로 묶음마다 따로따로 내려받습니다.
- 개요📊 처음 화면은 전체 개요 — 실행 직후에는 오른쪽에 위반 유형별 집계와 과목별 중복 실태, 반별 요약이 나옵니다. 표에서 걸린 말 칩이나 판정이 있는 줄을 누르면 그대로 그 상세로 넘어갑니다 — 예전처럼 해당 위치까지 스크롤해 찾아갈 필요가 없습니다.
- 인쇄🖨 인쇄하면 왼쪽 목록은 빠지고 오른쪽만 종이에 담깁니다 — 지금 보고 있는 묶음 하나가 그대로 인쇄물이 됩니다.
- 그대로🔒 검사 방식은 하나도 바뀌지 않았습니다 — 중복 판정(통째로 50자 이상)·규칙 101개·근거 인용·바이트 계산·PDF 화질 모두 v3.2와 동일합니다. 보이는 방식만 바뀌었습니다 — 올리는 파일도, 나오는 PDF·CSV도 예전 그대로입니다.
v3.22026-09-07🏫 학년·과목 전체에서 중복을 봅니다 (반을 넘어서)
- 비교범위🏫 중복 비교의 기본을 '반 안에서'에서 '학년·과목 전체'로 — 지금까지는 같은 반 학생끼리만 비교했습니다. 그런데 복붙은 반 경계를 넘어 일어납니다. 실제 파일(570건)의 학생을 두 반으로 나눠 재보니 — 반 안에서만 보면 108쌍이 잡히고 반을 넘는 쌍은 0개였지만, 학년·과목 전체로 보면 142쌍이 잡히고 그중 85쌍(60%)이 반을 넘는 복붙이었습니다. 반별로만 보면 절반 넘게 놓치는 셈입니다. 이제 1학년 문학, 2학년 진로활동처럼 학년 × 과목(영역) 단위로 묶어 전 반을 함께 봅니다.
- 표시🏷 여러 반이 섞인 묶음은 '3개 반'으로 표시 — 묶음 배지에 몇 개 반이 들어 있는지 보여주고, 학생 이름 앞에는 각자의 반이 붙습니다(v3.1). PDF 제목에도 '(3개 반)'이 들어갑니다. 「반 안에서만 비교」가 필요하면 실행 옵션에서 고를 수 있습니다 — 담임이 자기 반만 훑을 때 씁니다.
v3.12026-09-07🏫 반 표시 · 🔍 '줌' 오탐 제거 · 📏 중복 기준 50자
- 반표시🏫 학생이 나오는 모든 자리에 반을 함께 표시 — 세특 과목·창체 동아리는 반을 가로지르는 묶음이라, 번호와 이름만 나오면 몇 반 학생인지 알 수 없어 반을 하나씩 찾아봐야 했습니다. 위반 유형별 집계에 「반」 열을 넣고(4개 초과 시 '외 N개 반'), 규정 위반 대조표의 학생 줄 · 특기사항 미입력 명단 · 중복 대조표의 쌍 요약과 본문에 반 배지를 달았습니다. PDF에도 같이 들어갑니다. 한 반만 올렸을 때는 예전처럼 붙이지 않습니다.
- 오탐🔍 한글 '줌'을 화상회의 Zoom 규칙에서 제외 — "도움을 줌.", "보여 줌.", "나누어 줌." 처럼 명사형 종결어미로 쓰인 '줌'이 브랜드로 잡히고 있었습니다. 앞뒤 한글을 막는 가드가 있었지만 띄어쓰기가 들어가면 뚫립니다. 실제 파일 6개를 훑은 결과 13건 전부 종결어미였고 브랜드 사용은 0건이라, 한글 '줌'으로는 둘을 구별할 수 없다고 보고 뺐습니다. 영문 Zoom · 별칭 '줌미팅' · 웨일온/Whale ON은 그대로 잡습니다. 같은 구조의 다른 짧은 한글 브랜드(라인·메타·블로·알로·테드·플로·리디·벅스)도 함께 훑었으나 오탐이 없어 그대로 두었습니다.
- 기준📏 중복 판정 기본 기준을 50자로 — 40자에서는 과목 특성상 비슷할 수밖에 없는 서술까지 들어왔습니다. 단계도 함께 넓혔습니다 — 확인 필요 50자 · 문장째 복사 100자 · 문단째 복사 200자. 60자였던 문장째 복사는 50자 기준과 붙어 '확인 필요' 구간이 10자밖에 안 되어 사실상 비어 있었습니다. 세특 570건 기준 겹친 쌍 191 → 142쌍, 단위 판정이 고르게 퍼집니다(확인 필요 5 → 11개, 문단째 10 → 5개). 세 값 모두 화면에서 조절할 수 있습니다.
v3.02026-09-04📐 중복 판정 전면 재설계 — 퍼센트에서 '통째로 겹친 글자 수'로
- 판정📐 퍼센트 유사도를 버리고 통째로 겹치는 글자 수로 — 유사도 70% 기준은 창체·행특에서 한 쌍도 잡지 못했습니다. 그런데 실제로는 251자·115자가 한 글자도 다르지 않게 복사돼 있었습니다. 본문이 600~800자면 200자가 통째로 겹쳐도 유사도는 30~46%밖에 안 나오기 때문입니다. 반대로 유사도 50%대인 쌍들은 가장 긴 겹침이 14~19자뿐이었습니다 — "돋보임", "역량이 뛰어남" 같은 상투어가 점수를 부풀린 것입니다. 이제 한 글자도 다르지 않게 이어지는 가장 긴 대목이 몇 자인지로 판정합니다.
- 공통문구👥 3명 이상이 함께 쓰는 문구는 중복에서 빼고 따로 보여줍니다 — 길이만으로는 부족했습니다. "특정 소설을 학습한 후…"(50자)를 10명이, "경기도교육청 주최 창의융합체험에 참여함"(55자)을 14명이 공유합니다. 같은 수업·행사를 서술한 것이라 복붙이 아닙니다. 반면 2명만 공유하는 107자는 진짜 복붙입니다. 3명 이상이 쓰는 문구는 「공통 문구」로 분리해 개별화 점검용으로만 보여줍니다.
- 기준기록✂ '기준 기록' 개념을 없앴습니다 — 대수에서 실제 문제는 같은 과목 두 학생의 94자 복사인데, 화면에는 엉뚱한 제3의 학생이 기준 기록으로 떠 있었습니다. "남들과 가장 많이 겹치는 기록"을 대표로 뽑다 보니 정작 베낀 두 학생과 상관없는 학생이 기준이 된 것입니다. 그 상태로 전원을 기준과 비교하니 상투어만 칠해지고 진짜 94자는 묻혔습니다. 이제 누가 누구와 몇 자를 베꼈는지 쌍 단위로만 보여줍니다.
- 노란표시🟡 겹친 대목을 노란색으로 · 누르면 짝이 함께 진해집니다 — 두 학생 글을 나란히 놓고 똑같은 대목을 노란색으로 칠했습니다. 노란 부분을 누르면 반대쪽의 짝이 진한 주황으로 함께 표시됩니다(다시 누르면 해제).
- 속도⚡ 570건 17.4초 → 2.5초 — 길이 min자짜리 조각을 하나도 공유하지 않으면 min자 이상 겹칠 수 없다는 성질을 이용해 사전 걸러내기를 넣었습니다. 정확한 필터라 결과는 완전히 동일합니다.
v2.62026-09-04🧹 화면 정리 — 설정 접힘 · 이상 없는 묶음 제외 · 걸린 말 눌러 찾아가기
- 접힘📕 실행하면 위쪽 설정이 접힙니다 — 파일 올리기·열 확인·인식 결과·기준 설정 네 칸이 통째로 접히고, 그 자리에 파일명 · 읽어들인 건수 · 설정값 한 줄만 남습니다. 결과가 화면 위로 올라옵니다. 「설정 다시 열기」로 언제든 펼칩니다. 진행 표시(PDF 만드는 중 7 / 10 등)는 접힌 상태에서도 보이도록 설정 바깥으로 옮겼습니다.
- 제외🚫 이상 없는 묶음은 대조표에 싣지 않습니다 — 내려받을 이유가 없는데도 「이상 없음」 묶음 12개가 PDF 버튼을 달고 나열되고 있었습니다. 대조표에서는 빼고, 전체 현황은 바로 위 「중복 실태」 표에서 보시면 됩니다(이상 없음 표시는 그대로). 일괄 저장에서도 빈 PDF를 만들지 않습니다.
- 찾아가기👆 「실제로 걸린 말」을 누르면 그 과목으로 내려갑니다 — 위반 유형별 집계에서 WHO를 누르면 그 말이 든 묶음만 펼쳐지고 본문의 해당 대목으로 스르륵 내려갑니다. 찾아간 자리는 주황 테두리로 표시됩니다. 다른 말을 누르면 앞서 펼친 것은 모두 접히고, 같은 말을 다시 누르면 해제됩니다. 걸러 보기에 가려 하나도 안 보이면 걸러 보기를 자동으로 풀어 줍니다.
v2.52026-09-04🖨 PDF 화질 — 240DPI 무손실
- 화질🖨 해상도 150 → 240DPI, JPEG → 무손실 — PDF가 보통 선명한 것은 글자가 도형(벡터)이기 때문인데, 이 프로그램은 한글 글꼴을 PDF에 심을 수 없어(단일 파일·오프라인이라 글꼴 파일이 없습니다) 캔버스에 그린 그림으로 담습니다. 그래서 해상도와 압축 방식이 곧 화질입니다. 실제 리포트 한 쪽으로 재보니 무손실이 JPEG보다 오히려 작았습니다(240DPI에서 226KB 대 263KB) — 글자와 흰 배경은 압축이 잘 듣기 때문입니다. 픽셀 2.56배 · 압축 손실 0 · 파일은 더 작게 바꿨습니다. 예측기(Predictor)는 글자 그림에서 되레 커져 쓰지 않습니다. 옛 브라우저에서는 JPEG 품질 0.92로 물러납니다.
v2.42026-09-04📦 묶음별 · 일괄 내려받기 — 과목 · 반 · 동아리
- 배포단위📦 '누구에게 넘길지'로 묶습니다 — 세특은 과목(과목 담당 선생님), 창체 동아리활동은 동아리명(동아리 담당 선생님), 그 밖(자율·진로·행특)은 반(담임 선생님). 과목과 동아리는 여러 반에 걸치므로 반으로 가르지 않습니다 — 전 반을 올리면 같은 동아리 학생이 한 파일로 모입니다. 동아리명은 특기사항이 (동아리명)(N시간)으로 시작하는 규칙에서 뽑습니다(실측: 동아리활동에만 2/2, 자율·진로엔 0/18).
- 일괄💾 「전체 N개 PDF 따로 저장」 — 과목이 30개면 30번 누를 수 없으니, 한 번 누르면 묶음마다 별도 파일로 내려받습니다(하나로 합치지 않습니다). 파일 사이에 0.45초를 두어 브라우저가 연속 내려받기를 막지 않게 했고, 진행 상황을 함께 보여줍니다. 묶음마다 있는 개별 「PDF 다운로드」도 그대로입니다.
- 묶음화📑 규정 위반 대조표도 중복 대조표와 같은 형태로 — 학생 한 명당 하나씩 펼쳐진 채로 나열되던 것을 과목·영역별로 묶고 접힌 상태를 기본으로 바꿨습니다. 묶음마다 이것만 인쇄 · CSV · PDF 다운로드가 붙습니다.
v2.32026-09-04📖 기재요령 근거 대폭 보강 — 인용 7건 → 54건
- 근거📖 기재요령 p.18~19 「작성 시 유의사항」을 통째로 반영 — 223쪽 문서에서 규칙 7개만 뽑아 쓰고 있었습니다. 기재불가 항목 종합 목록을 다시 훑어 교외상 · 표창장 · 감사장 · 공로상 · 인증시험 · 도서출간 · 특허 출원 · 어학연수 · 부모 직업 · 장학금 · 특정 대학명 · 학교명 · K-MOOC/MOOC/KOCW · 방과후학교 · 소년원 관련 용어 등 16개 규칙을 새로 넣었습니다. 근거 인용이 7건에서 54건으로 늘고 인용 쪽수도 p.18·19·28·30·61·64·119·149·202·209로 넓어졌습니다.
- 재인용🔗 근거가 틀려 있던 규칙을 바로잡았습니다 — '대회'의 진짜 근거는 체크리스트가 아니라 기재요령 p.61("'대회'라는 용어는 수상경력을 제외한 다른 항목에 입력할 수 없으며…")입니다. 브랜드명도 마찬가지로, 주의사항은 대체표현의 출처일 뿐이고 금지 근거는 p.19 타항입니다. 이제 둘 다 인용합니다.
- 오탐🔍 실제 파일로 오탐 3건을 걸러냈습니다 — '유학'은 윤동주 시인의 일본 유학 이야기였고(학생 활동 아님), '출간'은 남이 쓴 책, '장학금'은 제도를 탐구한 것이었습니다. 셋 다 학생 본인의 실적을 가리킬 때만 잡도록 좁혔습니다.
v2.22026-09-04🔀 점검 종류 전환 — 중복 · 규정 · 통합
- 전환🔀 결과 위에서 「중복 / 규정 / 통합」을 바로 바꿉니다 — 실행 옵션 안에 묻혀 있던 드롭다운을 없애고 결과 바로 위로 올렸습니다. 두 결과는 서로 독립으로 보관하므로 전환할 때 다시 계산하지 않습니다. 중복만 돌려 둔 상태에서 통합으로 바꾸면 규정만 이어서 계산합니다. 유사도·글자 수 상한 같은 기준을 고치면 그 분석만 다시 돌립니다.
- 옵션⚙ 보기에 맞는 것만 보여줍니다 — 규정 보기에서는 유사도 옵션 4개가 숨고 글자 수 상한만 남습니다. 내보내기 버튼도 보기에 맞는 것만 나옵니다. 보기 선택은 전역이라 세특에서 고르고 창체 탭으로 넘어가도 유지됩니다.
- 정리🗑 「직접 입력 점검」 탭 제거 — 원본 금칙어 검사기의 '텍스트 한 건 붙여넣기' 화면을 살려 뒀는데, 엑셀 올리면 전부 자동으로가 목표인 도구에 수동 입력 창이 따로 있으면 혼란만 줍니다. 탭과 그 탭에서만 쓰던 자동 치환 함수까지 260줄을 들어냈습니다. 이제 이 도구는 진단만 하고 본문을 고치지 않습니다 — 권장 표현은 안내만 하고 실제 수정은 나이스에서 하십니다.
v2.12026-09-04📄 나이스 [학생부 항목별 조회] 양식 대응
- 미입력🔎 미입력 검출을 '학생 × 과목(영역)' 단위로 — 학생 단위로 세다 보니 창체 동아리활동 16명이 통째로 비어 있는데 「미입력 0명」으로 나왔습니다. 그 학생들이 자율·진로에는 내용이 있었기 때문입니다. 단위를 바꿔 정확히 잡습니다. 진로활동은 첫 줄이 '희망분야'이고 실제 특기사항은 다음 줄에 있어, 이어지는 줄까지 추적하도록 해 오탐 18건도 없앴습니다.
- 이수시간⏱ 이수시간 0인 학생 표시 — 기재요령 p.82에 따라 이수시간이 0인 학생에게도 사유를 입력해야 합니다. 미입력 명단에 '이수시간 0'으로 함께 표시합니다.
- 쪽넘김📑 쪽 넘김으로 잘린 내용 처리 — 이 양식은 쪽이 넘어갈 때 과목·학년·학기 칸을 그대로 다시 찍습니다. 이를 '새 덩어리'로 오인해 문장 중간에 공백을 끼워 넣던 것을 고쳤습니다. 레코드 키에 학기를 넣어 1학기 국어와 2학기 국어가 한 건으로 뭉치지 않게 했습니다.
- 안내🧭 안내 문구를 실제 경로로 — '학생부 조회 및 출력'으로 안내하던 것을 실제 산출 경로인 [학생부 항목별 조회]와 실제 파일명 예시로 바꿨습니다.
v2.02026-09-04📚 규정 점검 통합 · 인공지능 제거
- 통합📚 엑셀 한 번으로 중복 + 규정 + 글자 수를 전수 점검 — 텍스트 한 건을 붙여넣던 금칙어 검사기를, 엑셀을 올려 전교생을 한 번에 보는 도구로 승격시켰습니다. 규칙 101개·별칭 132개.
- 인공지능🚫 인공지능을 쓰지 않습니다 — 원본은 임베딩 모델(470MB)로 별칭과의 유사도를 추측했습니다. 근거 없는 오탐의 원천이라 전량 폐기하고 대체물도 만들지 않았습니다. 규칙만 남기니 모든 검출에 "기재요령 p.28" 같은 인용 가능한 출처가 붙습니다. 서버도 필요 없어져 단일 파일·오프라인 구조를 그대로 지켰습니다.
- 3등급🏷 근거의 확실성을 3등급으로 — 규정 문구에 직접 명시된 것은 「위반」, 상위 원칙에서 파생된 것은 「검토 필요」로 나눕니다. 그리고 기재요령 p.28이 영문 입력을 허용한 일반화 명사(AI · PPT · SNS · TV · IT 등)는 아예 규칙에서 뺐습니다 — 원본 규칙은 이들을 금칙어로 잡고 있었는데, 규정과 정면으로 어긋납니다.
- 글자수📏 항목별 글자 수 상한 — 기재요령 p.208 기준으로 세특 1,500B · 행특 900B(300자, 500자로 흔히 오해하는 항목) · 창체 영역별(봉사 150B)을 적용하고, 공통과목 1·2 합산 500자까지 봅니다. 한글 3Byte·영문 1Byte·엔터 1Byte 규칙이 UTF-8과 일치해 그대로 셉니다.
- 육안👁 기계가 판단할 수 없는 것은 넘기지 않고 따로 적었습니다 — "이 문장만 보고 어떤 교과목의 역량이 드러나는지 알 수 있는가" 같은 항목은 의미 이해가 필요해 규칙으로 잡을 수 없습니다. 「사람이 확인해야 할 항목」으로 분리해 안내합니다.
- 오탐🔍 일반 어휘와 겹치는 브랜드 정리 — '다음'(Daum)이 "다음과 같이", "다음 목표" 같은 일반 용법에서 계속 걸렸습니다. 전교생 수천 건이면 오탐이 결과를 덮으므로 한글 '다음'은 빼고 영문 Daum만 잡습니다.
─── 여기부터는 규정 점검이 들어오기 전, 중복 점검기 시절입니다 ───
v1.12026-08-25🗂 3탭 확장 — 세특 · 행특 · 창체
- 세부능력 및 특기사항만 보던 것을 행동특성 및 종합의견 · 창의적 체험활동까지 넓혔습니다. 세 탭이 같은 중복 검사 로직을 쓰고 엑셀에서 무엇을 읽어오느냐만 다릅니다.
v1.02026-08-22🕵️ 세부능력 특기사항 중복 점검기처음
- 나이스 엑셀을 올려 학생 간 세특 문장 중복을 검출하는 도구로 시작했습니다. 외부 라이브러리 없이 압축 해제 · 엑셀 파서 · CSV 파서 · PDF 생성기를 모두 자체 구현해, 브라우저 안에서만 처리하고 파일은 어디로도 전송하지 않습니다.
이 도구가 지키는 원칙
- 파일은 어디로도 전송되지 않습니다 — 모든 처리가 브라우저 안에서 끝납니다. 외부 통신 0건, 인터넷이 끊긴 상태에서도 동작합니다.
- 인공지능을 쓰지 않습니다 — 모든 검출은 규정 문구에 근거하고 그 출처를 화면과 리포트에 그대로 인용합니다.
- 진단만 하고 본문을 고치지 않습니다 — 권장 표현은 안내하되, 실제 수정은 선생님이 나이스에서 하십니다.
- 판단할 수 없는 것은 판단하지 않습니다 — 기계가 못 하는 일은 「사람이 확인해야 할 항목」으로 넘깁니다.