14.1 KB · 수정 2026-09-09 16:47
목차

2026-09-09(수) 세션 — 당근 AI스터디 devplan 페이지 신설 + 1차 ai-study 폐기

기록: [코디] · 지시: [페페] 26.9.9 채팅 (원문은 페이지 「지시문 기록」 절에 그대로 보존)

무엇

[페페] 「ai스터디 이전에 했던 것은 폐기다. 사이트 내리고 자료는 그대로 보관해서 새로 시작한 ai스터디에 참고자료로 사용한다. … devplan에 당근 AI스터디 페이지 만들고 좌측 사이드 메뉴. 1.관리페이지 2.멤버페이지 … 3. 현재 멤버 바이브코딩이 첫 계획을 올렸다. 당근 어플 접속해서 내용 확인하고 … 사이드 메뉴 세번째로 AI 기본 세팅. 그릴링 없이 코디 추천으로 완료해라.」

[코디] 네 갈래로 나눠 처리했다.

① 당근 수집 — 노트20 「칼리」 계정

모임 「AI스터디 AI코딩 업무자동화」 접속 → 게시글 4건 확인(페페 3 + 바이브코딩 1) → 바이브코딩 가입인사 전문 + 멤버 6인 명부 수집. 🔑본문은 스크린샷이 아니라 접근성 노드 덤프로 받았다 — WebView 라 화면이 잘리고 툴팁이 한 줄을 가린다. 함정 전문 = rules.md 🆕 맨 위.

② devplan 페이지 — 단일 HTML + JSON 데이터 + 파이썬 빌더

③ 바이브코딩 계획 체계화

큰 프로젝트 = 업무 대시보드(셀프 AX + 직장 AX), 하위 6종 + 상시 1: P1 회의록 초안(쉬움·1순위) → P5 위원회 명부·공문(쉬움·2) → P2a 정기 안내메일(보통·3) → P3 타 대학 사례조사(보통·4) → P2b 회신 수집·취합·리턴(어려움·5) → P4 행사 기획·홍보(보통·6) / P6 메모·리마인드(상시). 그릴링 12문(각 문항에 코디 추천안) + 7단계 파이프라인(S1 세팅 → S2 업무해부 → S3 파일럿 선정 → S4 손으로 1회 왕복 → S5 규칙 고정 → S6 자동화 → S7 확장·통합), 단계마다 멤버/AI 할 일 분리. 🔑파일럿 추천 = P1 회의록 — 양식 고정·입력 작음·눈으로 바로 검증이라 첫 성공이 가장 싸다.

④ 1차 ai-study 내림 (자료는 전량 보관)

검증

항목 결과
빌더 자체검사 16항목 ALL PASS (marker orient·hex 0·13px·qahelper·쉘 미적용·keep-all·탭 쌍 4·첫 탭만 열림·레인 미겹침·캔버스 내부·간격 균등·라벨 3줄·히어로 존재)
check_font.py / check_theme.py FAIL 0 / FAIL 0 WARN 0
Playwright 실측 1600·1280·390 콘솔에러 0 · 404 0 · 가로스크롤 0 · 렌더 폰트 13px+ · 멤버 탭 전환 OK
허브 등록 projects.json 카드 추가 · project_state.json 항목 신설 · build_hub.py --selftest 81건 통과 → index.html 재생성 · 사이드바 「AI스터디」를 새 페이지로 교체 후 --renav 40개
1차 내림 공개 URL /study·/study-qa 404(502 아님) · 대조군 /wmc/ 200 · /agent 401 유지 · 8801~8804 LISTENING 0 · reg query ai_study* 0

🔁 같은 날 rev2 — 6장 분리 + 그릴링 자동저장

[페페] 「큰메뉴 1,2,3을 각각 다른 페이지로 분리해줘. 현재 스크롤 1페이지 통합에서 3개로 분리. 멤버별 페이지도 상단에 멤버 이름은 남기되 별도 페이지로 분리하자. 반응형 페이지로 보완할건데 한페이지 통합하면 서로 영향이 간다. 멤버별 그릴링 항목에는 입력창 만들어줘라. 입력하면 자동 저장.」

분리 — 1장 → 6장

danggeun-ai-study.html(관리) · danggeun-member-{vibecoding,haedali,claude-well,pyeongil}.html · danggeun-setup.html. 빌더가 한 번에 6장을 찍는다. 🔑허브가 가리키는 주소는 그대로 뒀다(/danggeun-ai-study.html = 관리페이지) — 카드·사이드바·시드 링크가 하나도 안 깨진다. 멤버 상단 탭은 버튼 → 페이지 링크로 전환(현재 멤버만 aria-current="page"). 좌측 네비는 대분류 3개 + 활성 그룹의 하위 앵커만 펼친다(다른 페이지 앵커는 죽은 링크가 되니 안 그린다).

그릴링 자동저장

문항마다 textarea + 저장 버튼 없음. 타자 멈춘 뒤 0.7초와 blur 두 곳에서 쏜다(디바운스만 두면 타자 치다 탭을 닫을 때 마지막 입력이 날아간다). - 백엔드 = 신설 C:\dev\devplan\danggeun_api.py + app.py API 2개 (GET /api/danggeun/answers · POST /api/danggeun/grill). 락파일로 직렬화, 4,000자 상한, slug/qid 형식 검증. - 🔑원장을 members.json 과 갈랐다(danggeun/answers.json) — 한 파일이면 재빌드가 멤버 답을 덮는다. 빌더는 읽기만 해서 정적 HTML 에도 굽고, 페이지는 열릴 때 다시 fetch 해 최신으로 덮는다. - 🔑질문 id = 질문 원문 sha1 앞 8자. 인덱스(q1…)면 질문 하나만 끼워 넣어도 답이 통째로 밀린다. - 빈 칸 = 삭제(미답변 복귀). 저장되면 「답변됨」 배지 · 좌측 네비 미답변 카운트 · 1/12 답변 카운터가 즉시 갱신된다.

검증 (rev2)

항목 결과
빌더 자체검사 ALL PASS (6장 × hex0·13px·qahelper·쉘미적용·문서완결·marker + 페이지별 분리 검사 + 탭 링크 4×4 + qid 유일 + API 연결)
check_font / check_theme × 6장 FAIL 0 / FAIL 0 WARN 0
Playwright 6장 × 3폭(1600·1280·390) 콘솔에러 0 · 404 0 · 가로스크롤 0 · 렌더 폰트 13px+
자동저장 실타자 왕복 입력 → 「저장됨 14:52」 · 서버 원장 반영 · 카운터 1/12 · 네비 배지 11 · 새로고침 후 값·배지 복원 · 비우면 원장에서 삭제
API 왕복 restart.py 로 8799 재기동(PID 1개 확인) 후 GET/POST/DELETE 정상

🔴밟은 함정 4개(전문 = rules.md 🆕 맨 위) — ①6장이 CSS 를 공유해서 「이 문자열 없음」 검사가 전부 오탐(마크업만 잘라서 봐야 한다) ②app.py 만 고치고 재기동을 안 하면 API 가 404 ③Git Bash curl -d '한글' 이 cp949 로 나가 서버가 UTF-8 디코드 실패(셸이 범인) ④모바일에서 sticky 탭바와 fixed 햄버거가 겹침.


🔁 같은 날 rev3 — 그릴링 기본 펼침 + 독립 검토본 발송

[페페] 「그릴링 질문 입력창 기본 펼침으로 하고 상단에 접힘/펼침 버튼 달아줘라. 멤버 바이브코딩 페이지 독립 html로 빼서 나한테 텔레그램 보내줘. 1차 검토 받을 예정. 답변 자동저장은 유지하되 코디 연결은 필요없다. 단순 내용 확인 및 그릴링 메모용이다.」

검증(rev3) — 빌더 자체검사 ALL PASS(독립본 전용 8항목 포함) · check_font/check_theme 6장 FAIL 0 · 사이트 6장×3폭 재실측 ALL PASS(기본 12문 펼침 · 전체 접기 버튼 포함) · 🔑독립본은 file:// 로 열고 context.route 로 file 이외 요청을 전부 차단한 채 실측 = 외부 요청 0건 · 콘솔 0 · 가로스크롤 0 · 13px+ · 크림 배경(토큰 적용) · 12/12 기본 펼침 · 접기/펼치기 동작 · 로컬 자동저장 → localStorage 기록 → 새로고침 복원. 🔴함정 3개 = ①독립본은 theme.css 링크 불가(빌드 시 굽기) ②「자립인가」는 문자열로 못 잰다(요청 차단 실측이 유일한 증명) ③기본 펼침으로 바꾸면 「눌러서 펼친 뒤 입력」하던 기존 테스트가 반대로 동작해 죽는다.


🔁 같은 날 rev4 — 리스너(새 글 → 멤버 페이지 자동 생성)

[페페] 「리스너 만들어서 다른 멤버 가입인사 또는 개발목표 관련 내용이 올라오면 페이지 생성해줘.」

검증(rev4) — watch.py --demo 21항목 통과(노드 파싱·화면장식 제거·대상 판정·지문 결정성·slug 충돌·파이프라인 골격·「이전」 좌표·글자탭·좌표 하드코딩 금지) · 빌더 자체검사 ALL PASS · 예약작업 등록 확인(다음 실행 18:10).

폰 실주행 6회 — 여기까지 뚫었다 | 구간 | 상태 | |---|---| | 화면 잠금 해제 · 앱 기동 | ✅ | | 광고동의 인터스티셜 닫기 | ✅ (인터스티셜 닫음 로그) | | 나의 당근 → 모임 → 우리 모임 진입 | ✅ (전부 글자 노드로 탭) | | 글 상세 진입 | ✅ (앵커 「추천순으로 보기」 + 상대 오프셋) | | 상세 본문 파싱 | ❌ 여기서 막혔다 — 본문 파싱 실패 | | 순회 종료·판정·정상 종료 | ✅ (오경보 없이 exit 0) |

🔴남은 한 구간 = 「어느 카드를 열었나」. 앵커 오프셋이 첫 글이 아니라 엉뚱한 카드(또는 인기글 블록)를 열고 있다. 다음 세션은 상세 진입 직후 스크린샷 1장을 떠서 어느 글인지 눈으로 확인하고 OFFSETS 를 맞추면 된다 — 파싱 로직 자체는 이 세션에서 수집한 실제 노드 덤프로 검증돼 있다(demo 통과).

⚠예약작업은 켜둔 채로 둔다 — 읽기 전용이고 못 열면 아무 것도 안 누르고 조용히 넘어간다(오경보 없음). 2시간마다 남는 watch.log 가 다음 세션의 진단 자료다.

다음

⏳페페 = ①바이브코딩 독립 검토본 1차 검토 회신(발송 완료) ②공개 시점·범위 ③그릴링 12문 전달 경로 ④그릴링 답을 어디에 모을지(사이트 원장 vs 독립본 로컬 — 코디가 받아야 하면 공개 경로+인증 필요) ⑤webhook 삭제 여부. ⏳코디 = 리스너 첫 실주행 로그 확인(danggeun/watch.log — 수집 N건이 찍히는지) · 반응형 보완(페이지가 갈렸으니 한 장씩 독립 수정) · 멤버 3인 가입인사 대기 → 올라오면 주기 작업 7단계.