# AWC 다음 채팅용 MASTER PROMPT

이 ZIP은 AWC(AIWK 기반 통합 차트·연구·대시보드 시스템)의 **구현 전 최종 설계 v000**이다.
새 채팅에서는 아래 규칙을 절대 기준으로 사용한다.

## 시작 절차
1. ZIP 전체를 연다.
2. 루트 `ai_read.md`를 읽는다.
3. `MASTER_DECISIONS.md`, `MASTER_FILE_TREE.md`, `MASTER_ROADMAP.md`, `DATA_CONTRACTS.md`, `SECURITY_AND_ROLES.md`, `LEGACY_COMPATIBILITY.md`, `TEST_ACCEPTANCE.md`를 읽는다.
4. `var/www/html/api/_awc/**/ai_read.md`를 읽는다.
5. `_reference/REFERENCE_INVENTORY.md`를 읽고 필요한 원본 ZIP을 실제로 풀어 코드 근거를 확인한다.
6. 설계와 원본 코드가 충돌하면 임의로 추측하지 말고 **실제 원본 코드 + 사용자의 최신 지시**를 우선한다.
7. 사용자가 명시적으로 **“코딩 시작” / “코딩시작” / “start”**라고 말하기 전에는 구현 코드를 만들지 않는다.

## 절대 개발 원칙
- 기존 `/var/www/html/api/__yc/`는 **수정·이동·삭제하지 않는다.** 새 `_awc`가 안정화될 때까지 완전 병렬 운영한다.
- 기존 `AIWK_COMMON` 창 엔진을 사용한다. AWC 안에 drag/resize/store/auth/window-manager를 복제하지 않는다.
- `AIWK_PC`, `AIWK_EXT4`, `AIWK_RELAY`는 선택 연결부다. AWC 핵심 WEB은 이것들 없이도 동작해야 한다.
- 브라우저가 DB명/테이블명/임의 SQL을 직접 보내게 만들지 않는다. 서버의 `source_id + 허용 필드` 레지스트리만 사용한다.
- 실패 시 임의 기본값/fallback으로 성공한 척하지 않는다. 오류를 명확히 반환하고 상태를 갱신하지 않는다.
- 차트 필드 메타는 기존 CSV의 `Field Name / Field Title / Multiplier / 단위 / 소수점 / y축 min_max / SQL_EXPR / 색상`을 우선 활용한다.
- **모니터 의미값 규칙은 새 AWC에서 한글 `Field Title`에 `모니터`가 포함된 경우만 적용한다.** 영문 `Mon`만으로 자동 판단하지 않는다. 이 규칙은 고정이다.
- 모니터 필드는 해당 Alias JSON을 읽어 툴팁에 `숫자 + 사람이 이해하는 설명`을 표시하고 기본 표현은 stepline이다.
- Alias JSON이 존재한다는 이유만으로 일반 필드를 모니터 필드로 바꾸지 않는다.
- 개인 창 위치/크기/접기 상태는 기존 AIWK 방식(localStorage)을 그대로 사용한다. 일반 사용자가 움직여도 공용 배치는 바뀌지 않는다.
- 공용 Workspace/대시보드의 서버 저장·수정·배포는 `manager` 이상만 가능하다.
- 서버 권한이 최종 권한이다. 클라이언트의 `AIWK.auth.role`만 믿고 쓰기 API를 허용하지 않는다.
- AWC 역할은 서버 기준 `super_admin / manager / viewer` 3단계로 고정하고 AIWK UI 역할에 `dev / editor / guest`로 매핑한다. `host`는 서비스 계정으로 사람 3단계에서 제외한다.
- PHP API는 JSON 응답을 사용하되 DB 처리는 PHP 서버에서 한다.
- 데이터는 물리적으로 한 DB로 합치지 않는다. Data Source Registry로 논리 통합한다.
- `nssb.nssbenvref7_min` 1분 기준표를 Stage 기준 차트/편차 분석의 기준으로 사용한다.
- 기존 농가별 `/api/__yc/_rec/cfg_rec_fds/idxNNN/*.php`, `*.php_def.php`, `.bak`, 기존 CSV/JSON은 저장 형식을 바꾸지 않는다. AWC는 Adapter로 읽고 Import한다.
- 기존 설정을 AWC로 가져온 뒤 AWC Workspace로 저장할 수 있지만, AWC 새 기능을 다시 레거시 형식에 억지로 맞추지 않는다.

## 버전/납품 규칙
- 이 설계 ZIP은 `v000`이다.
- 첫 구현 ZIP은 `v001`부터 시작한다.
- 한 번에 MASTER_ROADMAP의 **한 Stage만** 구현한다. 사용자가 묶어서 진행하라고 명시한 경우에만 여러 Stage를 합친다.
- 매 Stage 완료 시 수정된 모든 폴더의 `ai_read.md`를 갱신한다.
- `ai_read.md`는 반드시 정확히 다음 5개 대분류를 유지한다.
  1. `①현재 버전`
  2. `②기준 파일`
  3. `③완료 기능`
  4. `④다음 작업`
  5. `⑤변경 이유`
- 서버 배포용 ZIP은 `/var/www/html` 기준 경로를 그대로 보존한다.
- 사용자에게는 최종 ZIP **1개만** 전달한다.
- PHP는 `php -l`, JS는 가능하면 `node --check`, ZIP은 무결성 검사를 한다.
- 실제 DB/브라우저에서 검증하지 않았다면 검증했다고 말하지 않는다.

## Stage 진행 방식
각 Stage 시작 전에:
1. 관련 원본과 현재 구현본을 다시 연다.
2. 이번 Stage의 파일 목록과 변경 범위를 짧게 설명한다.
3. 사용자 승인 범위를 넘지 않는다.
4. 구현한다.
5. 문법검사/정적검사/계약검사를 한다.
6. ai_read를 갱신한다.
7. 버전 ZIP 1개를 만든다.

## 디자인/DeepSeek 사용
시각 디자인이나 화면 전체 구도가 더 필요하면 `_deepseek/DEEPSEEK_UI_DESIGN_PROMPT.md`를 DeepSeek에 전달할 수 있다.
DeepSeek는 **디자인 제안만** 한다. 다음 항목은 바꾸면 안 된다.
- 폴더/파일 API 계약
- 권한 모델
- Data Source Registry
- 모니터 규칙
- legacy 호환 정책
- 서버 보안 규칙
DeepSeek 결과를 받으면 `_deepseek/DESIGN_HANDOFF_TEMPLATE.md` 형식으로 요약해서 AWC 구현에 반영한다.

## 최종 목표
`__yc`는 기존 농가 중심 운영/모니터링 시스템으로 유지하고, `_awc`는 AIWK 창 기반의 통합 연구/분석 Workbench로 완성한다.
사용자는 데이터소스·농가·필드를 자유롭게 선택하고 CSV 메타정보로 단위/배율/소수점/축 스케일을 자동 적용한 뒤 Line/Bar/Scatter/상관분석/Radar/추이선/3D 등의 독립 AIWK 창을 원하는 만큼 만들고 배치한다.
여러 창은 농가/기간/커서/선택을 링크할 수 있고, 관리자는 공용 Workspace를 저장·배포하며, viewer는 개인 localStorage 배치만 자유롭게 바꾼다.
최종적으로 환경·생육·생산량·출하·예측·StressIndex 등 서로 다른 데이터소스를 논리 통합하여 농가 비교, 생산성 원인 탐색, 상관분석, 3D 분석까지 수행한다.
