stocks: 미국 주식 지원(개별 종목) + datacollect LLM 직접 호출 + 백엔드 기본 NAS

미국 주식 (개별 종목 조회 — add/check/judge/analysis/position):
- marketUtils: KR(6자리)/US(티커) 시장 판별, 통화·시총 포매팅($/원, B·T/억·조)
- yahooClient: US는 raw 티커(.KQ/.KS 미부착), 심볼 라우팅 분리
- yahooFundamentals: Yahoo quoteSummary(무키) cookie+crumb 핸드셰이크로 ROE/PER/PBR/마진/성장/부채 fetch (429·crumb 하드닝)
- fundamentalsRouter: 심볼별 Naver(KR)/Yahoo(US) 분기
- criteriaEval: market-aware — US는 유보율 미보고라 유동성·안정성을 부채비율(D/E)·시총($B)으로 대체
- types: Stock.market 필드; slashStocks/llmJudge: 통화·라우팅·프롬프트 US 대응
- 테스트: stocksMarket + criteriaEval US 케이스 (전체 통과)

datacollect/llm.ts: LLM을 확장(PC)에서 직접 호출(과거 bridge /api/lm 프록시 제거)
 → 백엔드 NAS 이전 시 PC→NAS→PC 실패 제거, 스크래핑=NAS·LLM 추론=PC 분리

package.json: datacollectBridge 기본값 nas + https://dc.koritips.com; 버전 2.2.261

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-01 18:43:04 +09:00
parent 4288b212d5
commit e6d780be61
13 changed files with 531 additions and 119 deletions
+6 -6
View File
@@ -2,7 +2,7 @@
"name": "astra",
"displayName": "Astra",
"description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.",
"version": "2.2.259",
"version": "2.2.261",
"publisher": "g1nation",
"license": "MIT",
"icon": "assets/icon.png",
@@ -250,18 +250,18 @@
"local",
"nas"
],
"default": "local",
"markdownDescription": "Datacollect 백엔드(Bridge)를 어디로 보낼지 선택. **`local`**(기본) = `g1nation.datacollectBridgeUrl`(로컬 `npm run bridge`). **`nas`** = `g1nation.datacollectBridgeNasUrl`(NAS의 경량 Bridge). `nas`인데 URL이 비어 있으면 안전하게 로컬로 폴백합니다."
"default": "nas",
"markdownDescription": "Datacollect 백엔드(Bridge)를 어디로 보낼지 선택. **`nas`**(기본) = `g1nation.datacollectBridgeNasUrl`(NAS 상시 구동 Bridge, 예: `https://dc.koritips.com`). **`local`** = `g1nation.datacollectBridgeUrl`(로컬 `npm run bridge` — 더 이상 권장 안 함). `nas`인데 URL이 비어 있으면 안전하게 로컬로 폴백합니다. NAS 사용 시 `datacollectBridgeNasToken`(= Bridge `BRIDGE_AUTH_TOKEN`)도 설정 필요."
},
"g1nation.datacollectBridgeUrl": {
"type": "string",
"default": "http://127.0.0.1:3002",
"description": "[local 타깃] Wiki/Datacollect MCP Bridge URL. /benchmark, /youtube, /wikify chat slash commands route here. The Bridge must be running (`npm run bridge` in the Datacollect project)."
"description": "[local 타깃] Wiki/Datacollect MCP Bridge URL. /benchmark, /youtube, /wikify chat slash commands route here. The Bridge must be running (`npm run bridge` in the Datacollect project). 백엔드를 NAS로 옮긴 경우 보통 사용하지 않음 — `datacollectBridgeTarget=nas` 권장."
},
"g1nation.datacollectBridgeNasUrl": {
"type": "string",
"default": "",
"markdownDescription": "[nas 타깃] NAS에서 는 경량 Bridge URL (예: `https://your-nas-domain` 또는 `http://nas-ip:3002`). `datacollectBridgeTarget`을 `nas`로 두면 여기로 호출합니다. 비워두면 로컬로 폴백."
"default": "https://dc.koritips.com",
"markdownDescription": "[nas 타깃] NAS에서 상시 구동하는 경량 Bridge URL. 기본 `https://dc.koritips.com`(DSM 리버스 프록시 → 컨테이너 :3002). `datacollectBridgeTarget`을 `nas`로 두면 여기로 호출합니다. 비워두면 로컬로 폴백."
},
"g1nation.datacollectBridgeNasToken": {
"type": "string",