특정 uid로 실제 도구·모델 루프를 돌려 호출된 도구·토큰·속도·캐시 히트를 보고하는 /debug/chatToolsSheet, /debug/chatProbe(Sheet) 엔드포인트를 추가한다 (요청별 model 오버라이드로 A/B 가능). prod에 같은 검증을 돌리는 scripts/chat-tools-sheet.ts도 추가한다. 무인증 + 임의 uid의 개인 데이터를 노출하는 검수용 임시 엔드포인트다.
24 lines
1.0 KiB
TypeScript
24 lines
1.0 KiB
TypeScript
/**
|
|
* prod Firebase Admin 부트스트랩(side-effect 모듈).
|
|
*
|
|
* 반드시 src/* 모듈보다 "먼저" import해야 한다 — 그래야 src/firebase의
|
|
* initializeApp()가 재실행되지 않고 여기서 만든 앱(projectId·databaseURL 지정)을
|
|
* 재사용한다. 자격증명은 ADC(applicationDefault)를 쓴다:
|
|
* gcloud auth application-default login
|
|
* 또는 GOOGLE_APPLICATION_CREDENTIALS=<서비스계정.json>
|
|
*
|
|
* 도구는 RTDB를 쓰지 않지만 src/firebase가 getDatabase()를 호출하므로
|
|
* databaseURL이 없으면 import 시점에 throw한다 — 그래서 형식상 URL을 채워준다.
|
|
*/
|
|
import { initializeApp, getApps } from "firebase-admin/app";
|
|
|
|
const projectId = process.env.FIREBASE_PROJECT ?? process.env.GCLOUD_PROJECT ?? "mmday-panit";
|
|
const databaseURL =
|
|
process.env.FIREBASE_DATABASE_URL ?? `https://${projectId}-default-rtdb.firebaseio.com`;
|
|
|
|
if (getApps().length === 0) {
|
|
initializeApp({ projectId, databaseURL });
|
|
}
|
|
|
|
export const BOOTSTRAP_PROJECT = projectId;
|