diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index eca6f89..cb2d364 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -1,7 +1,8 @@
{
"permissions": {
"allow": [
- "mcp__zai-web-reader__webReader"
+ "mcp__zai-web-reader__webReader",
+ "mcp__zai-web-search__webSearchPrime"
]
}
}
diff --git a/backend/app/main.py b/backend/app/main.py
index e801280..997468e 100644
--- a/backend/app/main.py
+++ b/backend/app/main.py
@@ -213,14 +213,25 @@ async def search_stock(request: StockSearchRequest):
prompt = f"""请利用Google搜索查找 "{request.query}" 对应的上市股票信息。
返回最匹配的股票,优先返回准确匹配的公司。
-
+
+**关键要求:Symbol 必须遵循 Bloomberg 终端专用代码格式 (Ticker Only)。**
+请注意区分不同市场的代码后缀(用于确定market字段),以及某些市场的特殊代码规则(例如印度股票通常以 IN 结尾,代码可能是缩写也可能是全称,请仔细核对 Bloomberg 标准)。
+
返回格式必须是 JSON 数组,每个元素包含:
-- market: 市场代码(CH/HK/US/JP/VN),例如:腾讯是 HK,茅台是 CH,英伟达是 US。
-- symbol: 股票代码(如果是CH,通常是6位数字;HK是5位;US是字母)。
+- market: 市场代码(CH/HK/US/JP/VN/IN/EU等)。
+- symbol: **Bloomberg标准代码** (仅Ticker,不要包含后缀)。
+ - 香港: "700" (不要写00700)
+ - 中国: "600519"
+ - 美国: "NVDA"
+ - 日本: "7203"
+ - 印度: "UBBL" (例如 United Breweries,不要只写 UBL)
+ - 欧洲: "NESN"
- company_name: 公司简称。
示例:
-[{{"market": "HK", "symbol": "00700", "company_name": "腾讯控股"}}]
+[{{"market": "HK", "symbol": "700", "company_name": "腾讯控股"}},
+ {{"market": "US", "symbol": "NVDA", "company_name": "英伟达"}},
+ {{"market": "IN", "symbol": "UBBL", "company_name": "United Breweries"}}]
请直接返回 JSON,不要添加任何其他文字。最多返回5个结果。"""
diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx
index 1d2f9fa..1796853 100644
--- a/frontend/src/app/page.tsx
+++ b/frontend/src/app/page.tsx
@@ -54,8 +54,8 @@ function HomeInner() {
// Close right sidebar on new selection
setIsRightSidebarOpen(false)
- // 如果没有传入数据源,则根据市场设置默认值
- const targetDataSource = dataSource || (company.market === 'CN' ? 'Tushare' : 'iFinD')
+ // 默认数据源强制为 Bloomberg
+ const targetDataSource = dataSource || 'Bloomberg'
setSelectedDataSource(targetDataSource)
}
@@ -122,7 +122,7 @@ function HomeInner() {
股票分析
- 输入公司名称或股票代码,开始全面的AI驱动的分析。支持中国、香港、美国、日本、越南的公司分析。
+ 输入公司名称或股票代码,开始全面的AI驱动的分析。支持 Bloomberg 覆盖的全球市场所有标的。
diff --git a/frontend/src/components/nav-header.tsx b/frontend/src/components/nav-header.tsx
index 1beff06..f9188c8 100644
--- a/frontend/src/components/nav-header.tsx
+++ b/frontend/src/components/nav-header.tsx
@@ -3,7 +3,6 @@
import Link from "next/link"
import { MonitorPlay } from "lucide-react"
import { useRouter, useSearchParams } from "next/navigation"
-import { HeaderSearch } from "@/components/header-search"
import { useEffect, useState, Suspense } from "react"
import {
Select,
@@ -255,10 +254,6 @@ function NavHeaderInner() {
-
-
-
-
{/* Portal Target for Dynamic Content */}
diff --git a/frontend/src/components/search-stock.tsx b/frontend/src/components/search-stock.tsx
index 902332e..f2b6aa7 100644
--- a/frontend/src/components/search-stock.tsx
+++ b/frontend/src/components/search-stock.tsx
@@ -17,20 +17,21 @@ interface SearchStockProps {
const DATA_SOURCES = {
CN: [
+ { value: "Bloomberg", label: "Bloomberg" },
{ value: "Tushare", label: "Tushare (CN)" },
- { value: "iFinD", label: "iFinD" },
- { value: "Bloomberg", label: "Bloomberg" }
+ { value: "iFinD", label: "iFinD" }
],
GLOBAL: [
- { value: "iFinD", label: "iFinD" },
- { value: "Bloomberg", label: "Bloomberg" }
+ { value: "Bloomberg", label: "Bloomberg" },
+ { value: "iFinD", label: "iFinD" }
]
}
function SearchResultItem({ result, onSelect }: { result: SearchResult, onSelect: (r: SearchResult, ds: string) => void }) {
- // 默认数据源逻辑:CN -> Tushare, 其他 -> iFinD
- const defaultSource = result.market === "CN" ? "Tushare" : "iFinD"
+ // 默认数据源逻辑:Bloomberg
+ const defaultSource = "Bloomberg"
const [source, setSource] = useState(defaultSource)
+ const [symbol, setSymbol] = useState(result.symbol) // Editable symbol state
// 根据市场获取可用数据源列表
const availableSources = result.market === "CN" ? DATA_SOURCES.CN : DATA_SOURCES.GLOBAL
@@ -41,15 +42,19 @@ function SearchResultItem({ result, onSelect }: { result: SearchResult, onSelect
{/* 顶部:公司信息 */}
-
+
{result.company_name}
-
- {result.symbol}
-
+
+ setSymbol(e.target.value)}
+ className="h-7 text-xs font-mono bg-background/50 border-input/60"
+ />
+
-
+
{result.market}
@@ -73,7 +78,7 @@ function SearchResultItem({ result, onSelect }: { result: SearchResult, onSelect