작업 이력 — 2026-06-12
종합
오늘 큰 흐름 — 관리자단 목업 6개 화면을 실데이터로 전환. DBA가 운영 MySQL(PMS)에 관리자 콘솔 스키마(002_admin_console.sql)를 적용·검증하고, API에 인증 가드 + 관리자 엔드포인트를 신설하고, admin 6개 페이지를 실 API에 연동한 뒤 두 레포(api·admin)를 배포했다.
1. DBA — 관리자 콘솔 스키마 적용 (malgn-helper-api/migrations/002_admin_console.sql)
운영 MySQL(PMS)에 적용·검증 완료.
hp_topic10행 (토픽: common/service scope)hp_service6행 (서비스 카탈로그)hp_setting21행 (ai/safety/cache 설정 묶음)hp_integration8행 (외부 연동, 시크릿 값은 미저장)
2. API — 인증 가드 + 관리자 엔드포인트 (malgn-helper-api/src/index.ts)
기존엔 /admin/* 등에 라우트별 가드가 없었다(무인증 접근). 이번에 미들웨어 신설 + 관리자 엔드포인트 추가 (+552 라인).
requireAuth— 세션/JWT 검증 미들웨어.requireRole(level)— 최소 권한(level) 가드,requireAuth뒤에 체인.ROLE_LEVEL(agent < developer < admin).- 엔드포인트:
GET /accounts(admin) — 운영자/개발자/상담사 계정 목록GET/POST/PUT/DELETE /topics(조회 developer / 변경 admin) — soft delete(status=-1)GET/POST/PUT/DELETE /services(조회 developer / 변경 admin)GET /settings/integrations(developer) ·PUT /settings/integrations/:key(admin) — 시크릿 값 미포함,secretSet플래그만GET /settings/:group(developer) ·PUT /settings/:group(admin) — ai|safety|cache 묶음 upsert
- 라우트 등록 순서 주의: 정적 경로
/settings/integrations를 파라미터 경로/settings/:group보다 먼저 등록.
3. admin — 목업 6개 화면 실데이터화 (malgn-helper-admin/pages/*)
accounts.vue·catalog.vue·settings/{ai,safety,cache,integrations}.vue (+1133 / −515) — 폼 disabled·목업 데이터를 제거하고 위 API에 연동(조회·저장).
검증
- api 타입체크: 기존 baseline과 동일한 10건(classify.ts·index.ts의 선존 에러, 라인 번호만 이동) — 신규 변경이 타입 에러를 추가하지 않음 확인. wrangler deploy(esbuild)는 정상.
- api 가드(배포 후): 무인증
GET /topics·/services·/accounts·/settings/integrations·/settings/ai·/auth/me→ 모두 401(가드 정상). 루트/→ 200. - admin 빌드:
pnpm run build(nuxt build) 통과 — 신규 6개 page chunk(accounts/catalog/ai/cache/integrations/safety) 전부 산출, chunk 46개. 멀티레포 가드: cwd=admin ·wrangler.tomlname=malgn-helper-admin 일치 확인. - admin(배포 후): prod
malgn-helper-admin.pages.dev200 + 마커<title>홈 · 맑은도우미 Admin</title>. 신규 6개 라우트(/accounts·/catalog·/settings/{ai,safety,cache,integrations}) 모두 200(SSR 셸). 실데이터는 로그인 후 클라이언트가 인증된 API 호출로 채우는 구조 — 무세션이라 풀 데이터 렌더 검증은 범위 밖.
배포
malgn-helper-api → Cloudflare Workers
- 커밋:
9cefd48(신규 커밋: yes) - 메시지: feat(admin): requireAuth/requireRole guards + accounts/topics/services/settings endpoints
- Version ID:
fc81a5fe-586f-4d21-8c85-66dc16cf34d2 - URL: https://malgn-helper-api.malgnsoft.workers.dev
- 검증: 보호 엔드포인트 무인증 401 / 루트 200
malgn-helper-admin → Cloudflare Pages
- 커밋:
2d1acf9(신규 커밋: yes) - 메시지: feat(admin): wire accounts/catalog/settings pages to real API (replace mockups)
- 배포: https://64eedc1c.malgn-helper-admin.pages.dev (prod: malgn-helper-admin.pages.dev)
- 검증: prod 200 + 빌드 마커 / 신규 6 라우트 200
정합
- 배포 후 두 레포 working tree↔main 일치(각 repo 변경분만 커밋, 무관 파일 미포함). working tree clean.
002_admin_console.sql은 배포 산출물과 무관(운영 MySQL에 이미 적용)하나, 정합을 위해 api 커밋에 함께 포함.
다음 작업 후보
- admin 신규 화면 로그인 후 실데이터 렌더 E2E 검증(세션 토큰 확보 후 QA).
/topics·/servicesCRUD 쓰기 경로(POST/PUT/DELETE) admin UI 연동 잔여분 점검.