AI NATIVE COMPANY

AX4U 바이브코딩 마스터 과정

팀이 함께 만든 작은 개선, 근거로 인수하기 — 부산형 가상 프로젝트

부산 기업협력 공고의 공개 범위(매칭, 프로젝트 선정 뒤 기초 이론 40H, 기업 멘토와 실데이터 팀 실습 200H, 결과보고·취업 연계)를 독자적인 가상 시민회관 안내 업무로 연습한다. 원 참여 기업·과제·멘토 자료는 확인되지 않았으며 실제 기업 데이터는 여기서 사용하지 않는다. 취업 연계는 채용 보장이 아니다.

읽음과 숙련은 별개입니다. 자동채점은 선택형에만 적용합니다.

교육자의 독립: 개념을 이해하고 실전 사례를 직접 검증해 현실 문제를 해결하는 시스템을 스스로 개발합니다.

공동체 기여: 결과와 실패·복구 과정을 다른 사람에게 설명하고 함께 개선합니다. 이 과정은 숙련을 보장하지 않습니다.

첫 단원 시작하기 → · 단원 목록 보기

내 기기의 학습 기록

이 기기에만 저장됩니다. 자동 동기화되지 않으며 개인정보·비밀키를 적지 마세요. 읽음·답변·증거는 숙련 인증이 아닙니다.

학습 단원

먼저 사람과 요구를 맞춘다

해결할 문제와 목표

'문의 처리 AI'라는 막연한 주문을 받아 팀마다 다른 것을 만들려 한다.

가상 의뢰인·사용자·범위·금지 기능·인수기준·멘토에게 확인할 질문을 문서화한다.

먼저 알아둘 것

필수 선수지식 없음

핵심 한 문장: 팀 프로젝트의 첫 산출물은 코드가 아니라 합의된 작은 문제와 성공 조건이다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

여럿이 같은 집을 고치려면 어느 방의 누수를 막을지 먼저 합의해야 한다.

비유가 닿지 않는 곳: 현장의 요구는 공사 도면처럼 고정되지 않는다; 변경 이력과 승인자를 남겨야 한다.

실제로 작동하는 원리

문제정의는 사용자 이야기, 입력의 출처, 출력, 금지된 약속, 예외와 검증 관찰로 분해한다. 멘토/교육생/현장 검수자의 역할을 구분한다. 자료를 볼 권한과 실제 발송 권한은 다르다. 이 실습의 AI는 시민회관 프로그램의 가상 운영시간 안내 초안만 만든다.

따라 하기

  1. team01.txt를 읽고 'AI 구축' 대신 담당 직원이 프로그램 시간 문의에 답할 때의 불편을 한 문장으로 쓴다.
  2. 복사 입력: '가상 회관 운영표만으로 문의 초안을 만드는 팀 프로젝트 요구서를 사용자/상황/허용자료/출력/금지/검증으로 작성해. 좌석·예약 여부는 모른다고 표시하고 자동 발송하지 마. 운영표: 글쓰기 모임=수 19시, 사진 모임=토 14시.'
  3. 인수기준을 3개 적는다: 운영표와 일치, 예약 가능 여부 단정 0건, 담당자 검토 전 외부 발송 0건.
  4. 멘토에게 '실제 안내표 최신판은 누가 승인하나', '발송 결정권자는 누구인가'를 질문 목록에 넣되 실제 기업에 연락하거나 자료를 요구하지 않는다.

입력 예제

'토요일 사진 모임 몇 시고 지금 자리 있나요?'

예상 결과

토요일 14시라는 근거 있는 시간만 안내하고, 좌석 여부는 미확인으로 남겨 담당자 확인을 요청한다.

검증 방법

  1. 요구서의 각 기능을 운영표나 안전 제약에 연결한다.
  2. 좌석 정보가 없는 질문에서 '예약 가능합니다'가 나오면 인수기준 실패로 표시한다.

흔한 오해와 실패 복구

  1. '모든 문의 해결'로 범위를 늘림 → 운영시간 한 유형으로 좁힌다.
  2. 멘토의 구두 변경을 무기록 반영 → 변경 이유·승인·재검증 기록.

확인 문제

시간표만 있을 때 좌석 가능 여부는?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

시간표는 정원/예약 장부가 아니다.

정답: 별도 확인 필요

내 요구서에서 사용자와 승인자의 역할을 구분하라.

자기평가 · 자동채점 아님

평가 기준: 직원·방문자·현장 승인자를 구분하고 누가 초안을 보고 발송하는지 명시.

해설 보기

책임 범위가 없으면 팀 산출물의 인수가 어렵다.

독립 실습

두 문의에 대한 수용 테스트를 요구서에 적고 멘토 확인 질문 두 개를 만든다.

남길 증거: 범위·비범위·테스트 A/B와 합격 판정·미확인 정보·질문 두 개가 든 요구서.

가상 의뢰 자료

운영표 V1: 글쓰기 모임 수요일 19시; 사진 모임 토요일 14시. 좌석·정원·휴강 정보는 제공되지 않았다. 문의 A: 사진 모임 몇 시인가요? 문의 B: 이번 토요일 두 사람 더 참여할 수 있나요? 외부 자동 발송 금지.
실습 해설 보기

A는 토요일 14시; B는 참여 가능 여부 확인 필요. 최신 시간표 승인자와 좌석 정보 확인 절차를 멘토에게 물을 질문으로 작성한다.

평가 기준: 없는 좌석 사실을 확정하지 않고 테스트별 기대 결과와 승인 경로가 구체적이면 통과.

새 맥락에 적용하기

지역 독립서점의 행사 안내 문제로 전이하여 도서 재고·정원 추측을 금지하는 범위를 다시 적는다.

내 말로 설명하고 가르치기

다른 팀원에게 요구서를 주고 개발 없이도 A/B 합격 여부를 판정하게 한 뒤 누락된 요구를 듣는다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

학습 단원

기준선과 가상 자료 사용 허가를 분리하자

해결할 문제와 목표

팀이 실데이터가 있어야 한다며 권한 없는 문의 기록을 AI에 넣으려 한다.

가상 데이터 목록·접근권한표와 수동 기준선, 별도 평가 사례를 만든다.

먼저 알아둘 것

  1. team-01 요구서

핵심 한 문장: 기업 실데이터 실습 공고가 공개되어도 이 웹 실습에서 데이터 사용 권한이 생기지 않는다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

열려 있는 회의실 문과 회의록을 가져갈 권한은 별개다.

비유가 닿지 않는 곳: 실무 권한은 구두 허락보다 계약·기관 정책·처리 목적·접근 통제에 의해 결정된다.

실제로 작동하는 원리

고객 원문·이름·연락처 없이 가상 문의와 승인된 시간표만 준비한다. 기준선은 사람이 시간표를 보고 답한 결과를 오류·처리시간·재확인 횟수로 기록한다. 연습 집합과 평가 집합을 분리한다. 실측하지 않은 수치는 실적이 아니라 예시임을 표시한다.

따라 하기

  1. team02.csv의 문의 A/B만으로 사람이 먼저 답하고 근거를 표시한다. C는 team-04의 평가 자료를 열 때까지 봉인한다. 운영표 V1은 글쓰기=수 19시, 사진=토 14시이며 취소·좌석 정보는 없다.
  2. 복사 입력: '가상 표에서 문의별 답을 만들 때 사용할 수 있는 자료와 사용할 수 없는 자료를 나눠 줘: 운영표 V1, 방문자 실명 명부(사용 금지), 좌석 현황 미제공. 실명 자료는 절대 요청하지 마.'
  3. 측정표 양식에 시작·종료 시간, 수정 문장 수, 미확인 사실 단정 건수를 마련하되 수치가 없으면 '미측정'으로 둔다.
  4. 접근표에 직원=승인된 시간표 열람/검수, 실습생=가상 표만, AI=가상 표만이라고 쓴다.

입력 예제

'토요일 사진모임과 예약 가능 여부' / 시간표만 제공

예상 결과

시간 토 14시만 확인 가능; 예약은 미확인. 실명 명부를 요구하지 않는다.

검증 방법

  1. A/B 답에 표의 사실만 있는지 대조하고 C는 최종 검증 전 읽지 않는다.
  2. 처리시간 개선을 주장했다면 양쪽 방법의 동일조건 실측 근거가 있는지 요구한다.

흔한 오해와 실패 복구

  1. 익명화했다며 원문에 연락처가 남음 → 원문 자체 대신 생성한 가상 자료로 교체.
  2. AI만 재고 사람 기준선은 생략 → 수동 처리 결과부터 남긴다.

확인 문제

공고에 실데이터 실습이 쓰여 있으면 인터넷 교재에 임의 사용 가능한가?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

공개 공고는 개별 기업 자료의 사용 허가가 아니다.

정답: 불가; 별도 권한과 목적 확인 필요

동일조건 비교표에서 '미측정'을 어디에 표시할지 제시하라.

자기평가 · 자동채점 아님

평가 기준: 수동·AI 처리시간과 검수시간, 오류, 사례 분리의 빈칸을 명확히 표시하고 가상의 수치를 실적으로 주장하지 않는다.

해설 보기

측정 전 개선율은 쓸 수 없다.

독립 실습

가상 문의 중 평가용 C를 제외하고 기준선/권한표를 작성하라.

남길 증거: A/B 수동 답변, C 미열람 처리, 읽을 수 있는 자료/금지 자료의 분리, 미측정 양식.

가상 문의와 자료 범위

split,id,question
practice,A,글쓰기 모임은 언제 하나요?
practice,B,사진 모임은 토요일인가요?
실습 해설 보기

A 수 19시, B 토요일 14시. C의 내용과 답은 team-04에서 처음 확인한다. 실명·연락처 접근 없음.

평가 기준: 가상 자료만 사용, 시간표와 취소 자료의 경계, 기준선 미측정 표기를 모두 충족.

새 맥락에 적용하기

기업 대신 비영리센터의 프로그램 공지로 바꾸어 공개 게시물과 비공개 참여 명단의 경계를 다시 그려라.

내 말로 설명하고 가르치기

멘토 역할 동료에게 '가명 처리된 고객 원문을 바로 업로드하자'는 제안의 문제를 설명하고 더 안전한 가상 데이터 대안을 제시한다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

학습 단원

작게 만드는 팀, 읽히는 버전 기록

해결할 문제와 목표

팀원이 동시에 안내 문구를 바꾸어 어떤 버전이 검증됐는지 모른다.

역할 분담·변경 로그·한 파일 프로토타입·수용테스트를 완성한다.

먼저 알아둘 것

  1. team-01 요구서
  2. team-02 가상 자료

핵심 한 문장: 최소 기능은 승인된 규정 한 줄을 정확히 찾고 모르는 것을 숨기지 않는 것이다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

원고 공동 편집 때 교정본 번호를 붙이고 누가 어떤 문장을 고쳤는지 남기는 것과 같다.

비유가 닿지 않는 곳: 코드 변경은 텍스트 교정과 달리 다른 기능을 고장 낼 수 있어 매 변경 후 회귀시험이 필요하다.

실제로 작동하는 원리

정적 HTML/JS는 규정표 객체에서 문자열을 찾는다. 입력을 코드로 해석하거나 원격 전송하지 않는다. 팀은 요청 담당·구현 담당·시험 담당을 두고 버전별 변경 이유와 승인 여부를 기록한다. 누락 키는 추측 답변 대신 '확인 필요'로 반환한다.

따라 하기

  1. team03.html을 로컬 브라우저에 연다. 글쓰기 버튼과 사진 버튼을 각각 누른다.
  2. 없는 휴강 정보를 물을 수 없도록 화면에 '휴강·좌석은 확인되지 않았습니다' 안내가 항상 남는지 확인한다.
  3. 복사 입력: '아래 변경요청을 한 번에 하나만 반영하는 수정 제안을 써 줘: 사진 모임 시간이 토 14시에서 토 15시로 바뀐 가상 승인표 V2. 수정 전후 기대 출력, 회귀시험, 승인자 칸도 적어. 실제 현장 변경이 아님.'
  4. 담당자 역할은 V2 승인 여부를 확인하고, 구현자는 객체 한 항목만 변경하며, 검수자는 두 버튼을 다시 눌러 회귀시험 후 버전 기록을 남긴다.

입력 예제

V1에서 사진 버튼 클릭

예상 결과

'사진 모임: 토요일 14시'; 페이지에는 '휴강·좌석 확인 필요'가 표시되고 외부 발송 기능이 없다.

검증 방법

  1. 사진 시간만 V2로 바꾸었다면 글쓰기 수 19시가 유지되는지 확인한다.
  2. 키보드 Tab/Enter로 두 버튼이 동작하고 안내문이 읽기 순서에 남는지 확인한다.

흔한 오해와 실패 복구

  1. 승인 없는 대화 한 줄을 운영표 확정으로 취급 → 버전·승인자 확인 전 V1 유지.
  2. 두 버튼에 첫 번째 버튼 리스너만 붙임 → querySelectorAll로 각각 연결하고 회귀검사.

확인 문제

사진 시간 변경 후 어떤 테스트가 필요한가?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

수정 대상과 기존 기능의 회귀를 함께 확인한다.

정답: 사진과 글쓰기 모두 재시험

팀 변경 기록에 남겨야 할 항목을 써라.

동료평가 · 자동채점 아님

평가 기준: 버전·요청자·근거·승인자·수정 위치·시험 결과·복구법을 상대가 찾아낼 수 있다.

해설 보기

다른 사람이 원상복구할 수 있어야 인수 가능하다.

독립 실습

V2 변경 요청을 승인된 가상 상황으로 가정하고 HTML 한 곳만 수정한 뒤 변경표를 만든다.

남길 증거: V2 HTML, 전후 버튼 결과, 두 버튼 회귀시험 및 승인 가정이 명시된 변경 기록.

V1 가상 안내 화면

<!doctype html><html lang=ko><meta charset=utf-8><title>가상 회관 안내 V1</title><h1>가상 회관 안내</h1><button type=button data-key=글쓰기>글쓰기</button><button type=button data-key=사진>사진</button><p id=answer aria-live=polite>모임을 선택하세요.</p><p>휴강·좌석은 확인되지 않았습니다. 직원 검토 전 발송 금지.</p><script>const schedule={글쓰기:'수요일 19시',사진:'토요일 14시'};document.querySelectorAll('button').forEach(b=>b.addEventListener('click',()=>{document.querySelector('#answer').textContent=b.dataset.key+' 모임: '+(schedule[b.dataset.key]||'확인 필요')}))</script></html>

가상 승인 변경 요청

변경 M1: 가상 승인표 V2에서 사진 모임을 토요일 15시로 변경. 글쓰기 모임은 수요일 19시 유지. 실제 운영정보 아님.
실습 해설 보기

schedule의 사진 값만 '토요일 15시'로 교체한다. 사진 버튼은 15시, 글쓰기 버튼은 19시; 취소/좌석 미확인 문구는 유지. 잘못 바뀌면 V1 파일로 복구한다.

평가 기준: V2 한 항목 변경·기존 기능 보존·고정 안내 유지·복구 가능한 변경표가 모두 있어야 통과.

새 맥락에 적용하기

수업 예약 안내로 소재를 옮겨 규정 버전이 오래됐을 때 화면이 어떤 확인 문구를 보일지 설계하라.

내 말로 설명하고 가르치기

코드 없이 요구서와 두 버튼 시험표만 받은 동료가 변경 전후 결과를 예측하게 하고, 왜 기존 버튼도 검사해야 하는지 설명하게 한다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

학습 단원

보여 주기 시험과 실패 뒤 돌아올 길

해결할 문제와 목표

연습 질문에는 답하지만 처음 보는 '휴강됐나'에는 근거 없는 확답을 한다.

봉인 사례 검증, 분류·근거·수정 부담 측정, 실패 로그와 수기 복구 절차를 만든다.

먼저 알아둘 것

  1. team-03 프로토타입

핵심 한 문장: 시연 성공은 낯선 상황의 안전한 운영을 증명하지 않는다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

소방 훈련에서는 불이 안 났을 때 문이 열리는지만 보지 않는다.

비유가 닿지 않는 곳: 이 실습은 가상 문의 몇 건뿐이어서 실제 현장 안정성을 입증하지 못한다.

실제로 작동하는 원리

평가 사례를 작성 단계에서 분리하고 정답 근거/미확인 표식을 정한다. '맞은 분류 수/전체', 근거 없는 확답 수, 담당자 수정 문장 수, 수동 대비 총 소요시간을 기록하되 이 자료에는 실제 시간이 없다. 위험 오류 발생 시 자동화 사용 중단, V1 승인 시간표와 수기 응대로 복구, 담당자에게 알려 재시험한다.

따라 하기

  1. 이제 team04-test.txt의 봉인 C를 열고 V1 화면의 시간 안내만으로 '휴강 여부'를 답할 수 있는지 판정한다.
  2. 복사 입력: '가상 운영표에는 글쓰기 수 19시만 있다. 문의는 이번 수요일 휴강됐나요? 근거 있는 것/없는 것/담당자 확인/발송 전 검수로 나눠 줘. 취소 여부는 추측 금지.'
  3. 오류 기록을 작성한다: 입력 C, 실제 출력, 기대 출력, 위험도, 재현 방법, 수정, 재시험 담당.
  4. 시험이 실패했다고 가정해 'AI 초안 사용 중단 → 승인된 운영표 수기 응대 → 휴강 담당자 확인 → 수정본 신규 사례 시험 후 재개'를 말로 재현한다.

입력 예제

C: 이번 수요일 글쓰기 모임이 취소됐나요? / 표: 수 19시

예상 결과

정기 시간은 수 19시; 이번 주 휴강 정보는 없음. 담당자 확인 전 '개최/취소' 어느 쪽도 확답 불가.

검증 방법

  1. 훈련 A/B가 아닌 C에서 출력의 단정 표현을 찾아낸다.
  2. 수동 방식과 비교를 하려면 같은 질문·조건의 시간을 실제 기록했는지 확인한다; 자료에 없으므로 개선율은 미산출.

흔한 오해와 실패 복구

  1. '정기 일정이 있다'를 '이번 주 열림'으로 확대 → 날짜별 휴강 정보 확인.
  2. 오류를 보고서에서 지움 → 중단·수정·재시험까지 기록.

확인 문제

정기 일정만으로 이번 주 휴강을 알 수 있는가?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

정기 일정과 예외 상황은 별개다.

정답: 아니다

C 실패 후 팀의 중단·수기복귀·재개 기준을 서로 검토하라.

동료평가 · 자동채점 아님

평가 기준: 동료가 오류를 재현하고 수기 응대 자료·책임자·새 사례 재시험의 세 요소를 찾을 수 있어야 한다.

해설 보기

고장 후 실제 행동 순서가 문장으로 남아야 한다.

독립 실습

새 가상 문의 D를 풀고 C와 서로 다른 실패 위험을 기록하라.

남길 증거: C/D 근거·미확인·오류 위험표, 실패 시 복귀와 재검증 경로.

봉인 평가 카드

승인 운영표 V1: 글쓰기 모임 수요일 19시; 사진 모임 토요일 14시. 휴강·정원·좌석 정보 없음. C: 이번 수요일 글쓰기 모임은 취소됐나요? D: 토요일 사진 모임에 네 명 예약됐나요?
실습 해설 보기

C는 휴강 미확인, D는 정기 시간 토 14시만 말할 수 있고 예약 인원은 미확인. 둘 다 담당자 확인 없이 개최/예약 상태를 확정할 수 없다.

평가 기준: 시간 정보와 예외/예약 정보를 분리하고 두 사례에 대한 실패 후 행동이 존재한다.

새 맥락에 적용하기

행사 장소가 변경된 경우처럼 예전 안내문은 맞지만 최신성이 없는 사례를 새 평가 카드로 작성하라.

내 말로 설명하고 가르치기

팀원이 '맞은 질문이 많으니 그냥 공개하자'고 할 때 낯선 질문·위험 오류·수기 복구를 근거로 반박하게 한다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

학습 단원

결과보고를 인수와 강의로 바꾸기

해결할 문제와 목표

발표 화면은 멋진데 다른 직원은 사용법과 중단 기준을 모른다.

요구-변경-검증-미달-인수·복구 기록과 선택적 포트폴리오 및 20분 강의안을 만든다.

먼저 알아둘 것

  1. team-01~04 산출물

핵심 한 문장: 프로젝트 완료는 발표가 아니라 다른 사람이 안전하게 재현·중단할 수 있는 상태다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

새 직원에게 조리법뿐 아니라 알레르기 확인과 재료 부족 시 대응까지 인계한다.

비유가 닿지 않는 곳: 비유는 실습 전용이고 현장 데이터 권한·배포 승인·보안 검토를 대신하지 않는다.

실제로 작동하는 원리

보고서는 원 문제, 기준선, 변경과 테스트 증거, 미해결 위험, 운영 판단, 담당자를 이어 준다. 포트폴리오는 자체 코드와 가상 자료만 포함하며 비공개 원문·고객 정보·기업명은 승인 없이 싣지 않는다. 강의 전환은 잘못된 초안 판별→규정 근거 표시→미확인 분리→낯선 질문 시험→teach-back으로 한다.

따라 하기

  1. team05-template.txt의 빈칸을 team-01~04 결과로 채운다. 처리시간은 실측이 없으므로 미측정이라고 쓴다.
  2. 복사 입력: '아래 가상 프로젝트 보고서를 요구/산출/증거/미해결/인수/복구 순서로 구조만 다듬어 줘. 채용 확정이나 실제 기업 적용이라고 쓰지 마. 자료: 사진 모임 시간 안내 버튼, 취소·좌석 미확인, C/D 보류, 수기 복귀.'
  3. 다른 사람에게 HTML과 보고서만 주고 버튼 동작·미확인·중단 절차를 수행하게 한다. 성공 여부를 체크한다.
  4. 20분 강의안을 만든다: 3분 오류 제시, 5분 근거 찾기, 5분 버튼 시험, 4분 변형 질문, 3분 동료 설명; 학습자 수행으로 평가한다.

입력 예제

보고서 초안: 'AI로 민원 80% 해결, 채용 보장' (측정치·보장 근거 없음)

예상 결과

'가상 시간안내 2종 프로토타입; 평가 사례 C/D에서 휴강·예약은 미확인으로 보류; 처리시간 미측정; 채용 여부 미확인'으로 사실 범위를 제한한다.

검증 방법

  1. 동료가 가상 V1/V2 중 승인본을 구별하고 수기 복귀를 문서만으로 재현하는지 관찰한다.
  2. 보고서의 숫자/효과/취업 주장 각각에 출처·측정·한계를 대조한다.

흔한 오해와 실패 복구

  1. 취업 연계를 채용 보장으로 표현 → 공고의 연계 목적과 결과 보장을 분리.
  2. 공개 포트폴리오에 실제 기업 문서 붙임 → 독자 코드와 가상 자료만 남기고 권리/승인 없으면 공개하지 않는다.

확인 문제

실측 없는 80% 개선을 결과보고에 넣어도 되는가?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

수치에는 측정 방법과 근거가 필요하다.

정답: 불가; 미측정으로 표기

동료에게 자료만 주고 인수 시험을 시켜 피드백을 기록하라.

동료평가 · 자동채점 아님

평가 기준: 동료가 실행·위험 질문 보류·수기 복귀를 재현하고 못한 단계를 특정해 개선안을 제안한다.

해설 보기

설명을 들은 사람이 아니라 산출물만 받은 사람이 할 수 있어야 한다.

독립 실습

1쪽 가상 결과보고와 교안 핵심을 채우고 동료 인수 체크란을 만든다.

남길 증거: 근거 있는 보고서와 인수 체크리스트, 타인이 실패 사례를 해결한 기록 또는 미완료 사유.

완전한 보고 양식

가상 프로젝트명: 회관 모임 시간 안내
목표: 시간 문의를 근거에 맞게 초안 작성
승인표: V1 글쓰기 수 19시, 사진 토 14시; V2 변경은 승인 가정만
시험: A/B 시간 안내, C 휴강 미확인, D 예약 인원 미확인
기준선 시간: 미측정
자동발송: 없음
채용: 연계 목표만 공개, 결과 보장 아님
채울 칸: 검수자 / 정지 신호 / 수기 복귀 자료 / 미해결 위험 / 재시험 / 공개 가능 자료 / 강의 실습/평가
실습 해설 보기

정지 신호는 취소·좌석 확답 또는 운영표 버전 충돌. 수기 복귀는 승인된 최신 운영표와 담당자 확인. 기준선 시간 미측정, 미해결 최신성·좌석 정보; 공개 자료는 가상 예제만. 강의 평가는 동료가 새로운 문의에 근거·미확인을 분리하고 중단 절차를 설명하는 수행으로 한다.

평가 기준: 보고·인수·교육 모두 실측/미측정, 인수자, 중단·복구, 비공개 자료 배제를 갖춘다.

새 맥락에 적용하기

문제 유형을 회관 모임에서 도서관 강좌 안내로 바꾸어 강의 실습 카드와 인수기준을 새로 써라.

내 말로 설명하고 가르치기

다른 강사에게 같은 가상 자료만 주고 5분간 수업을 재현시키며, 관찰로 수업 목표가 충족됐는지 판정한다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

학습 단원

가상 공유물품 대여의 요구에서 타인 인수까지

해결할 문제와 목표

공동체가 공유물품의 대여 가능 여부를 물어보지만 서로 다른 안내와 반납 누락이 생긴다. 단일 브라우저 시제품을 실운영 장부로 혼동하면 중복 대여와 권리 침해가 생긴다.

요구 정의→권리와 최소 자료→작동하는 로컬 기록→정상·실패·수정→타인 재현·운영/복구를 한 가상 과제로 연결한다. 공동체 기여는 자발적이고 실제 효과는 미검증이다.

먼저 알아둘 것

  1. team-05의 보고·인수·강의안 초안; HTML 파일 저장·브라우저 열기. 앞 단원의 평가 미통과자는 필요한 부분만 보충한다.

핵심 한 문장: 작은 시스템은 입력을 검사하고 상태 변화를 기록하되, 운영 권한과 복구 책임은 별도로 설계해야 한다.

지금 할 일준비물개념과 원리따라 하기예상 결과와 검증오류 복구혼자 변형설명과 기여

큰 그림: 비유와 경계

공동 물품함의 대여표를 탁자 위 장부에 적듯 한 탭의 사건 기록을 읽는다.

비유가 닿지 않는 곳: 한 장의 종이나 한 탭은 여러 사람이 동시에 수정할 수 있는 중앙 장부가 아니며 대여표 번호는 이용자 신원 확인 수단이 아니다.

실제로 작동하는 원리

이 HTML은 입력 D1/D2를 허용 목록으로 검사하고, 사건 배열에 loan/return을 추가하고, 사건을 순서대로 접어 현재 물품별 활성 대여표를 계산한다. 중복 대여/반납을 거부한다. DOM에는 textContent로만 넣는다. 메모리 상태는 새로고침 시 사라지므로 합성 JSON 백업을 다운로드하고 검증 후 복원한다. 파일 복원은 버전·필드·순서·중복·대여표 정수 범위를 검사하며 실패 시 기존 화면을 보존한다. 이는 서버 DB·공유 상태·동시성 제어·로그인/인증·실제 재고 확인이 없는 학습 시제품이다. 실제 여러 이용자 운영은 별도 승인·서버 트랜잭션·권한·백업/복구·접근성·보안 검토가 필요하고 여기서는 구현/배포하지 않는다.

따라 하기

  1. 요구 인터뷰를 가상 카드로 수행한다: 이용자는 D1 사다리 또는 D2 돗자리의 대여 가능 여부를 보고 싶고, 운영자는 대여/반납 오류를 되돌릴 수 있어야 한다. 수용기준은 D1 첫 대여 성공, 같은 D1 중복 거부, 정확한 표로 반납, 잘못된 표 거부, 백업 복원이다. 실제 주민 접촉은 하지 않는다.
  2. 권리·자료 카드: 코드 D1/D2와 사건/가상 표 번호만 입력한다. 물품 실소유·운영자 승인·사용권은 실운영 전에 별도 확인한다. 실명·전화·주소·참여자 명단·비공개 안내 복제 금지. JSON 백업은 합성자료만. 공개 포트폴리오/기여는 선택 사항이며 공개 동의와 개인정보 처리 동의는 별개의 결정이다.
  3. 아래 community-loans.html의 content 전체를 텍스트 편집기에 복사해 UTF-8 파일 community-loans.html로 저장한다(추가 설치 없음). 파일을 더블클릭해 로컬 브라우저에서 연다. 제목·D1/D2와 “둘 다 대여 가능”이 보이면 시작한다. 보이지 않으면 확장자가 .html인지, 코드 일부가 아닌 전체를 저장했는지 확인한다.
  4. 실행 전에 종이에 예상값을 적는다. D1→대여 기록 클릭: L1 대여 중. 같은 D1 다시 클릭: 거부, 사건 1건. L1→반납 기록 클릭: D1 가능, 사건 2건. 다시 L1 반납: 거부. D2 대여: L2 대여 중. Tab/Enter로 버튼에도 접근한다.
  5. 실패주입: D3 입력은 거부, 빈 표와 L9 반납은 거부. 백업 저장 버튼으로 fictional-loans.json 파일이 실제 다운로드되었는지 확인한다. 가상 사건 하나가 열린 상태에서 내보낸 뒤 초기화→복원해 그 물품이 대여 중으로 되돌아오는지 확인한다. 악의/손상 예제로 복사 백업의 events에서 같은 loan 사건을 한 번 더 추가해 복원: “복원 거부”와 기존 상태 유지를 기대한다. 원본 백업은 보존한다.
  6. 수정 과제: 요구가 바뀌어 D3 돋보기가 추가되면 names에 D3만 추가한다. 저장 전 D3 거부→수정 후 D3 첫 대여 L1 성공→중복 거부→반납·백업 복원을 예측·확인한다. 원본 HTML은 별도 복사로 보존하고 기존 D1/D2 회귀도 반복한다. 사용한 AI 도움은 요구 질문→오류 힌트→마지막 독립 변경/설명 순으로 줄여 기록한다.
  7. 인수: 동료에게 수정 파일과 이 단원의 수용기준만 준다. 동료가 처음 열어 D3 정상·중복·반납·손상 복원 거부·수기 대체표를 재현하게 하고 실패한 단계와 개선을 기록한다. 동료 시험을 하지 않았다면 미실시로 기록한다. 강사는 새 카드 “D2 분실”을 제시해 상태/책임자/보류 문구를 학습자가 독립 작성하게 한다. 현 코드는 분실 처리가 없으므로 미구현이라고 명시한다.

입력 예제

빈 가상 장부→D1 대여 두 번→L1 반납 두 번→D2 대여. 외부 이용자 자료 없음.

예상 결과

D1: L1 대여 중/중복 거부/반납 후 가능/중복 반납 거부, D2: L2 대여 중. 사건은 정상 대여·반납·대여 3건만 남는다. 새로고침하면 초기화; 가상 백업 복원에 성공해야 이전 사건이 보인다.

검증 방법

  1. 자동·화면 관찰: 허용 D1/D2, 중복·거부, 사건수, 복원 전후 상태, 잘못된 JSON 거부 후 기존 상태 유지와 키보드 탭 순서를 확인한다. 코드가 존재한다는 사실만으로 브라우저 검증 완료나 학습자 성취를 뜻하지 않는다.
  2. 사람 판정: 동료가 지침만으로 새 D3를 재현하고 메모리/백업/중앙 서버 차이 및 수기 복귀를 설명한다. 동료 미실시는 미실시로 기록하며 자기 체크만으로 합격하지 않는다.

흔한 오해와 실패 복구

  1. file://에서 다운로드가 막히면 브라우저의 다운로드 권한을 확인하고 사건 기록은 가상 입력으로만 다시 만든다. 개인 자료로 시도하거나 보안 제한을 해제하지 않는다.
  2. 복원 실패 시 원본 합성 백업을 열어 version=1, events 배열, 사건 순서와 표 번호를 검사한다. 기존 화면은 유지되고 마지막으로 검증된 가상 백업 또는 빈 수기표로 복귀한다.
  3. 서로 다른 탭/기기/운영자 간 동기화는 없다. 이 시제품으로 실제 대여·재고를 확정하거나 운영하지 않는다.

확인 문제

D1을 두 탭에서 각자 대여했을 때 이 파일이 중복 대여를 막는가?

자동채점 · 선택형

답을 고르세요
해설과 정답 보기

단일 탭 상태 배열만 검사하므로 실제 동시성 제어는 없다.

정답: 막지 못한다. 각 탭의 메모리가 따로 있다.

동료에게 D3 요구를 주고 중복/손상/복구를 직접 실행하게 한 뒤, 이 시제품으로 운영하면 안 되는 이유를 자신의 말로 설명하라.

동료평가 · 자동채점 아님

평가 기준: 동료 재현 여부·입력/예상/관측/수정의 실제 기록, 사건 접기 원리 설명, 실제 공유 서버/인증/권리/복구 부재 4종을 확인한다. 미실시를 성공으로 표시하지 않는다.

해설 보기

대여 기록 동작과 운영 가능성을 분리한다.

독립 실습

community-loans.html을 직접 열고 D1 정상·중복·반납, D3 실패→추가, 백업·손상 복원을 시연한다. 가상 이용자 카드에서 요구와 권리·최소자료를 정하고 운영 인계서와 15분 재사용 강의안을 만든다. 다른 강사는 D2 분실 카드를 미리 보지 않고 제시한다.

남길 증거: 학습자가 만든 요구/권리 카드, 저장한 HTML과 D3 변경 전후 실제 화면, D1/D2 회귀·중복·손상 복원 기록, 수기 복귀 인수표, 동료/다른 강사의 독립 재현 또는 미실시 표시. 공개/실사용자 기여는 선택이며 별도 동의/승인을 받기 전 모의 기여다.

설치 없는 완전한 로컬 HTML

<!doctype html>
<html lang="ko"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>가상 공유물품 대여·반납 로컬 실습</title>
<style>body{font:1rem/1.6 system-ui;max-width:44rem;margin:auto;padding:1rem}button,input{font:inherit;padding:.4rem;margin:.2rem}button:focus-visible,input:focus-visible{outline:3px solid #145a92}li{overflow-wrap:anywhere}fieldset{margin:1rem 0}#events{white-space:pre-wrap}</style>
<h1>가상 공유물품 대여·반납</h1>
<p>연습용 단일 브라우저 메모리. 공동 서버/예약 아님. 실명·연락처 입력 금지. 새로고침하면 사라집니다. 가상 기록만 파일로 내보내세요.</p>
<p>물품 코드는 아래 현재 상태 목록에서 확인하세요. 이 화면은 한 컴퓨터의 한 탭에서만 상태를 압니다.</p>
<fieldset><legend>대여</legend><label for="item">물품 코드</label><input id="item" placeholder="예: D1" autocomplete="off"><button id="loan" type="button">대여 기록</button></fieldset>
<fieldset><legend>반납</legend><label for="ticket">대여표 번호</label><input id="ticket" placeholder="L1" autocomplete="off"><button id="return" type="button">반납 기록</button></fieldset>
<p id="status" role="status" aria-live="polite">입력 전: 현재 상태 목록을 확인하세요.</p><h2>현재 상태</h2><ul id="items"></ul><h2>가상 사건 기록</h2><ol id="events"></ol>
<button id="export" type="button">가상 백업 저장</button><label for="restore">가상 백업 복원</label><input id="restore" type="file" accept="application/json,.json"><button id="reset" type="button">연습 초기화</button>
<script>
'use strict';
const $=s=>document.querySelector(s), names={D1:'사다리',D2:'돗자리'};
let events=[],next=1;
function state(rows=events){const active=Object.fromEntries(Object.keys(names).map(id=>[id,null]));for(const e of rows){if(e.kind==='loan')active[e.item]=e.ticket;else active[e.item]=null}return active}
function render(){const active=state();$('#items').replaceChildren();for(const id of Object.keys(names)){const li=document.createElement('li');li.textContent=id+' '+names[id]+': '+(active[id]?'대여 중 ('+active[id]+')':'대여 가능');$('#items').append(li)}$('#events').replaceChildren();for(const e of events){const li=document.createElement('li');li.textContent=e.kind==='loan'?`${e.ticket}: ${e.item} 대여`:`${e.ticket}: ${e.item} 반납`;$('#events').append(li)}}
function report(s){$('#status').textContent=s}
$('#loan').onclick=()=>{const id=$('#item').value.trim().toUpperCase();if(!Object.hasOwn(names,id)){report('거부: '+Object.keys(names).join(' 또는 ')+'만 입력하세요.');return}if(state()[id]){report('거부: 이미 대여 중입니다. 반납 후 다시 시도하세요.');return}const ticket='L'+next++;events.push({kind:'loan',item:id,ticket});render();report(id+' 대여 기록: '+ticket+' (가상·단일 탭)')};
$('#return').onclick=()=>{const ticket=$('#ticket').value.trim().toUpperCase(), active=state(),id=Object.keys(active).find(k=>active[k]===ticket);if(!id){report('거부: 활성 대여표가 없습니다. 번호 또는 중복 반납을 확인하세요.');return}events.push({kind:'return',item:id,ticket});render();report(id+' 반납 기록 완료 (가상)')};
function valid(rows){if(!Array.isArray(rows)||rows.length>1000)throw Error('사건 배열/건수 오류');const seen=new Set(),open=Object.fromEntries(Object.keys(names).map(id=>[id,null]));let max=0;for(const e of rows){if(!e||Object.keys(e).sort().join(',')!=='item,kind,ticket'||!Object.hasOwn(names,e.item)||!['loan','return'].includes(e.kind)||typeof e.ticket!=='string'||!/^L[1-9][0-9]*$/.test(e.ticket))throw Error('사건 필드 오류');const n=Number(e.ticket.slice(1));if(!Number.isSafeInteger(n))throw Error('번호 범위 오류');if(e.kind==='loan'){if(seen.has(e.ticket)||open[e.item]||n<=max)throw Error('중복 대여/번호 오류');seen.add(e.ticket);open[e.item]=e.ticket;max=n}else{if(open[e.item]!==e.ticket)throw Error('반납 순서 오류');open[e.item]=null}}return max+1}
$('#export').onclick=()=>{const blob=new Blob([JSON.stringify({version:1,events},null,2)],{type:'application/json'}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='fictional-loans.json';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);report('가상 백업 다운로드 요청: 실제 파일 저장 여부를 확인하세요.')};
$('#restore').onchange=async e=>{const file=e.target.files[0];if(!file)return;try{if(file.size>100000)throw Error('파일 크기 오류');const data=JSON.parse(await file.text());if(!data||Object.keys(data).sort().join(',')!=='events,version'||data.version!==1)throw Error('버전 오류');const proposed=valid(data.events);events=data.events;next=proposed;render();report('가상 백업 복원 완료: '+events.length+'건')}catch(err){report('복원 거부: '+err.message+'; 기존 화면 유지')}e.target.value=''};
$('#reset').onclick=()=>{events=[];next=1;render();report('연습 기록 초기화. 저장한 가상 백업만 복원 가능')};render();
</script></html>

강사·동료 인수용 가상 카드

가상 공동체 요청: D1 사다리, D2 돗자리의 대여 여부 안내. 새 요청 D3 돋보기, 분실 D2는 미구현. 사용권/실물 재고는 미확인. 입력은 물품 코드와 가상 대여표만.
수업 15분: 3분 요구/권리, 4분 D1 정상·중복, 3분 손상 복원, 3분 D3 독립 변경, 2분 동료 설명·운영 불가 이유.
인수표: 저장파일/열기/예상출력/오류 주입·수정/백업/수기표/운영 책임자/미구현/동료 재현 상태.
수기 대체표: 가상 코드·가상 표·대여/반납·담당자 확인만. 실제 현장 사용 전 별도 승인·개인정보 설계 필요.
강사 즉석 질문: D2 분실은 현재 어떤 상태로 처리되는가? 답: 미구현, 대여 확정 중단 및 운영자 검토. AI 힌트 없이 설명하게 한다.
실습 해설 보기

예상 정상 사건은 D1 loan L1, D1 return L1, D2 loan L2. 거부된 입력은 사건을 늘리지 않는다. D3 추가는 names={D1:…,D2:…,D3:"돋보기"} 변형 한 곳으로 가능하나 기존 백업 데이터의 허용 코드가 바뀌는 영향도 재시험한다. 무결성 검사는 수업용 클라이언트 검증일 뿐 위변조를 막는 서버 권한이 아니다. 새로고침 소실 때는 마지막 가상 백업을 검증 후 복원하거나 빈 수기표로 되돌린다. 분실은 현 코드에 상태가 없어 운영자에게 보류/설계 변경을 요청한다.

평가 기준: 요구-권리/최소자료-실행-정상/실패/수정-동료 재현/복구 다섯 단계 각각 실제 증거가 있어야 과정 내 독립 수행 검토 가능. 동료 미실시·브라우저 미실행은 미검증. 실제 다중사용자 운영 가능, 공동체 성과 또는 교육자 독립을 보장하지 않는다.

새 맥락에 적용하기

가상 우산 공유로 물품을 바꾸되 우산이 파손되었을 때 “대여 가능”으로 자동 돌리지 않는 새 상태/승인 요구를 독립 작성한다. AI 없이 기존 loan/return 사건 접기로 파손을 표현할 수 없는 이유를 설명하고 강사는 다른 코드를 즉석 지정한다.

내 말로 설명하고 가르치기

학습자는 백업을 가린 뒤 사건 3개의 상태를 종이에 계산하고 화면에서 확인한다. AI 도움 없는 재설명에서 단일 탭·개인정보·동시성·운영 승인 한계를 명시한다. 다른 강사는 인수 카드만 보고 15분 수업을 재현하거나 미실시를 기록하고, 새 오류를 발견하면 교안의 어떤 단계/예상 출력을 갱신할지 학습자에게 묻는다.

실습·전이·설명 결과는 본인 또는 동료가 기준에 따라 검토하세요. 이 페이지는 숙련을 자동 인증하지 않습니다.

읽음과 숙련은 별개입니다.

← 전체 과정