fix: replace hardcoded 192.168.1.122 with node122 (hostname resolves via /etc/hosts to LAN or EasyTier)
- mo_config.py: xiaoguo_host=node122, xiaoguo_api_url property - market_screener.py, xiaoguo_scanner.py, xiaoguo_news_processor.py: use mo_config or node122 fallback - scripts/intraday_health_check.py, scripts/ocr_client.py: node122 - EasyTier connects at 10.144.144.2 when off-LAN
This commit is contained in:
Binary file not shown.
+7
-1
@@ -9,13 +9,19 @@ WEB_DASHBOARD_DIR = Path(__file__).resolve().parent.parent.parent / "web-dashboa
|
||||
DATA_DIR = WEB_DASHBOARD_DIR / "data"
|
||||
MARKET_JSON = DATA_DIR / "market.json"
|
||||
POOL_JSON = DATA_DIR / "candidate_pool.json"
|
||||
XIAOGUO_API = "http://192.168.1.122:18003/v1/chat/completions"
|
||||
XIAOGUO_MODEL = "Qwen3.6-27B-OptiQ-4bit"
|
||||
API_TIMEOUT = 60
|
||||
MAX_SECTORS = 5
|
||||
MAX_CANDIDATES_POOL = 60
|
||||
TENCENT_URL = "http://qt.gtimg.cn/q="
|
||||
|
||||
def _get_xiaoguo_url():
|
||||
try:
|
||||
from mo_config import get_config
|
||||
return get_config().xiaoguo_api_url
|
||||
except Exception:
|
||||
return "http://node122:18003/v1/chat/completions" # legacy fallback
|
||||
|
||||
|
||||
def load_json(path):
|
||||
try:
|
||||
|
||||
+12
-1
@@ -87,7 +87,18 @@ class MoConfig:
|
||||
|
||||
hk_rate_fallback: float = 0.87 # 港币→人民币 fallback 汇率
|
||||
|
||||
# ── 服务配置 ──────────────────────────────────────────────────
|
||||
# ── 小果 LLM 端点(用机器名,/etc/hosts 自动解析 LAN/EasyTier)─
|
||||
# node122 = 192.168.1.122 (LAN) / 10.144.144.2 (EasyTier)
|
||||
xiaoguo_host: str = "node122"
|
||||
xiaoguo_port: int = 18003
|
||||
|
||||
@property
|
||||
def xiaoguo_url(self) -> str:
|
||||
return f"http://{self.xiaoguo_host}:{self.xiaoguo_port}"
|
||||
|
||||
@property
|
||||
def xiaoguo_api_url(self) -> str:
|
||||
return f"{self.xiaoguo_url}/v1/chat/completions"
|
||||
|
||||
port: int = field(default_factory=lambda: int(os.environ.get("PORT", "8899")))
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ def check_xiaoguo():
|
||||
# 可能是小果离线了,不报严重,记录即可
|
||||
return
|
||||
# API — 不通时scanner已降级为unknown,不影响
|
||||
check_http("http://192.168.1.122:18003/v1/models")
|
||||
check_http("http://node122:18003/v1/models")
|
||||
|
||||
|
||||
PORTFOLIO_PATH = str(DATA / "portfolio.json")
|
||||
|
||||
@@ -13,7 +13,7 @@ import json
|
||||
import base64
|
||||
import urllib.request
|
||||
|
||||
OCR_URL = "http://192.168.1.122:18003/v1/chat/completions"
|
||||
OCR_URL = "http://node122:18003/v1/chat/completions"
|
||||
OCR_MODEL = "GLM-OCR-8bit"
|
||||
|
||||
def ocr_image(image_path, prompt="请详细识别这张图片中的所有文字,包括数字、股票名称、金额等。用中文回复。"):
|
||||
|
||||
@@ -25,7 +25,14 @@ except ImportError:
|
||||
|
||||
DATA_DIR = Path(__file__).parent / "data"
|
||||
DB_PATH = DATA_DIR / "mofin.db"
|
||||
XIAOGUO_API = "http://192.168.1.122:18003/v1/chat/completions"
|
||||
XIAOGUO_API = "http://node122:18003/v1/chat/completions" # fallback, /etc/hosts resolves to LAN or EasyTier
|
||||
|
||||
def _get_xiaoguo_url():
|
||||
try:
|
||||
from mo_config import get_config
|
||||
return get_config().xiaoguo_api_url
|
||||
except Exception:
|
||||
return XIAOGUO_API
|
||||
XIAOGUO_MODEL = "Qwen3.6-27B-MTPLX-Optimized-Speed"
|
||||
MAX_ARTICLES = 5 # 每次最多分析篇数(实测5篇12s)
|
||||
|
||||
@@ -117,7 +124,7 @@ def call_xiaoguo(articles):
|
||||
clean_proxy()
|
||||
opener = urllib.request.build_opener(urllib.request.ProxyHandler({}))
|
||||
req = urllib.request.Request(
|
||||
XIAOGUO_API, data=payload,
|
||||
_get_xiaoguo_url(), data=payload,
|
||||
headers={"Content-Type": "application/json"}, method="POST"
|
||||
)
|
||||
try:
|
||||
|
||||
+9
-2
@@ -17,7 +17,14 @@ except ImportError:
|
||||
|
||||
DATA_DIR = Path(__file__).parent / "data"
|
||||
DB_PATH = DATA_DIR / "mofin.db"
|
||||
XIAOGUO_API = "http://192.168.1.122:18003/v1/chat/completions"
|
||||
XIAOGUO_API = "http://node122:18003/v1/chat/completions" # fallback, /etc/hosts resolves to LAN or EasyTier
|
||||
|
||||
def _get_xiaoguo_url():
|
||||
try:
|
||||
from mo_config import get_config
|
||||
return get_config().xiaoguo_api_url
|
||||
except Exception:
|
||||
return XIAOGUO_API
|
||||
XIAOGUO_MODEL = "Qwen3.6-27B-MTPLX-Optimized-Speed"
|
||||
SCAN_INTERVAL = 3600 # 同一只股1小时内不重复搜
|
||||
MAX_STOCKS_PER_RUN = 15
|
||||
@@ -221,7 +228,7 @@ def check_stock(code, name, articles):
|
||||
}).encode()
|
||||
|
||||
opener = urllib.request.build_opener(urllib.request.ProxyHandler({}))
|
||||
req = urllib.request.Request(XIAOGUO_API, data=payload,
|
||||
req = urllib.request.Request(_get_xiaoguo_url(), data=payload,
|
||||
headers={"Content-Type": "application/json"}, method="POST")
|
||||
try:
|
||||
resp = opener.open(req, timeout=30)
|
||||
|
||||
Reference in New Issue
Block a user