vignette/apps/web/package.json
Yun Chan 16e791e044 G0~G8 성과·동맹 측정 OS 작업 일괄 고정
8월 7일까지 워킹트리에만 남아 있던 미커밋 작업을 커밋한다. 여러 사본
폴더(worktree·clone)에 흩어져 있던 중간 스냅샷을 정리하기 전에 원본을
git 이력으로 고정하는 것이 목적이다.

- contracts/routes/services: measurement, outcome_trajectory, rupture_repair,
  deliberate_practice, calibration_transfer, supervision_research,
  multimodal_alliance, continuous_improvement 계열 신규 모듈과 테스트
- infra/db/init: 07~16 마이그레이션(측정 기반~calibration transfer 실행)
- apps/web: 세션 리뷰 카드·관리 화면·E2E 스펙 추가
- docs/ops: G0~G8 라이브 통합·배포·롤백 증거 문서와 evidence JSON/PNG
- scripts: smoke·ledger·릴리스 에이전트·NAS 프리뷰 운영 스크립트

engine.public 로그 .bak과 apps/web/test-results 산출물은 커밋에서 제외했다.
2026-08-08 01:30:53 +09:00

52 lines
2.2 KiB
JSON

{
"name": "@vignette/web",
"private": true,
"version": "0.1.0",
"type": "module",
"description": "Vignette — AI 심리상담 시뮬레이션 훈련 플랫폼 (React 19 프론트)",
"scripts": {
"dev": "vite",
"build": "npm run check:cosmetic-filter-safety && tsc -b && vite build",
"generate:api-types": "node scripts/generate-api-types.mjs",
"check:api-types": "node scripts/generate-api-types.mjs --check",
"check:preview-hosts": "node scripts/check-preview-hosts.mjs",
"check:design-ssot": "node scripts/check-design-ssot.mjs",
"check:measurement-contract": "node scripts/check-measurement-contract.mjs",
"check:cosmetic-filter-safety": "node scripts/check-cosmetic-filter-safety.mjs",
"check:cosmetic-filter-safety:self-test": "node scripts/check-cosmetic-filter-safety.mjs --self-test",
"check:dead-code": "knip --include files,dependencies,unlisted,unresolved,binaries --treat-config-hints-as-errors",
"check:duplication": "jscpd src ../api/app --min-lines 8 --min-tokens 80 --ignore **/test_*.py,**/*_test.py,**/api.gen.ts,**/*.css,**/*.d.ts --threshold 0.05 --reporters console,threshold --no-tips",
"generate:live2d-assets": "node scripts/generate-live2d-assets.mjs",
"preview": "vite preview",
"typecheck": "tsc -b",
"lint": "npm run check:cosmetic-filter-safety && tsc -b",
"e2e": "node scripts/run-e2e.mjs",
"e2e:list": "node scripts/run-e2e.mjs --list",
"e2e:parallel": "playwright test --project=chromium-desktop --project=chromium-mobile --workers=4",
"e2e:single-run": "playwright test --project=chromium-single-run --workers=1",
"e2e:headed": "playwright test --headed",
"e2e:ui": "playwright test --ui"
},
"dependencies": {
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.14.8",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-router-dom": "^6.30.1"
},
"overrides": {
"gh-pages": "^6.3.0"
},
"devDependencies": {
"@playwright/test": "^1.61.1",
"@types/react": "^19.1.8",
"@types/react-dom": "^19.1.6",
"@vitejs/plugin-react": "^4.6.0",
"esbuild": "^0.25.12",
"jscpd": "5.0.12",
"knip": "^6.26.0",
"openapi-typescript": "^7.13.0",
"typescript": "^5.8.3",
"vite": "^6.3.5"
}
}