← /log
2026-04-24

Daily build log

1,323 words·raw from wai-vault/02-DevLog

2026-04-24

세션 PC: dm. 본 DevLog 는 2026-04-26 chyj1 복귀 시 누락분 복원 (커밋/파일 기준 재구성). 시간대별 디테일은 dm 세션 메모리에만 존재할 수 있음.

배경

  • 2026-04-23 저녁 chyj1 PC 에서 12 hardening 이슈 + 6 추가 리스크(C~H) 처리 + 3 repo 커밋. prod 배포는 미실행 상태로 종료 (project_current_state.md @4/23 저녁).
  • 4/24 dm PC 가 prod 배포 + 추가 트랙 진행. 그 결과 chyj1 부재 동안 w-ai-agents 24 commits / board 50 commits 누적.

w-ai-agents 24 commits (4/24)

A. board dual-mount (B0~B6.5) — claude-bridge 분리

커밋라우트노출
102a2aa B0claude-bridge.js API 체인 분리 (501→471)refactor
fac3cc7 B1/scores GET admin-only (ADR-002 Option A)super_admin
c6b58eb B2/board/scores dual-mountsuper_admin
c03fbb1 B3/board/dashboard/* + /board/overview/* dual-mounttenant-aware
369985d B4/board/cost/* dual-mountsuper_admin platform-wide
0911e9e B5/board/brief + /board/activity + /board/search dual-mounttenant
9f9b7c9 B6/board/agents/:id/detail + /board/agents/:id/run + /board/feedbacktenant
0fbc9e8 B6.5dual-mount dispatch → resources/bridge-dual.js 분리refactor

의도: 단일 process 안에서 /api/* (Bridge) + /api/board/* (Board) 동거. Board 가 Bridge 의 메모리/캐시/뉴런을 그대로 활용. ADR-001 Option A (통합).

B. ADR — 설계 결정 기록

커밋ADR핵심
7ec8016ADR 폴더 신설Bridge vs Board (ADR-001) + Agent Scores 정책 (ADR-002)
5c2838bADR-001Loren 선호 Option A (통합) — Tentatively Accepted
044e4ddADR-003고객사 Per-Tenant 풀 시범 운영 — DB+Brain 공유, 프로세스 분리
4488637ADR-003 후속"DB + Brain 공유, 프로세스만 분리" 로 설계 수정
23b1ebcADR-002Accepted — Option A (B1 backend 완료 반영)

C. 자율성 / 영업 트랙 (그리스 문자 시리즈)

커밋코드한 줄
67c8c08ο-1Slack Gateway scaffold (Phase A 기업 접점)
3e5e6abξ-2conversation-memory 5단계 대화 압축 (nexus-level-up Phase A P1)
d3187f2ν-1brain-auditor agent_metrics ALTER 를 insertMetric prepare 이전으로 (치명 버그 fix)
d60b9a2ν-1 추가response_snippet/prompt_snippet column 추가 (SQLite column 버그)
7498becν-2시군구별 사업자 현황 bulk wrapper (biz-stats)
b561968π-1router 사업자번호 자동 pre-fetch → agent prompt 주입

D. M9 사업자가입 완료 (Track A 매출 마일스톤)

project_execution_plan.md 의 Milestone 9 가 외부 의존 (국세청 API 5~7영업일) 으로 대기 중이었으나 4/24 에 키 발급 + 연결 완료.

커밋변경
2047aeasignup 사업자번호 진위확인 연결 (TODO 1-E, biz-lookup)
11f73b1signup biz-lookup 검증 엄격화 — 01 (계속사업자) 외 전부 거부
cba5f44docs(TODO): 1-E 사업자번호 진위확인 완료 마킹

→ Track A Phase 1 "첫 매출 가능" 상태에 가까워짐. 남은 외부 의존: AWS SES (이메일 인증) + Aligo (M11 알림톡).

E. debt 정리 (4건)

debt #커밋해결
#960fffbf 60b3499 REFAC λ-1board /posts/* + /deliveries/* 15 라우트 → posts-routes.js
#177e2a3badeploy-bridge.sh 자동화 (deploy-frontend 와 페어)
#232198368router SIGTERM → 5s 후 SIGKILL 강제 (openclaw 좀비 방지)
#2717caf70cascade + config: openclaw gateway 자동 복구

board 50 commits (4/24)

본 DevLog 작성 시점 chyj1 PC 는 master..origin/master 52 commits behind. 그 중 4/24 분 50건. 트랙별 묶음:

RF — api.js 도메인 분리 (510 → 53줄)

커밋도메인
49ec28b RF-1api/http.js 코어 분리
042f31f RF-2aauth/users/posts/comments/deliveries 분리
9ee798d RF-2bnotifications/companies/billing/stats 분리
b500f70 RF-2c + RF-3agents/insights/bridge/polling 분리 + api.js → barrel only (53줄)

lib/api/ 13 도메인 + lib/api.js 53 라인 barrel re-export. 외부 컴포넌트의 import * as api 호환 유지 (이름 변경 0).

DX — 디자인 토큰 재정립 (10단계)

5baeef9 DX-1 토큰 재정립 → 65a1bf6 DX-2 Button/Input → f9af13a DX-3 Card system → 1e425e1 DX-4 Dashboard 하드코드 정리 → e75f462 DX-5 PostList card-interactive → 1366607 DX-6 PostDetail admin action → 6e19d3c DX-7 Sidebar/브랜드 → 7325f74 DX-8/10 TabBar/EmptyState dark.

추가: cfc5dc9 DEBT-1 text-title 34파일 일괄 치환 + legacy alias 제거.

AG — AgentChat 보드 proxy 전환

커밋변경
3a253f6 16e98e6 AG-01chatWithAgent / chatWithAgentStream 을 /board/agent/execute proxy 로 전환
371fc65 AG-02-1api: getAssignedAgents wrapper 추가
a3d5789 AG-02-2AgentChat: getAssignedAgents 전환
63f4f30 AG-02-5Dashboard: getAssignedAgents 전환
822f00b AG-02-6CostDashboard: getAssignedAgents 전환
bda9f49 AG-02-7agentStore: getAssignedAgents 전환
9b173de AG-02-8db/index.js: RxDB agent sync 를 tenant-aware 로
09822b4 AG-02-8bAgentOverridesPanel: getAssignedAgents 전환
e02b367 AG-02-9api: getAgents 를 admin-only 로 재문서화

RB — 권한 가드 + UX 4상태 분리

커밋변경
7f13e42 RB-02PostDetail sticky fallback 제거
9670458 RB-03page access policy 공통화 (canAccessPage helper)
9e667f7 RB-04settings 민감 panel entry guard
66d5a8c RB-05ai-team / brain hub defensive guard
8500dbb RB-06CommentThread author_role legacy 비교 제거
72ffce6 RB-07OwnerDashboard usage chart contract 정리
a0a3ba4 RB-09Profile dark mode placeholder 대비 보정
d96102b RB-10BillingPage 4상태 분리 (permission/loading/error/ok)

LOGIN — 실패 사유 분기 + cooldown

76773c8 LOGIN-1 api.login 상태코드 분기 → 0fbe94a LOGIN-2 LoginForm 실패 사유 분기 + Enter 1초 cooldown → 6346802 LOGIN-3 i18n ko/ja 메시지 분화.

UX-X/Y/Z — 사용자 노출 용어 친화화

df45c34 UX-X2 signup/permission-denied → 3b26c18 UX-X3-1 MaintenanceWindow → 7c6dc43 UX-X3-2 Activity feed raw JSON 노출 수정 → dc65b7a UX-X3-4 Watchdog 경고 배너 개발 메타데이터 제거 → 5ca846f UX-Y2 AgentChat 22 에이전트 친화 이름 + 이모지 → a5a452b UX-Z1 CompanyManager 영구 삭제 UI + 타이핑 확인 → b1a800f UX-Z2 InvitePanel 만료된 초대 숨김 토글.

기타

3a253f6 AG-01 / 1fa25dd BUG-1 vite manualChunks 제거 (chunk cycle 해소) / 9e8f23c SWEEP-1 AgentChat tenant 미배정 fallback / 87f7db7 SWEEP-11 API 키 panel 대표/팀장 / 59bf703 SWEEP-8 vite React vendor 분리 (1.39MB → 1.13MB) / a3fdac5 PHASE-A2 PostDetail 4상태 / 6b42a68 PHASE-B vite recharts lazy split / 4d5fb9e fix(kanban) CategoryBadge import 누락 / 4828396 B8 api.js bridgeRequest → request 이관.

DB 마이그 prod 적용

/home/openclaw/w-ai-agents/.env mtime 2026-04-24 16:18 — 4/24 prod 가동 환경 갱신. 이 무렵 또는 직후 마이그 4종 적용된 것으로 추정 (4/26 점검 시 schema 전부 반영 확인).

마이그검증
2026-04-11-role-4tier.sqlusers.role enum 6값 + status enum 3값
2026-04-11-nexus-credits.sqlcompanies.token_balance_krw / subscription_status / billing_info / auto_topup_enabled + billing_transactions 테이블
2026-04-23-dead-column-cleanup.sqlusers.trial_runs_remaining DROP 됨
2026-04-23-schema-baseline-fixup.sqlchain_executions 테이블 존재

검증 안 된 것 (chyj1 부재)

  • 4/24 deploy 의 회귀 테스트 결과 — dm PC 측 메모리에만 있을 가능성
  • self-managed 토큰 (BRIDGE/GATEWAY/WEBHOOK/ADMIN_KEY/TOKEN_SECRET/DEFAULT_PASSWORD) rotation 미실행/etc/nginx/snippets/wai-proxy.conf mtime 2026-04-20 22:50 (4/23 이후 미수정)
  • [company] 잔액 변동: 4/26 실측 ₩104,309,999. billing_transactions 조회 결과 4/12 테스트 충전 6건만 존재 (dev_* + test_mode). 4/12 이후 변동 0 → 4/11 desk "99,999,999" 기록은 잘못됐고 4/12 충전으로 정착한 값이 그대로 유지

의사결정 / 정책

  • ADR-001 Option A (Bridge+Board 통합) Tentatively Accepted → B1~B6.5 로 구현
  • ADR-002 Agent Scores admin-only Accepted → Nexus Credits 단일 브랜드 원칙 (개별 agent 점수는 super_admin 의 /ai-team 만)
  • ADR-003 Per-Tenant 풀 — DB+Brain 공유, 프로세스만 분리. 시범 운영 단계
  • M9 외부 의존 해제 → 다음 마일스톤은 M11 (Aligo 알림톡, 외부 발급 대기)

후속 (chyj1 복귀 후)

  • self-managed 6 토큰 rotation 실행 (.env + nginx wai-proxy.conf + board 동기 갱신, bridge restart)
  • staging 정지 (1754308 @ 4/12) 재가동 또는 폐기 결정
  • 4/24 prod 배포 회귀 테스트 (login/posts/stats/mfa) 사후 검증
  • ADR 3건 wai-vault 동기화 (현재 w-ai-agents/docs/adr/ 만)