도메인 정리: invion.com → invyone.com 전체 일괄 치환 + 매핑 문서화
Build & Deploy to K8s / build-and-deploy (push) Has been cancelled
Build & Deploy to K8s / build-and-deploy (push) Has been cancelled
운영 도메인이 실제로는 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>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# 도메인 매핑 (운영/개발 환경)
|
||||
|
||||
> ⚠️ AI 에이전트와 신규 개발자가 헷갈리지 않도록 영구 기록.
|
||||
> 변경 시 반드시 본 문서 + `.cursor/rules/api-client-usage.mdc` + `.cursor/rules/project-conventions.mdc` 를 함께 갱신.
|
||||
|
||||
## 운영 환경
|
||||
|
||||
| 역할 | 도메인 | 비고 |
|
||||
|---|---|---|
|
||||
| Frontend (정식) | `solution.invyone.com` | 사용자 진입 URL |
|
||||
| Frontend (alias) | `v1.invyone.com` | 같은 frontend, 백업/구버전 alias |
|
||||
| Backend Spring API | `api.invyone.com` | `https://api.invyone.com/api/...` |
|
||||
| Backend Node API | `node-api.invyone.com` | (legacy / 일부 endpoint) |
|
||||
|
||||
DNS 검증 (확인 일자: 2026-04-28)
|
||||
- `solution.invyone.com` → 200
|
||||
- `v1.invyone.com` → 200
|
||||
- `api.invyone.com` → 200
|
||||
- `node-api.invyone.com` → 200
|
||||
|
||||
## 폐기된 도메인 (사용 금지)
|
||||
|
||||
| 도메인 | 상태 |
|
||||
|---|---|
|
||||
| `v1.invion.com` | DNS 미존재. 이전 코드/문서에 박혀 있어 2026-04-28 일괄 정리 |
|
||||
| `api.invion.com` | 동일 |
|
||||
| `node-api.invion.com` | 동일 |
|
||||
| `solution.invion.com` | 동일 |
|
||||
|
||||
> "invion" → "invyone" 일괄 치환 완료. 신규 코드/문서는 절대 `invion.com` 사용 금지.
|
||||
|
||||
## 개발 환경
|
||||
|
||||
| 역할 | 주소 | 비고 |
|
||||
|---|---|---|
|
||||
| Frontend dev | `http://localhost:9771` | docker-compose.frontend.win.yml |
|
||||
| Backend Spring | `http://localhost:8081` | docker-compose.backend.win.yml |
|
||||
|
||||
## 인증 정보
|
||||
|
||||
### 로컬 (`.cursor/rules/web-verify-login.mdc`)
|
||||
- 아이디: `wace` / 비밀번호: `qlalfqjsgh11` — **로컬 전용**
|
||||
|
||||
### 운영 (`solution.invyone.com`)
|
||||
- 운영 비밀번호는 코드/문서에 평문 저장 금지.
|
||||
- 사용자에게 직접 문의해서 입력 받을 것.
|
||||
- AI 에이전트는 로컬 비밀번호로 운영 로그인 시도 X.
|
||||
|
||||
## API 호출 흐름
|
||||
|
||||
```
|
||||
브라우저 (solution.invyone.com)
|
||||
↓ apiClient (lib/api/client.ts)
|
||||
↓ baseURL = https://${currentHost}/api (1순위, *.invyone.com 자동 매칭)
|
||||
운영 Traefik (k8s/traefik-dynamic.yaml)
|
||||
↓ Host(`solution.invyone.com`) && PathPrefix(`/api`) → backend
|
||||
Spring Boot (api.invyone.com 직접 OR Traefik 내부)
|
||||
```
|
||||
|
||||
`apiClient` 우선순위:
|
||||
1. `*.invyone.com` 호스트 → `https://${currentHost}/api` (서브도메인 테넌트 대응)
|
||||
2. `v1.invyone.com` / `solution.invyone.com` 직접 매칭 → `https://api.invyone.com/api`
|
||||
3. `NEXT_PUBLIC_API_URL` 환경변수
|
||||
4. `http://localhost:8081/api` (로컬 기본)
|
||||
@@ -241,8 +241,8 @@ cors:
|
||||
if (currentHost.endsWith(".invyone.com")) {
|
||||
return `https://${currentHost}/api`;
|
||||
}
|
||||
// 2) (레거시) invion.com 메인 도메인
|
||||
if (currentHost === "v1.invion.com") return "https://api.invion.com/api";
|
||||
// 2) (레거시) invyone.com 메인 도메인
|
||||
if (currentHost === "v1.invyone.com") return "https://api.invyone.com/api";
|
||||
// 3) NEXT_PUBLIC_API_URL (docker-compose 주입)
|
||||
// 4) localhost 기본값
|
||||
```
|
||||
|
||||
@@ -327,7 +327,7 @@ const res = await getFlowDefinitions(); // ✅
|
||||
| 환경 | 프론트엔드 | 백엔드 API |
|
||||
|------|-----------|-----------|
|
||||
| 로컬 개발 | localhost:9771 | localhost:8080/api |
|
||||
| 운영 | v1.invion.com | api.invion.com/api |
|
||||
| 운영 | v1.invyone.com | api.invyone.com/api |
|
||||
|
||||
### 5.5 상태 관리 체계
|
||||
|
||||
|
||||
@@ -1695,8 +1695,8 @@ const getCorsOrigin = () => {
|
||||
return [
|
||||
'http://localhost:9771',
|
||||
'http://39.117.244.52:5555',
|
||||
'https://v1.invion.com',
|
||||
'https://api.invion.com'
|
||||
'https://v1.invyone.com',
|
||||
'https://api.invyone.com'
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -699,9 +699,9 @@ const getApiBaseUrl = (): string => {
|
||||
// 환경변수 우선
|
||||
if (process.env.NEXT_PUBLIC_API_URL) return process.env.NEXT_PUBLIC_API_URL;
|
||||
|
||||
// 프로덕션: v1.invion.com → api.invion.com
|
||||
if (currentHost === "v1.invion.com") {
|
||||
return "https://api.invion.com/api";
|
||||
// 프로덕션: v1.invyone.com → api.invyone.com
|
||||
if (currentHost === "v1.invyone.com") {
|
||||
return "https://api.invyone.com/api";
|
||||
}
|
||||
|
||||
// 로컬: localhost:9771 → localhost:8080
|
||||
|
||||
Reference in New Issue
Block a user