[chore] negodata: CORS client_url 예시 + 시드 정비 + README DB 절차 갱신
- config.local.toml.example: client_url 추가(CORS 허용 origin), DB명 negosium_db 정정 - postgres-init: 03-seed.sql → 03-seed-negodata.sql (negodata 전용 시드) - README: DB 준비 절차(스키마+learning+시드) 갱신 - docker-compose 정비 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
2470183e0f
commit
ece24f4067
@ -38,9 +38,10 @@ PostgreSQL (외부, 5432)
|
||||
## 빠른 시작
|
||||
|
||||
```bash
|
||||
# 1) DB 준비 (최초 1회) — 사용할 PostgreSQL 에 스키마 적용
|
||||
psql -h 127.0.0.1 -p 5432 -U postgres -f postgres-init/01-schema.sql
|
||||
# (negosium_db / negodata_db + tbl_account 생성)
|
||||
# 1) DB 준비 (최초 1회) — 사용할 PostgreSQL 에 스키마 + 시드 적용
|
||||
psql -h 127.0.0.1 -p 5432 -U postgres -f postgres-init/01-schema.sql # negosium_db + 도메인 schema
|
||||
psql -h 127.0.0.1 -p 5432 -U postgres -f postgres-init/02-learning-schema.sql # agent learning 스키마
|
||||
psql -h 127.0.0.1 -p 5432 -U postgres -f postgres-init/03-seed-negodata.sql # negodata 전용 시드
|
||||
|
||||
# 2) 백엔드 기동
|
||||
docker compose up -d # 두 backend (DB 는 config 대로 외부 연결)
|
||||
|
||||
@ -9,8 +9,9 @@
|
||||
# agent 서버: http://localhost:9500/docs
|
||||
#
|
||||
# DB 준비(최초 1회): postgres-init 의 SQL 을 대상 DB 에 적용한다.
|
||||
# psql -h <host> -p <port> -U <user> -f postgres-init/01-schema.sql (negosium_db/negodata_db + tbl_account)
|
||||
# psql -h <host> -p <port> -U <user> -f postgres-init/01-schema.sql (단일 negosium_db + 도메인별 schema)
|
||||
# psql -h <host> -p <port> -U <user> -f postgres-init/02-learning-schema.sql (agent learning 스키마)
|
||||
# psql -h <host> -p <port> -U <user> -f postgres-init/03-seed-negodata.sql (negodata 전용 시드: admin / admin1234, company.users)
|
||||
|
||||
services:
|
||||
negosium-backend:
|
||||
@ -38,6 +39,17 @@ services:
|
||||
- "host.docker.internal:host-gateway"
|
||||
restart: unless-stopped
|
||||
|
||||
# negodata 프론트 (Vite dev 서버).
|
||||
negodata-front:
|
||||
build: ./negodata/front
|
||||
container_name: negodata-front
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- ./negodata/front:/app
|
||||
- /app/node_modules
|
||||
restart: unless-stopped
|
||||
|
||||
# 협상 에이전트 (negosium_db 공유, learning 스키마 사용).
|
||||
agent:
|
||||
build: ./agent
|
||||
|
||||
@ -7,6 +7,7 @@ port = 9400
|
||||
process_count = 1
|
||||
is_ssl = false
|
||||
is_test = true
|
||||
client_url = "http://localhost:3000" # CORS 허용
|
||||
|
||||
[LogConfig]
|
||||
print_console = true
|
||||
@ -16,7 +17,7 @@ log_level = "debug"
|
||||
# 관리형 DB(RDS/Aurora/Azure)는 host 에 엔드포인트, sslmode="require".
|
||||
[MainDBConfig]
|
||||
db_type = "postgresql"
|
||||
name = "negodata_db"
|
||||
name = "negosium_db"
|
||||
write_host = "127.0.0.1"
|
||||
write_port = 5432
|
||||
write_id = "<DB_USER>"
|
||||
|
||||
42
postgres-init/03-seed-negodata.sql
Normal file
42
postgres-init/03-seed-negodata.sql
Normal file
@ -0,0 +1,42 @@
|
||||
-- negodata 전용 로컬/개발 시드 — company.companies + company.users 만 채운다.
|
||||
-- (negodata 로그인은 company.users 를 쓴다. negosium 의 company.tbl_account 는 대상이 아님.)
|
||||
-- 전체/공용 시드가 아니다. 재실행 안전(WHERE NOT EXISTS) — 운영 DB 에는 적용하지 않는다.
|
||||
-- admin 계정은 negodata 프론트 로그인 폼 기본값(admin / admin1234)에 대응한다.
|
||||
-- 적용(도커 postgres): docker exec -i negosium-db psql -U postgres -d negosium_db < postgres-init/03-seed-negodata.sql
|
||||
|
||||
\connect negosium_db
|
||||
|
||||
-- 회사 1개 (고정 UUID). status 1=active.
|
||||
INSERT INTO company.companies (company_id, name, email, status)
|
||||
SELECT '00000000-0000-0000-0000-000000000001', 'Negosium', 'admin@negosium.dev', 1
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM company.companies WHERE company_id = '00000000-0000-0000-0000-000000000001'
|
||||
);
|
||||
|
||||
-- admin 유저. password 는 'admin1234' 의 bcrypt 해시(백엔드 GetHashedPW 와 동일 알고리즘, checkpw 로 검증됨).
|
||||
-- role 2=manager (UserRole.MANAGER; ADMIN 코드는 enum 에 없어 최상위인 MANAGER 사용). status 1=active.
|
||||
INSERT INTO company.users (user_id, company_id, id, password, name, email, last_accessed_at, status, role)
|
||||
SELECT '00000000-0000-0000-0000-000000000002',
|
||||
'00000000-0000-0000-0000-000000000001',
|
||||
'admin',
|
||||
'$2b$12$oq5qlcYQ4BNywh9iS7cF1OBP6kGBvB6SfsGgVknCiJ6lMSW5cjW.C',
|
||||
'admin', 'admin@negosium.dev', now(), 1, 2
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM company.users WHERE id = 'admin' AND deleted = FALSE
|
||||
);
|
||||
|
||||
-- 데모 상품 5개. company_id/user_id 는 'admin' 유저의 소속에서 가져온다
|
||||
-- (clean DB=Negosium, 테스트가 남긴 DB=그 회사 — 어느 쪽이든 admin 으로 로그인하면 보이도록).
|
||||
-- category 는 프론트 categoriesList 와 맞춤. quantity_unit 은 ORM(String) 기준 varchar 라벨.
|
||||
INSERT INTO partner.items (item_id, company_id, user_id, name, code, price, category, model_name, spec, moq, lead_time, manufacturer, made_in, quantity_unit, vat_yn, delivery_fee_yn, internet_lowest_price_yn, category_type)
|
||||
SELECT v.item_id, u.company_id, u.user_id, v.name, v.code, v.price, v.category, v.model_name, v.spec, v.moq, v.lead_time, v.manufacturer, v.made_in, v.quantity_unit, v.vat_yn, v.delivery_fee_yn, FALSE, v.category_type
|
||||
FROM company.users u
|
||||
CROSS JOIN (VALUES
|
||||
('00000000-0000-0000-0000-000000000010'::uuid, '리튬인산철 배터리 모듈', 'BAT-LFP-100', 1250000::bigint, '에너지/배터리', 'LFP-100A', '3.2V 100Ah', '10', 14::smallint, '한성에너지', '대한민국', 'EA', TRUE, TRUE, 1),
|
||||
('00000000-0000-0000-0000-000000000011'::uuid, '산업용 6축 로봇암', 'ROB-6AX-22', 18900000::bigint, '자동화설비', 'RX-6A', '가반하중 12kg', '1', 30::smallint, '오토메카', '일본', 'EA', TRUE, FALSE, 2),
|
||||
('00000000-0000-0000-0000-000000000012'::uuid, 'MEMS 가속도 센서', 'SEN-MEMS-3A', 8500::bigint, '반도체소자/센서', 'MA-3X', '±16g 3축', '100', 7::smallint, '센서텍', '대만', 'EA', TRUE, TRUE, 3),
|
||||
('00000000-0000-0000-0000-000000000013'::uuid, '탄소섬유 시트', 'MAT-CF-12', 320000::bigint, '신소재', 'CF-T700', '0.5T 1000x1000', '5', 21::smallint, '카본소재', '대한민국', 'BOX', TRUE, FALSE, 4),
|
||||
('00000000-0000-0000-0000-000000000014'::uuid, '광트랜시버 SFP+ 10G', 'OPT-SFP-10G', 95000::bigint, '광학/통신', 'SFP-10G-LR', '10km LC', '20', 10::smallint, '옵틱링크', '중국', 'EA', TRUE, TRUE, 5)
|
||||
) AS v(item_id, name, code, price, category, model_name, spec, moq, lead_time, manufacturer, made_in, quantity_unit, vat_yn, delivery_fee_yn, category_type)
|
||||
WHERE u.id = 'admin' AND u.deleted = FALSE
|
||||
AND NOT EXISTS (SELECT 1 FROM partner.items i WHERE i.item_id = v.item_id);
|
||||
Loading…
Reference in New Issue
Block a user