功能描述 / Feature Description
新增**台湾股市(台股)**个股分析支持,采用与 #1718 (日本/韩国 suffix-only MVP)完全相同的模式 :仅放开「市场识别 + 数据路由 + Yahoo 抓取 + 类型放行 + seed 索引」,A 股专属重功能(资金流/龙虎榜/板块/市场宽度)一律按 not_supported 降级,与 jp/kr 同边界、可一行回滚。
上市(TWSE)= NNNN.TW(例 2330.TW 台积电、0050.TW 元大台湾50)
上柜(TPEx)= NNNN.TWO(例 6488.TWO 环球晶);与 KR 把 .KS+.KQ 折成一个 kr 一样,.TW+.TWO 折成一个 tw
使用场景 / Use Case
台湾用户基数大、需求高(项目已有 docs/README_CHT.md 繁中版),但目前完全无法分析台股 :grep -rn "\.TW" --include="*.py" = 0 笔;裸 6 位代码会落到 A 股语义,.TW 后缀代码则无任何识别分支。日韩 MVP 落地后,台股是同模式最自然的下一个市场。
期望实现 / Proposed Solution
镜像 #1718 的整条链路(market tag jp/kr → tw,suffix .T/.KS/.KQ → .TW/.TWO),关键设计已对最新 main(2f75e83)逐一核对:
项目
设计
代码格式
.TW/.TWO,数字 base 4–6 位 (普通股 4 位;ETF 跨 4–6 如 00878/006208)— 比 JP .T 的 4–5 位宽,这是唯一不可照抄 JP 之处
市场识别
_is_tw_market() + _market_tag→tw、detect_market、get_market_for_stock 三处一致,suffix 分支置于「裸 6 位→cn」fallback 之前 (裸 2330 仍为 A 股,关键回归不变量)
数据路由
_DAILY_MARKET_FETCHER_SUPPORT 仅 YfinanceFetcher 加 "tw";同 jp/kr 非 US,走通用 fetcher loop,无需新增分支
指数
加权指数 ^TWII、柜买指数 ^TWOII(已实测 Yahoo chart API 均 HTTP 200 解析成功)
交易日历
XTAI / Asia/Taipei;TWSE 09:00–13:30 连续无午休,session_has_break 自动走 no-break
Prompt 语境
保留台股的 ±10% 涨跌停、三大法人(外资/投信/自营商)、融资融券;仅排除 A 股专属的北向资金/龙虎榜
两个刻意取舍(想先和维护者对齐) :
收盘集合竞价(13:25–13:30)暂不建模 → 严格镜像 jp/kr(_CLOSING_AUCTION_WINDOW_MINUTES 不加 tw),日后一行可补。
^TWOII(柜买指数)Yahoo 更新频率较低 → 可先只上 ^TWII,柜买留 follow-up。
范围约 80 个触点,横跨 data_provider/ src/ apps/dsa-web/ api/ scripts/ docs/ tests/,已分级 P0(缺它请求/build 失败)/ P1,并附完整 test_tw_market_support.py(镜像 test_jp_kr_market_support.py)。
备选方案 / Alternatives Considered
专用台股数据源(如 FinMind/twstock) :可拿到三大法人/融资融券等台股专属数据,但偏离本项目「先 suffix-only MVP、Yahoo 兜底」的既定路线,范围大、风险高 → 建议作为 MVP 之后的增强,不放进首个 PR。
维持现状(不支持):台湾用户无法使用核心功能。
相关信息 / Additional Context
是否愿意贡献代码实现 / Willing to implement: Yes (完整方案 + 逐档清单 + 测试已就绪,可直接提单一 suffix-only MVP PR)
参考 / Reference: 对齐 [Feature] 支持日本/韩国市场个股分析(suffix-only MVP) #1718 (日本/韩国 suffix-only MVP)
想请教维护者 3 件事(影响 PR 落地) :
docs/architecture/api_spec.json 的重新生成方式 ?(它与 test_decision_signal_docs.py / test_api_schema_pydantic.py 快照锁步,手改 enum 易红灯)
是否接受单一 suffix-only MVP PR (各层 allowlist + 测试快照须锁步同改,拆 PR 会中间态红灯)?
首个 PR 是否纳入 ^TWOII,还是先只上 ^TWII?
功能描述 / Feature Description
新增**台湾股市(台股)**个股分析支持,采用与 #1718(日本/韩国 suffix-only MVP)完全相同的模式:仅放开「市场识别 + 数据路由 + Yahoo 抓取 + 类型放行 + seed 索引」,A 股专属重功能(资金流/龙虎榜/板块/市场宽度)一律按
not_supported降级,与 jp/kr 同边界、可一行回滚。NNNN.TW(例2330.TW台积电、0050.TW元大台湾50)NNNN.TWO(例6488.TWO环球晶);与 KR 把.KS+.KQ折成一个kr一样,.TW+.TWO折成一个tw使用场景 / Use Case
台湾用户基数大、需求高(项目已有
docs/README_CHT.md繁中版),但目前完全无法分析台股:grep -rn "\.TW" --include="*.py"= 0 笔;裸 6 位代码会落到 A 股语义,.TW后缀代码则无任何识别分支。日韩 MVP 落地后,台股是同模式最自然的下一个市场。期望实现 / Proposed Solution
镜像 #1718 的整条链路(market tag
jp/kr→tw,suffix.T/.KS/.KQ→.TW/.TWO),关键设计已对最新main(2f75e83)逐一核对:.TW/.TWO,数字 base 4–6 位(普通股 4 位;ETF 跨 4–6 如00878/006208)— 比 JP.T的 4–5 位宽,这是唯一不可照抄 JP 之处_is_tw_market()+_market_tag→tw、detect_market、get_market_for_stock三处一致,suffix 分支置于「裸 6 位→cn」fallback 之前(裸2330仍为 A 股,关键回归不变量)_DAILY_MARKET_FETCHER_SUPPORT仅YfinanceFetcher加"tw";同 jp/kr 非 US,走通用 fetcher loop,无需新增分支^TWII、柜买指数^TWOII(已实测 Yahoo chart API 均 HTTP 200 解析成功)XTAI/Asia/Taipei;TWSE 09:00–13:30 连续无午休,session_has_break自动走 no-break两个刻意取舍(想先和维护者对齐):
_CLOSING_AUCTION_WINDOW_MINUTES不加tw),日后一行可补。^TWOII(柜买指数)Yahoo 更新频率较低 → 可先只上^TWII,柜买留 follow-up。范围约 80 个触点,横跨
data_provider/src/apps/dsa-web/api/scripts/docs/tests/,已分级 P0(缺它请求/build 失败)/ P1,并附完整test_tw_market_support.py(镜像test_jp_kr_market_support.py)。备选方案 / Alternatives Considered
相关信息 / Additional Context
docs/architecture/api_spec.json的重新生成方式?(它与test_decision_signal_docs.py/test_api_schema_pydantic.py快照锁步,手改 enum 易红灯)^TWOII,还是先只上^TWII?