Files
invyone/.omc/project-memory.json
T
Johngreen 52386efb83
Build & Deploy to K8s / build-and-deploy (push) Has been cancelled
도메인 정리: invion.com → invyone.com 전체 일괄 치환 + 매핑 문서화
운영 도메인이 실제로는 v1.invyone.com / solution.invyone.com / api.invyone.com 인데
코드/문서 곳곳에 v1.invion.com / api.invion.com 등 미존재 도메인이 박혀 있어 정리.

변경 파일 (21):
- frontend lib/api/client.ts, lib/utils/apiUrl.ts: hostname 체크 endsWith(\".invyone.com\") 일반화
- frontend lib/api/dashboard.ts, file.ts, flow.ts, FileViewerModal*2.tsx: 도메인 치환
- frontend invion-layout-v5.html: 시안 내 placeholder 도메인 정리
- backend-spring SecurityConfig.java: CORS 주석 예시 정리
- docker/deploy/docker-compose.yml, k8s/traefik-dynamic.yaml: traefik Host 라벨 정리
- scripts/prod/deploy.sh: 안내 메시지 정리
- .cursor/rules/api-client-usage.mdc, project-conventions.mdc: AI 가이드 정리
- docs/* 4개: 아키텍처/플로우 문서 도메인 정리
- notes/gbpark/* 3개: 과거 메모 정리

신규:
- docs/DOMAIN_MAPPING.md: 운영/개발/폐기 도메인 영구 기록.
  AI 에이전트와 신규 개발자가 헷갈리지 않도록 단일 진실 출처.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 07:39:04 +09:00

596 lines
15 KiB
JSON

{
"version": "1.0.0",
"lastScanned": 1777285161379,
"projectRoot": "C:\\Dev\\projects\\invyone",
"techStack": {
"languages": [
{
"name": "JavaScript/TypeScript",
"version": null,
"confidence": "high",
"markers": [
"package.json"
]
}
],
"frameworks": [
{
"name": "playwright",
"version": "1.58.2",
"category": "testing"
}
],
"packageManager": "npm",
"runtime": null
},
"build": {
"buildCommand": null,
"testCommand": null,
"lintCommand": null,
"devCommand": null,
"scripts": {}
},
"conventions": {
"namingStyle": null,
"importStyle": null,
"testPattern": null,
"fileOrganization": null
},
"structure": {
"isMonorepo": false,
"workspaces": [],
"mainDirectories": [
"docs",
"scripts"
],
"gitBranches": {
"defaultBranch": "gbpark-node",
"branchingStrategy": null
}
},
"customNotes": [],
"directoryMap": {
"ai-assistant": {
"path": "ai-assistant",
"purpose": null,
"fileCount": 5,
"lastAccessed": 1777285161317,
"keyFiles": [
"Dockerfile.win",
"package-lock.json",
"package.json",
"README.md"
]
},
"backend": {
"path": "backend",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1777285161317,
"keyFiles": []
},
"backend-node": {
"path": "backend-node",
"purpose": null,
"fileCount": 14,
"lastAccessed": 1777285161330,
"keyFiles": [
"API_연동_가이드.md",
"API_키_정리.md",
"install-multer.js",
"jest.config.js",
"nodemon.json"
]
},
"backend-spring": {
"path": "backend-spring",
"purpose": null,
"fileCount": 4,
"lastAccessed": 1777285161331,
"keyFiles": [
"build.gradle",
"gradlew",
"gradlew.bat",
"settings.gradle"
]
},
"db": {
"path": "db",
"purpose": null,
"fileCount": 2,
"lastAccessed": 1777285161332,
"keyFiles": [
"00-create-roles.sh",
"migrate_company13_export.sh"
]
},
"docker": {
"path": "docker",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1777285161332,
"keyFiles": []
},
"docs": {
"path": "docs",
"purpose": "Documentation",
"fileCount": 33,
"lastAccessed": 1777285161333,
"keyFiles": [
"backend-analysis-README.md",
"backend-analysis-response.json",
"backend-api-route-mapping.md",
"backend-architecture-analysis.md",
"backend-architecture-detailed-analysis.md"
]
},
"frontend": {
"path": "frontend",
"purpose": null,
"fileCount": 26,
"lastAccessed": 1777285161333,
"keyFiles": [
"admin-test-result.md",
"approval-box-result.png",
"components.json",
"cosmic-preview.html",
"eslint.config.mjs"
]
},
"k8s": {
"path": "k8s",
"purpose": null,
"fileCount": 10,
"lastAccessed": 1777285161334,
"keyFiles": [
"backend-node.yaml",
"backend-spring.yaml",
"configmap.yaml",
"deploy.sh",
"frontend.yaml"
]
},
"mcp-agent-orchestrator": {
"path": "mcp-agent-orchestrator",
"purpose": null,
"fileCount": 4,
"lastAccessed": 1777285161335,
"keyFiles": [
"package-lock.json",
"package.json",
"README.md",
"tsconfig.json"
]
},
"notes": {
"path": "notes",
"purpose": null,
"fileCount": 0,
"lastAccessed": 1777285161337,
"keyFiles": []
},
"scripts": {
"path": "scripts",
"purpose": "Build/utility scripts",
"fileCount": 11,
"lastAccessed": 1777285161337,
"keyFiles": [
"add-modal-ids.py",
"analyze-company-info-layout.js",
"browser-test-admin-switch-button.js",
"browser-test-customer-crud.js",
"browser-test-customer-via-menu.js"
]
},
"test-output": {
"path": "test-output",
"purpose": null,
"fileCount": 2,
"lastAccessed": 1777285161338,
"keyFiles": [
"screen-149-field-type-verification-guide.md",
"unified-field-type-config-panel-test-guide.md"
]
},
"test-results": {
"path": "test-results",
"purpose": null,
"fileCount": 1,
"lastAccessed": 1777285161338,
"keyFiles": []
},
"_pipeline_backup": {
"path": "_pipeline_backup",
"purpose": null,
"fileCount": 1,
"lastAccessed": 1777285161339,
"keyFiles": [
"pipeline-state.json"
]
},
"ai-assistant\\src": {
"path": "ai-assistant\\src",
"purpose": "Source code",
"fileCount": 1,
"lastAccessed": 1777285161340,
"keyFiles": [
"app.js"
]
},
"backend-node\\data": {
"path": "backend-node\\data",
"purpose": "Data files",
"fileCount": 0,
"lastAccessed": 1777285161341,
"keyFiles": []
},
"backend-spring\\build": {
"path": "backend-spring\\build",
"purpose": "Build output",
"fileCount": 1,
"lastAccessed": 1777285161341,
"keyFiles": [
"resolvedMainClassName"
]
},
"backend-spring\\src": {
"path": "backend-spring\\src",
"purpose": "Source code",
"fileCount": 0,
"lastAccessed": 1777285161342,
"keyFiles": []
},
"db\\migrations": {
"path": "db\\migrations",
"purpose": "Database migrations",
"fileCount": 16,
"lastAccessed": 1777285161343,
"keyFiles": [
"046_MIGRATION_FIX.md",
"046_QUICK_FIX.md",
"README_1003.md"
]
},
"db\\scripts": {
"path": "db\\scripts",
"purpose": "Build/utility scripts",
"fileCount": 1,
"lastAccessed": 1777285161343,
"keyFiles": [
"README_cleanup.md"
]
},
"frontend\\app": {
"path": "frontend\\app",
"purpose": "Application code",
"fileCount": 5,
"lastAccessed": 1777285161344,
"keyFiles": [
"favicon.ico",
"globals.css",
"layout.tsx"
]
},
"frontend\\components": {
"path": "frontend\\components",
"purpose": "UI components",
"fileCount": 1,
"lastAccessed": 1777285161345,
"keyFiles": [
"GlobalFileViewer.tsx"
]
},
"mcp-agent-orchestrator\\src": {
"path": "mcp-agent-orchestrator\\src",
"purpose": "Source code",
"fileCount": 1,
"lastAccessed": 1777285161345,
"keyFiles": [
"index.ts"
]
}
},
"hotPaths": [
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\security\\SecurityConfig.java",
"accessCount": 10,
"lastAccessed": 1777297528541,
"type": "file"
},
{
"path": "frontend\\components\\layout\\AdminPageRenderer.tsx",
"accessCount": 8,
"lastAccessed": 1777297133296,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\resources\\application.yml",
"accessCount": 6,
"lastAccessed": 1777296723408,
"type": "file"
},
{
"path": "docker-compose.backend.win.yml",
"accessCount": 6,
"lastAccessed": 1777328965297,
"type": "file"
},
{
"path": "",
"accessCount": 6,
"lastAccessed": 1777329340127,
"type": "directory"
},
{
"path": "backend-spring\\src",
"accessCount": 5,
"lastAccessed": 1777296597185,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\service\\AiAssistantProxyService.java",
"accessCount": 3,
"lastAccessed": 1777296304775,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\ai\\health\\OpenClawHealthIndicator.java",
"accessCount": 3,
"lastAccessed": 1777296500455,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\ai\\client\\OpenClawClient.java",
"accessCount": 3,
"lastAccessed": 1777297100879,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\controller\\AiAssistantProxyController.java",
"accessCount": 2,
"lastAccessed": 1777292122594,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\ai\\config\\OpenClawProperties.java",
"accessCount": 2,
"lastAccessed": 1777296453350,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\ai\\exception\\OpenClawException.java",
"accessCount": 2,
"lastAccessed": 1777296454246,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp",
"accessCount": 2,
"lastAccessed": 1777296462858,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\config\\MyBatisConfig.java",
"accessCount": 2,
"lastAccessed": 1777296476543,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V002__create_ai_agents.sql",
"accessCount": 2,
"lastAccessed": 1777296498694,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V004__create_ai_agent_group_members.sql",
"accessCount": 2,
"lastAccessed": 1777296499056,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V005__create_ai_agent_api_keys.sql",
"accessCount": 2,
"lastAccessed": 1777296499857,
"type": "file"
},
{
"path": "frontend",
"accessCount": 2,
"lastAccessed": 1777296636910,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V001__create_ai_llm_providers.sql",
"accessCount": 2,
"lastAccessed": 1777297213582,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources",
"accessCount": 2,
"lastAccessed": 1777297282052,
"type": "directory"
},
{
"path": "docker-compose.frontend.win.yml",
"accessCount": 2,
"lastAccessed": 1777328980655,
"type": "directory"
},
{
"path": "ai-assistant\\src\\app.js",
"accessCount": 1,
"lastAccessed": 1777291729219,
"type": "file"
},
{
"path": "Jenkinsfile",
"accessCount": 1,
"lastAccessed": 1777292137142,
"type": "file"
},
{
"path": "frontend\\docs\\AI_어시스턴트_메뉴_등록_가이드.md",
"accessCount": 1,
"lastAccessed": 1777292137475,
"type": "file"
},
{
"path": "ai-assistant\\package.json",
"accessCount": 1,
"lastAccessed": 1777292156893,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java",
"accessCount": 1,
"lastAccessed": 1777292158334,
"type": "directory"
},
{
"path": "ai-assistant\\src\\models",
"accessCount": 1,
"lastAccessed": 1777292170037,
"type": "directory"
},
{
"path": "frontend\\lib\\api\\aiAssistant",
"accessCount": 1,
"lastAccessed": 1777292171252,
"type": "directory"
},
{
"path": "ai-assistant\\.env.example",
"accessCount": 1,
"lastAccessed": 1777293988045,
"type": "file"
},
{
"path": "ai-assistant\\src\\models\\index.js",
"accessCount": 1,
"lastAccessed": 1777293989107,
"type": "file"
},
{
"path": "ai-assistant\\src\\models\\user.model.js",
"accessCount": 1,
"lastAccessed": 1777293989222,
"type": "file"
},
{
"path": "ai-assistant\\src\\models\\api-key.model.js",
"accessCount": 1,
"lastAccessed": 1777293990287,
"type": "file"
},
{
"path": "ai-assistant\\src\\models\\llm-provider.model.js",
"accessCount": 1,
"lastAccessed": 1777293990609,
"type": "file"
},
{
"path": "ai-assistant\\src\\models\\usage-log.model.js",
"accessCount": 1,
"lastAccessed": 1777293990839,
"type": "file"
},
{
"path": "ai-assistant",
"accessCount": 1,
"lastAccessed": 1777293992318,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\security",
"accessCount": 1,
"lastAccessed": 1777294130003,
"type": "directory"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V003__create_ai_agent_groups.sql",
"accessCount": 1,
"lastAccessed": 1777296304942,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V006__create_ai_agent_conversations.sql",
"accessCount": 1,
"lastAccessed": 1777296317538,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V007__create_ai_agent_messages.sql",
"accessCount": 1,
"lastAccessed": 1777296319127,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V008__create_ai_agent_usage_logs.sql",
"accessCount": 1,
"lastAccessed": 1777296323195,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V009__create_ai_agent_schedules.sql",
"accessCount": 1,
"lastAccessed": 1777296326054,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V010__create_ai_analysis_logs.sql",
"accessCount": 1,
"lastAccessed": 1777296329376,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V011__create_ai_knowledge_files.sql",
"accessCount": 1,
"lastAccessed": 1777296334986,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V012__create_quartz_tables.sql",
"accessCount": 1,
"lastAccessed": 1777296359719,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\migration\\V013__create_ai_indexes.sql",
"accessCount": 1,
"lastAccessed": 1777296364743,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\resources\\db\\cleanup\\drop_ai_assistant_db.sql",
"accessCount": 1,
"lastAccessed": 1777296381320,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\controller\\RoleController.java",
"accessCount": 1,
"lastAccessed": 1777296382933,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\dto\\ApiResponse.java",
"accessCount": 1,
"lastAccessed": 1777296431064,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\service\\AdminService.java",
"accessCount": 1,
"lastAccessed": 1777296435916,
"type": "file"
},
{
"path": "backend-spring\\src\\main\\java\\com\\erp\\controller\\AdminController.java",
"accessCount": 1,
"lastAccessed": 1777296436288,
"type": "file"
}
],
"userDirectives": []
}