← 목록
기타 2026-07-17 15KB 읽기 14분

Crowny Today — ERP 특화요소 적용 검토

  • 날짜: 2026-07-17
  • 대상: /Users/ef/crowny-today/서버.한선 (:9604) + CrownyBrowser/bundle/today/bridge/todayBridge.js
  • 참조: /Users/ef/crowny-erp (core/, tenants/registry.psv, instances/leum·aimed)
  • 관련 요청: 2026-07-17-요청-crowny-today-전체작동-erp특화적용검토.md

요약 판정표

#ERP 요소4상공수
14상 동의 거버넌스 (동의결정.한선)0.5일
2/api/matrix 4상 집계1일
3/api/goal/decide 경영AI 중계사장님 결정 후 1일
4멀티테넌트(registry.psv+instances)2~3일(후속)
5위임전결/결재 상신2일
6강점기반 추천(/api/work/recommend)1일
7Bearer 인증 + 조직도 members1일 (최우선)
8셀코어/의미어 특화후속
9공유 셸 UX / 크라우니디자인.css타(전제 오류)

1. 4상 균형3진 의사결정

1-1. 동의결정.한선 (/Users/ef/crowny-erp/core/동의결정.한선)

무엇인가: 마스터 업그레이드를 테넌트가 수용할지 4상으로 판정하는 순수 함수 모듈. 입력: 수준(patch/minor/major), 파일수, 스키마변경, 권한변경, 포트변경(0/1). 동의판정()이 티/옴/타/음 반환, 자동승인가능()은 티만 자동, 위험점수()는 0~100 참고값.

Today 적용가치: Today는 지금 단일 인스턴스(:9604)라 업그레이드 동의 자체는 불필요하지만, 주간보고서 → ERP 결재 상신 흐름에서 "이 보고서를 자동승인/리뷰/보류/오너승인 중 어느 경로로 보낼지" 판정하는 데 동일 패턴을 재사용할 수 있다. 예: 팀원 정기 주간보고=티(자동접수), 특이사항(초과근무·이슈태그)=옴(리뷰), 결재금액/인사 관련=음(오너 승인 필수).

적용방법: /Users/ef/crowny-today/서버.한선보고서결정.한선 신규 모듈(동의결정.한선 패턴 차용)을 만들어 /api/report POST 시 보고서 내용의 특이신호(길이, 키워드매칭 "초과근무"/"사고"/"긴급" 등)를 인자로 넘겨 4상 반환 → 응답 JSON에 상태:"티|옴|타|음" 필드 추가, ERP 결재 상신 시 이 값으로 라우팅.

4상 판정: 옴 — 아이디어는 유효하나 "특이신호 추출 규칙"을 먼저 설계해야 함(후속 연구). 예상 공수: 0.5일 (모듈 자체는 20줄 내외, 신호추출 규칙 정의가 관건)


2. /api/matrix — 4상 집계

무엇인가: /Users/ef/crowny-erp/core/servers/통합서버.한선 _처리매트릭스()(514행). 프로젝트 PSV를 읽어 분류·상태·단계별 카운트를 집계해 반환. 조직줄(등급)에 따라 필터링.

Today 적용가치: Today 팀 피드(지금/마침/내일계획)를 팀 전체 관점에서 "오늘 몇 명이 완료/진행중/휴식 상태인지" 매트릭스로 보여주는 대시보드 위젯에 그대로 대응. 8·8·8 리듬 준수율(수면/근무/개인시간 태그)도 동일 집계 패턴으로 뽑을 수 있음.

적용방법: 서버.한선_처리팀매트릭스(소켓, 날짜) 추가 — 게시물.psv를 읽어 type(now/done/plan/rest)별·name별 카운트를 _처리매트릭스와 동일한 카운트-누적 로직(단계인덱스 매핑 방식)으로 구현. /api/matrix?date= 라우트 신설. todayBridge.js에서 팀 보드 탭에 바인딩.

4상 판정: 티 — 로직이 단순 카운트 집계이고 기존 파일구조(게시물.psv)로 바로 가능. 즉시 적용 권고. 예상 공수: 1일


3. /api/goal/decide — 경영AI(:9913) 4상 중계

무엇인가: /Users/ef/crowny-erp/core/servers/목표재정서버.한선 _처리목표결정()(541행). 목표ID로 PSV에서 행을 찾아 경영AI(:9913, 폴백 있음)에 위임해 4상 판정을 받아오는 중계 라우트. 테넌트 인프라 전제(설정.한선/권한검증.한선/성장연결.한선 의존).

Today 적용가치: 주간보고서를 "이 팀원의 이번 주 계획이 회사 목표와 정합한가"를 자동 판정하는 데 재사용 가능(성장연결.한선의 업무정합도()/멤버강점()과 동일 계열). 다만 이는 ERP 목표 인프라(경영/목표.psv, 경영AI 서버)에 대한 하드 의존을 만든다.

적용방법: Today가 이 기능을 원하면 (a) ERP 목표재정서버를 프록시로 호출(9938 브리핑 프록시 확장 — 이미 /api/briefing이 유사 패턴 사용 중) 하거나 (b) 로컬에 목표.psv 미러를 두는 두 경로가 있음. 코드 신설보다 정책 결정이 우선.

4상 판정: 음 — 사장님 결정 필요(Today가 ERP 목표 인프라에 의존할지, 아니면 팀 하루기록 도구로 범위를 한정할지 스코프 문제). 기술적으로는 옴 수준이나 제품 경계 문제라 음으로 격상. 예상 공수: 스코프 결정 후 1일 (프록시 확장 기준)


4. 멀티테넌트 구조

무엇인가: /Users/ef/crowny-erp/tenants/registry.psv(id|name|domain|portBase|version|owner|status, 현재 aimed/leum 2건) + instances/<id>/{core,data,tenant.json,동의대기,이력} 완전 격리 구조. 마스터 core/를 인스턴스별로 핀버전 유지하며 동의결정.한선을 통해 업그레이드 전파.

Today 적용가치: 현재 Today는 단일 팀·단일 인스턴스(:9604, 데이터 하드 경로)라서 즉시 필요치 않음. 그러나 "Today를 여러 팀/부서/자회사에 배포"하는 시나리오가 생기면 이 패턴(테넌트별 데이터 디렉토리 분리 + tenant.json 설정 주입)을 그대로 가져올 수 있음. registry.psv의 tenant 개념은 지금 crowny-today의 데이터루트 하드코딩(11행)을 ERP_TENANT 방식 환경변수 주입으로 바꾸는 선행작업과 궤를 같이함.

적용방법: 지금 당장은 서버.한선데이터루트 변수를 환경변수(TODAY_DATA_ROOT) 오버라이드 가능하게만 해두면 향후 멀티테넌트 확장이 쉬움(사전 준비, 풀 테넌트 시스템은 후속).

4상 판정: 옴 — 현재는 불필요, 팀 확장 시나리오가 확정되면 도입. 최소한의 환경변수 훅만 지금 넣어두는 것을 권고. 예상 공수: 환경변수 훅 0.5일 / 풀 멀티테넌트 2~3일(후속)


5. 위임전결/결재(AP 문서 상신) flow

무엇인가: ERP 코드베이스에 명시적 "AP 문서 결재선" 엔진은 별도 파일로 확인되지 않았고, 대신 권한검증.한선(RBAC, 등급 L1/L3 분기 — 재정요약 등에서 사용) + 동의결정.한선(업그레이드 결재) + 목표재정서버의 /api/finance/record(경제팀/총괄 권한 게이트)가 결재 유사 패턴을 구성. 즉 ERP는 "역할 등급별 승인 게이트"를 여러 서버에 각각 구현한 상태이며, 통합 결재엔진은 아직 없음.

Today 적용가치: Today CLAUDE.md에 "주간보고서→ERP 결재 상신"이 설계 목표로 명시돼 있음. ERP에 통합 결재엔진이 없으므로 Today가 먼저 만들어 ERP 쪽에 역제안하는 편이 낫다. 최소형: 보고서 상태필드(초안/제출/승인대기/승인/반려) + 권한검증.한선과 동일한 등급 체크 패턴(L1=팀원 자기제출, L2=팀장 1차승인, L3=총괄 최종승인).

적용방법: 보고서.psv상태 컬럼 추가(append-log이므로 최신행이 최종상태), /api/report/submit, /api/report/approve 라우트 신설. 권한검증은 ERP 권한검증.한선을 그대로 가져와 재사용(가져오기 경로만 지정) — Today CLAUDE.md의 조직도/members 부재 문제(항목7)와 반드시 함께 해결해야 함.

4상 판정: 티 — 설계 목표에 이미 명시돼 있고 ERP 패턴을 그대로 재사용 가능. 단, 선행조건은 항목7(인증+조직도) 완료. 예상 공수: 2일 (항목7 선행 후)


6. 강점기반 추천 (/api/work/recommend)

무엇인가: /Users/ef/crowny-erp/core/servers/일일업무서버.한선 _처리업무추천()(778행). 멤버강점(user)(성장연결.한선)으로 강점 프로필을 얻고, 담당업무 중 미완료건에 업무정합도(user, 업무내용)를 매겨 정합도 배열과 역할기반 추천 메시지를 반환.

Today 적용가치: Today의 "할일" 목록에 동일하게 적용 가능 — 각 팀원의 오늘 할일 리스트에 강점 정합도를 매겨 우선순위 제안. "내일계획" 게시물 작성 시에도 "이 계획이 당신 강점과 얼마나 맞는지" 넛지 가능.

적용방법: 성장연결.한선의 멤버강점()/업무정합도()를 그대로 가져오기(단, 조직도 데이터 필요 — 항목7과 연동). /api/todos/recommend?user= 라우트를 일일업무서버 패턴 그대로 이식.

4상 판정: 티 — 로직·데이터형이 이미 검증됐고 Today의 할일 스키마(user 필드 존재)와 바로 맞물림. 단 조직도/members가 선행돼야 함. 예상 공수: 1일 (항목7 이후)


7. Bearer 인증 + 조직도(members) — 최우선 갭

무엇인가: ERP 통합서버.한선은 POST /api/login {id,password} → SHA256(id+pw+솔트) 토큰 발급, GET /api/me(Bearer), /api/members(조직도) 표준 패턴을 갖춤. 토큰 검증은 _베어러(요청)으로 헤더 파싱 후 _토큰검증(토큰)→사번, _조직조회(사번)로 조직도 PSV 조회. 크라우니인증.한선(크라우니OS SSO 연동) 이중화도 있음. 조직도는 PSV(이름|사번|... |등급)로 관리되고 인증초기화 시 경로 주입.

Today 현황(문제): 서버.한선에 로그인/토큰/조직도 라우트가 전혀 없음(/health, /api/posts, /api/todos, /api/report, /api/sync, /api/briefing뿐). todayBridge.js 주석에 "전 데이터 인메모리 하드코딩"이라 명시돼 있고, 게시물의 name 필드도 자유 텍스트라 사칭·오타 리스크가 있음.

적용방법: ERP core/libs/인증.한선 + 테넌트설정응답.한선 패턴을 그대로 이식.

  1. data/조직도.psv(이름|사번|role|등급) 신설
  2. 가져오기 "/Users/ef/crowny-erp/core/libs/인증.한선"
  3. POST /api/login, GET /api/me, GET /api/members 라우트 추가
  4. 기존 라우트(/api/posts, /api/todos, /api/report 등)에 _베어러(요청)→사번 검증 삽입, name 필드를 클라이언트 입력 대신 토큰에서 역조회한 이름으로 대체(사칭 방지)
  5. todayBridge.js에서 로그인 화면 추가, 토큰을 로컬스토리지에 저장 후 매 fetch에 Authorization 헤더 부착
4상 판정: 티 — ERP에 이미 완성된 패턴이 있고, Today의 다른 모든 신기능(결재 상신·강점추천·팀매트릭스)이 이 인증+조직도 위에서만 안전하게 성립함. 최우선 P0로 즉시 적용 권고. 예상 공수: 1일 (인증.한선 이식 + 라우트 3개 + 기존 라우트 가드 삽입 + 프론트 로그인 화면)


8. 관제상태/셀코어/의미어 특화

무엇인가: ERP 코드에서 셀코어/의미어 특화는 통합서버.한선 주석의 "GET /api/files — 첨부파일 목록(셀코어 색인)", "GET /api/search — 셀코어 파일/텍스트 검색" 정도로, 파일첨부·전문검색에 셀코어 인덱스를 붙인 수준(회귀 3진 VM이나 4상 룰엔진 자체를 노출한 API는 아님). 별도 관제 상태 API는 확인 안 됨(공용 crownystate 도구 사용 추정).

Today 적용가치: Today는 아직 파일첨부 기능이 없어 당장 적용 대상 없음. 게시물/할일 텍스트에 대한 키워드 검색(/api/search?q=)은 향후 유용.

4상 판정: 옴 — 파일첨부 기능이 Today에 생기면 그때 셀코어 색인 패턴을 이식. 지금은 후속. 예상 공수: 후속 (파일첨부 기능 설계 후 재검토)


9. UI 공유 셸 규격 — 전제 재확인

무엇인가: ERP 프론트(core/public/앱.html, erp-shell.html)를 확인한 결과 크라우니디자인.css(studio.crowny.org/font/) 링크가 발견되지 않음. 대신 자체 CSS 변수(--bg, --primary, --accent, --eum 등)로 다크테마 톤을 구성한 커스텀 스타일시트. Pretendard/Apple SD Gothic Neo 폰트 스택 사용.

Today 설계문서의 전제("Crowny Office/ERP/Space와 동일 셸 UX 문법")는 부분적으로 틀렸다 — 공유 CSS 파일을 링크하는 구조가 아니라, 각 서비스가 유사한 다크테마 변수명 관례(CSS 커스텀 프로퍼티)를 독립적으로 반복 구현한 상태. 즉 "동일 파일 공유"가 아니라 "동일 관례(convention) 반복".

적용방법: Today가 크라우니디자인.css를 링크하는 것 자체는 크라우니디자인 규칙(전 세션 필수, 서비스명|경로 등록)상 맞으나, "ERP와 동일 셸"을 만들려면 크라우니디자인.css 링크만으로는 부족하고 ERP의 CSS 변수 네이밍(--bg,--primary,--text2,--accent 등)을 Today CSS 변수 세트에도 맞춰야 시각적 일관성이 남. 두 가지를 병행: (a) crowny-design.sh apply today로 중앙 CSS 링크, (b) todayBridge.js/index.html의 색상 변수명을 ERP 관례에 맞춰 정렬.

4상 판정: 타(원 설계문서의 전제만) / 실제 작업 자체는 옴 — "공유 파일"이 아니라 "관례 정렬" 작업으로 재정의해서 진행 필요. 예상 공수: 0.5일 (CSS 변수 리네이밍 + 크라우니디자인.css 등록)


우선순위 로드맵

우선순위항목이유공수
P07. Bearer 인증 + 조직도(members)다른 모든 신기능의 전제조건, 현재 사칭 리스크 존재1일
P02. /api/matrix 팀 4상 집계즉시 적용 가능, 기존 데이터로 바로 구현1일
P16. 강점기반 업무추천 이식ERP 검증된 로직 재사용, 항목7 이후 즉시 가능1일
P15. 위임전결/결재 상신(주간보고→ERP)Today 설계목표에 이미 명시, 항목7 선행 필요2일
P19. UI 변수 정렬 + 크라우니디자인.css 등록설계문서 전제 수정 겸 시각 일관성0.5일
P21. 4상 동의결정 패턴(보고서 라우팅)신호추출 규칙 설계 선행 필요0.5일
P24. 멀티테넌트 환경변수 훅만 선반영팀 확장 시나리오 대비, 풀 구현은 미룸0.5일
후속3. 경영AI 목표정합 중계제품 스코프 결정(사장님) 필요결정 후 1일
후속8. 셀코어 파일색인파일첨부 기능 생기면 재검토-

관련 파일

  • /Users/ef/crowny-erp/core/동의결정.한선
  • /Users/ef/crowny-erp/core/servers/통합서버.한선 (매트릭스/주간보고/로그인)
  • /Users/ef/crowny-erp/core/servers/목표재정서버.한선 (goal/decide, 경영AI 중계)
  • /Users/ef/crowny-erp/core/servers/일일업무서버.한선 (work/recommend)
  • /Users/ef/crowny-erp/core/libs/인증.한선, 크라우니인증.한선, 권한검증.한선, 성장연결.한선, 설정.한선
  • /Users/ef/crowny-erp/tenants/registry.psv, instances/leum, instances/aimed
  • /Users/ef/crowny-erp/core/public/앱.html, erp-shell.html
  • /Users/ef/crowny-today/서버.한선, CLAUDE.md
  • /Users/ef/CrownyBrowser/bundle/today/bridge/todayBridge.js

잔여 이슈

  • 항목3(경영AI 목표정합 중계)은 Today 제품 스코프 결정 필요 — 사장님 승인 대기
  • 항목7 구현 전까지 Today의 결재상신/추천 기능은 착수 불가(선행조건)