← 목록
기타 2026-06-18 11KB 읽기 11분

크라우니 스쿨 — 대안학교 ERP 질문기반 명세수집 서비스

개요

대안학교용 직관 ERP를 구축하기 위해, 학교 운영자가 로그인 → 프로젝트 자동매칭 → 초등4학년 수준의 쉬운 질문에 하나씩 답 하면 서비스 구축 명세서가 저절로 완성되는 서비스. jump2000(한국 학원/학교 관리 시스템)의 자주 쓰는 기능을 표준 영역으로 구조화. 다른 대안학교도 재사용 가능한 표준틀.

  • 도메인/포트: school.crowny.org → :9934 (게이트웨이 결선 완료, HTTPS 200)
  • 첫 학교: 카라크리스천스쿨 (고승원 교장, 기쁨의교회, 010-7582-2708, gossen@crowny.org)
  • 로그인: gossen / 0000 → "카라크리스천스쿨 대안학교 ERP" 자동 매칭

무엇을 했는지

  1. 울트라 Workflow(35 에이전트) — 17영역 딥리서치 → 초등4학년 질문생성 → 종합. 450개 질문 생성(영역별 목표치 정확 일치). 종합 단계는 Fable 불가로 수동 보완(안내문·순서·명세템플릿).
  2. 한선씨 질문엔진 코어(질문엔진.한선) — 다음질문 선택/영역게이트 분기/명세누적/진행률. 컴파일·검증 통과(로직 원본).
  3. 서비스 서버(school-server.js, I/O 셸) — 로그인·세션·프로젝트매칭·질문흐름·명세누적·MD내보내기. 한선씨 코어와 동일 로직.
  4. 친근 UI(public/) — 한 문제씩, 큰 버튼, 진행바, 예/아니오·하나고르기·여러개고르기·숫자·짧은글, 이전/모름 지원.
  5. 영역 게이트 분기 — 각 영역 첫 질문 "이 기능 쓰실 건가요?", 아니오면 그 영역 질문 통째 스킵(검증: 467→447). "대답에 따라 질문 사용" 구현.
  6. 게이트웨이 결선 — crowny-ports.sh set + gateway.yaml httpOnly: true 추가(stunnel TLS종단 리다이렉트루프 해결) + SIGHUP rolling reload.
  7. 자가기동 — manage.sh(start/stop/status/heal/reload) + LaunchAgent plist(미로드, launchctl load -w로 영구화).

17개 영역 (450질문)

학교기본정보20 · 학생관리45 · 출결35 · 반시간표30 · 성적평가35 · 학부모소통30 · 수납회계후원40 · 상담생활지도30 · 행사일정25 · 급식15 · 도서12 · 공지알림18 · 통계리포트20 · 계정권한20 · 생활기록포트폴리오30 · 신앙채플25 · 직관성우선기능20

신앙·채플 + 후원 영역은 기독교/대안학교 특화 — 일반 학교는 게이트로 끄면 됨.

관련 파일

  • /Users/ef/crowny-school/질문엔진.한선 — 핵심 로직(한선씨 원본)
  • /Users/ef/crowny-school/school-server.js — 서버(I/O 셸)
  • /Users/ef/crowny-school/질문은행.json — 450질문 은행(영역키 재매핑 완료)
  • /Users/ef/crowny-school/public/{index.html,app.js,style.css} — UI
  • /Users/ef/crowny-school/data/accounts.json — 학교 계정(표준틀: 새 학교 한 줄 추가)
  • /Users/ef/crowny-school/manage.sh — 운영
  • /Users/ef/Library/LaunchAgents/com.crowny.school.plist — 자가기동(미로드)

API

  • POST /api/login {id,pw} · GET /api/me · GET /api/next · POST /api/answer {id,answer}
  • POST /api/back · GET /api/spec · GET /api/export(MD 다운로드) · GET /api/reload · GET /api/health

2부 — 실제 ERP MVP 구축 (2026-06-18 이어서)

질문 마법사를 /setup으로 분리하고, school.crowny.org 메인을 실제 ERP 앱으로 구축. jump2000 매일 쓰는 기능 우선 노출.

  • 5개 핵심 모듈 (하단 탭): 🏠홈(대시보드) · 🧒학생 · ✅출석 · 💰수납 · 📢알림
  • : 오늘 출석/결석/미체크, 이번달 납부/미납/합계, 최근 알림 한눈에. 신규학교는 설정 마법사 배너
  • 학생: 사진·이름·학년·보호자, 검색, +등록/수정 시트, 퇴원처리
  • 출석: 날짜 이동 + 학생별 원탭(출석/지각/결석/조퇴) 즉시저장
  • 수납: 월 이동 + 학생별 납부 토글(냈어요/아직), 학비 자동
  • 알림: 학부모 공지 작성/목록/삭제
  • 집계 로직=한선씨 집계.한선(출석집계/출석률/수납집계, 컴파일검증), node 셸이 동일 미러
  • 자가기동: LaunchAgent com.crowny.school 영구 로드 완료(재부팅 자동가동)
  • E2E 검증: 학생등록·출석통계·수납·알림·대시보드 전부 통과. 공개 HTTPS 200(/, erp.js, setup 등)

ERP API

  • /api/erp/summary · /api/erp/students(GET/POST) · /api/erp/student/{update,delete}
  • /api/erp/attendance(GET/POST) · /api/erp/payments(GET) · /api/erp/payment(POST)
  • /api/erp/notices(GET) · /api/erp/notice(POST) · /api/erp/notice/delete

추가 파일

  • public/index.html+erp.js+erp.css — ERP 앱 / public/setup.html+setup.js — 질문 마법사
  • 집계.한선 — 출석/수납 집계 로직 원본 / data/erp-<user>.json — 학교별 ERP 데이터

3부 — 확장 모듈 + 학부모알림 + 마법사 자동반영 (2026-06-18, 울트라 병렬)

모듈 시스템으로 리팩터링 후 4개 모듈을 Workflow 4에이전트 병렬로 구축(각 독립파일=충돌없음).

  • 모듈 시스템: 서버 modules/*.js(ctx 계약, 자기 경로만 처리), 프론트 public/mod-*.js(window.SCHOOL_MODULES 등록). 하단탭=코어4(홈/학생/출석/수납)+⋯더보기(알림/모듈/설정)
  • ① 학부모 알림 (notify, 항상표시): 출결 체크 시 결석/지각이면 코어가 data/outbox-<user>.json에 문구 자동생성("[학교] OO 학생이 오늘 학교에 오지 않았습니다…"). 알림함에서 발송기록/단건·전체 보내기. 설정에서 결석/지각 알림 on/off. (실제 문자발송은 미래 훅)
  • ② 성적·평가 (grade): 학생별 과목/학기/유형(시험·수행·서술)·점수 또는 서술글. 대안학교 서술평가 지원
  • ② 상담 (counsel): 학생별 상담 타임라인(학생/학부모/생활), 종류별 색구분
  • ② 생활기록·포트폴리오 (record): 학생별 성장기록(성장·활동·신앙·기타)
  • ③ 마법사 자동반영: /api/erp/config가 게이트 답변(또는 modulesOverride) 읽어 모듈 on/off → 프론트가 꺼진 탭 숨김+파일 미로드. 설정 화면에서 마법사 재실행/알림 토글
  • 한선씨 코어 4종: notify/grade/counsel/record.한선(집계·평균 순수함수, 표준 crownyc 전부 컴파일·검증 통과)
  • 검증: 4모듈 API E2E 통과(성적 서술형·상담·생활기록·결석알림자동), 공개 HTTPS 모듈자산 200, 게이트 off→config 반영

누적 한선씨 코어

질문엔진 · 집계 · notify · grade · counsel · record (전부 컴파일 검증)

모듈 확장법(표준틀)

modules/<key>.js + public/mod-<key>.js 두 파일만 추가 → reload. 게이트 도메인 연결 시 마법사로 자동 on/off.

4부 — kara.crowny.org 연결 + 2차 모듈 (2026-06-18, 울트라 병렬)

  • kara.crowny.org 연결: 같은 백엔드(:9934)에 별칭(aliases) 으로 추가(포트중복가드 회피). gateway.yaml crowny-school 블록에 aliases: [kara.crowny.org]. school·kara 동시 라이브.
  • 게이트웨이 함정: 라이브 GW는 node가 아니라 한선씨 gwlive.toau(워치독 gw8080워치독.sh 관리). node에 SIGHUP→워치독이 한선씨 라이브로 페일오버, gateway.yaml 재컴파일하며 별칭 반영. 약 10초 공백 후 자동복구. gateway 설정변경 후엔 워치독 페일오버를 기다릴 것.
  • 도메인 학교 브랜딩: /api/brand(무인증, Host 기반) → kara는 ✝️ 카라크리스천스쿨. 로그인 화면 자동 브랜딩.
  • 2차 모듈 3종(Workflow 3에이전트 병렬): 📊리포트(주간출결 막대·미납명단·결석잦은학생, 항상표시) · 🍚급식(일별 식단/주의, meal 게이트) · 📖도서(대출/반납/검색, library 게이트)
  • 모듈 7종: notify/report/grade/counsel/record/meal/library. 한선씨 코어 9종 누적(질문엔진·집계·notify·grade·counsel·record·report·meal·library 전부 컴파일검증)
  • 검증: 3모듈 API E2E 통과, kara 공개 HTTPS 모듈자산 200
  • 5부 — 3기능 병렬 + 디자인표준2026 + 버튼버그 (2026-06-18)

    • 학부모/학생 역할별 계정: authRole(teacher/parent/student)+dataOwner+linkStudentId. 교사가 설정에서 학생별 계정 생성(id <교사>-p<sid>, pw 4자리) → 학부모/학생 로그인 시 읽기전용 '내 아이' 화면(오늘출결·납부·급식·공지·성적·생활기록). 교사 API 403 가드.
    • 행사·일정 + 백업·내보내기 모듈(울트라 병렬) → 총 모듈 9종, 한선씨 코어 11종.
    • 버튼 안눌림 버그 수정: api() 실패 시 모달 오버레이가 안 닫혀 클릭 막힘 → api() throw 제거({error} 반환)+go()의 closeModal()+try/catch.
    • 크라우니디자인표준2026: 토큰화(--ink/--bg/--accent, 다크모드, Pretendard)+모노톤 아이콘(crowny-icons.js, 이모지 자동치환). 출처=crowny-services 공유 디자인.
    • 검증: 3기능 E2E 통과(행사/백업CSV한글/학부모계정→내아이/권한차단), kara 공개 자산 200.

    6부 — 게임월드 + 셀코어 퀘스트 + 통일 (2026-06-18)

    • 게임월드 테마(padella 계열): crowny-tokens.css(φ/나폴리팔레트) + world.css(노을배경·세리프크레스트 HUD+시계·금빛도크·씬페이드·양피지패널) + world.js(시계·금빛먼지 canvas·씬전환 옵저버). 탭=마당/아이들/출석/수납/더보기.
    • 셀코어 룰엔진 "오늘 할 일": 학교현황룰.한선(가져오기 "셀코어", 룰생성/조건/평가, 컴파일검증) → node computeTodos 미러 → /api/erp/summary.quest. 마당에 우선순위 퀘스트 카드(클릭→메뉴 이동), 완료 시 allDone.
    • 폰트 통일: 단일 --font 스택(Georgia 제거).
    • 메뉴 통일: 모든 화면 일관 씬헤더(addSceneHead) 자동삽입.
    • 실작동 점검: 9모듈 API 200 전수, 셀코어 퀘스트 E2E(빈→학생등록→출석/수납→allDone) 통과, kara 공개 200.

    7부 — 요청→4상 자동화 + 셋 (2026-06-19)

    • 셋: 알리고 가입/키 바로가기 링크 · 학부모 화면 월드 배너 · 홈 주간 출석 추이 차트(summary.week)
    • 요청 자동화: 각 페이지 HUD +?(질문/기능추가)→/api/request(data/requests.json). 관리자 "요청 관리" 화면. 내 PC 폴러 tools/요청처리기.js(LaunchAgent 30초)→/api/requests/new→4상 분별(요청분별.한선 정본+node미러: 티자동/옴질문/타거절/음이관)→티=안전설정 자동수행(알림·메뉴 토글)/음=escalations.jsonl 이관/옴=회신. crowny.org는 관리자 인증으로 같은 /api/request 등록→폴러 처리(전용 콘솔 미구현).
    • 라이브 검증: kara 요청→30초내 티 자동수행(메뉴 토글) 확인.
    • 운영: LaunchAgent com.crowny.school(서버) + com.crowny.school.poller(폴러). 설정 ~/.crowny-school-poller.json.

    잔여 이슈

    • 분기 고도화: 현재는 영역 게이트 + easy 순서. 각 질문의 branch 힌트(예: "예면 후속 3개")는 메타로 저장만 — 세부 skip_if 자동실행은 v2.
    • 명세서 → 실제 ERP 구현 착수는 답변 완료 후 별도 작업.
    • LaunchAgent 영구화는 사용자가 launchctl load -w ~/Library/LaunchAgents/com.crowny.school.plist 1회 실행 필요.
    • 질문은행 RPN 정본 변환 미완(고수준 .한선 코어만).