# 081 마이그레이션 — 회사관리 UI 메타 컬럼

작성일: 2026-04-24
작성자: gbpark
관련: Phase 3-B 회사관리 메인 화면(v9 목업) 렌더용 필드 확보

## 목적

목업 accordion row 에서 표시하는 필드 중 `COMPANY_MNG` 에 **상주해야 하는 정적 필드**만 컬럼으로 추가.
런타임 계산되는 필드(users / db_size / spark)는 별도 `CompanyStatsService` 가 집계.

## 추가 컬럼

| 컬럼 | 타입 | 기본값 | 용도 |
|---|---|---|---|
| `PLAN` | VARCHAR(20) | `'Starter'` | 과금 플랜 (`Starter` / `Standard` / `Enterprise`). 목업의 PLAN badge |
| `INDUSTRY` | VARCHAR(50) | NULL | 업종 (예: `반도체`, `제조`). 목업 accordion 의 `industry` |
| `TEMPLATES_COUNT` | INT | `0` | 프로비저닝 시 복제한 그룹 수(필수 3 + 선택 n). 정적 집계용 |
| `DB_QUOTA_GB` | INT | `20` | 회사별 DB 할당량. `db_pct` 계산 기준값 |

> 목업에 있었지만 **컬럼 안 만든 것** (기존 필드 재사용 또는 런타임):
> - `owner` → 기존 `REPRESENTATIVE_NAME` 사용
> - `brn` → 기존 `BUSINESS_REGISTRATION_NUMBER` 사용
> - `created` → 기존 `CREATED_DATE` 사용
> - `writer` → 기존 `WRITER` 사용
> - `users` / `active30` / `db_size` / `db_pct` / `spark` → 런타임 집계 (아래 문서 참조)

## SQL

```sql
-- 081: 회사관리 UI 메타 컬럼 추가
ALTER TABLE COMPANY_MNG
  ADD COLUMN IF NOT EXISTS PLAN             VARCHAR(20) DEFAULT 'Starter',
  ADD COLUMN IF NOT EXISTS INDUSTRY         VARCHAR(50),
  ADD COLUMN IF NOT EXISTS TEMPLATES_COUNT  INT         DEFAULT 0,
  ADD COLUMN IF NOT EXISTS DB_QUOTA_GB      INT         DEFAULT 20;
```

## 실행

```bash
psql -h 183.99.177.40 -U postgres -d invyone <<'SQL'
ALTER TABLE COMPANY_MNG
  ADD COLUMN IF NOT EXISTS PLAN             VARCHAR(20) DEFAULT 'Starter',
  ADD COLUMN IF NOT EXISTS INDUSTRY         VARCHAR(50),
  ADD COLUMN IF NOT EXISTS TEMPLATES_COUNT  INT         DEFAULT 0,
  ADD COLUMN IF NOT EXISTS DB_QUOTA_GB      INT         DEFAULT 20;
SQL
```

## 확인 쿼리

```sql
SELECT column_name, data_type, column_default
FROM information_schema.columns
WHERE table_name = 'company_mng'
  AND column_name IN ('plan', 'industry', 'templates_count', 'db_quota_gb')
ORDER BY column_name;
```

## 롤백

```sql
ALTER TABLE COMPANY_MNG
  DROP COLUMN IF EXISTS PLAN,
  DROP COLUMN IF EXISTS INDUSTRY,
  DROP COLUMN IF EXISTS TEMPLATES_COUNT,
  DROP COLUMN IF EXISTS DB_QUOTA_GB;
```

## 기존 API 영향

- `AdminController.listCompanies` (기존 회사관리 CRUD) — 새 컬럼 무시. 회귀 없음.
- `ProvisioningController.create` → `insertCompanyWithTenant` 에 `templates_count` 파라미터 추가됨 (`CompanyProvisioningService.initiate()` 에서 계산).
- 신규: `GET /api/admin/provisioning/companies-stats` — 목업 메인 화면 렌더용. 전 필드 + derived 집계 반환.
