Skip to content

refactor(core): data 层 types.ts + impl/ 布局与硬编码字符串/错误码收敛 - #278

Merged
363045841 merged 3 commits into
mainfrom
refactor/data-layer-impl-layout
Sep 30, 2026
Merged

363045841 merged 3 commits into
mainfrom
refactor/data-layer-impl-layout

Conversation

@363045841

Copy link
Copy Markdown
Owner

目的

把 packages/core/src/data/ 整层按仓库约定(<module>/types.ts 契约 + <module>/impl/ 实现)重构,并收敛其中的硬编码字符串与错误码。纯结构性改动,不改变运行时行为与包级公共 API。

改动概览

1. 模块布局:types.ts + impl/(5365e3fe)

  • provider / buffer / depth / live 统一为「契约在模块根 types.ts,实现在 impl/」。
  • 契约归位:MarketDataSourceConfig / MarketDataSourceConfigPatch / SourceCapabilityQuery(原 registry.ts)与 SourceRouterInstrumentIdentity / SourceRouter*Request / SourceRouteAttempt / RoutedMarketData(原 router.ts)移入 provider/types.ts;types.ts 不再依赖 impl/。
  • buffer/dataBufferTypes.ts → buffer/types.ts,depth/depthTypes.ts → depth/types.ts。
  • protocol/ 作为子模块:protocol/types.ts 是 wire 契约,httpTransport.ts / provider.ts 进入 protocol/impl/。
  • 公开子路径 ./market-data/sources 的 key 不变,仅 target 指向 dist/data/provider/impl/sources/*(外部导入路径不变,非破坏性)。

2. 错误码具名常量(5365e3fe + e4b19db)

  • ERROR_CODES(fetch 族)改为 as const satisfies,保留字面量类型以支持 error.code 收窄比较。
  • 新增 GENERIC_ERROR_CODES(INVALID_PARAM / INVALID_STATE / DISPOSED / NOT_REGISTERED)。
  • 补齐领域族常量对象:SCALE_ / FOOTPRINT_ / AVWAP_ / INDICATOR_ / HEATMAP_ / MTF_ / CHART_TYPE_ / REPLAY_ / DEPTH_ERROR_CODES。
  • 各调用点由字符串字面量改为引用常量。
  • errors.ts 顺带做 Biome 格式归一(此前以非仓库格式提交,导致 pnpm lint 为红)。

3. data 层硬编码字符串收敛(980dde97)

原字面量 改为
'auto' AUTO_SOURCE_ID(上提到 provider/types.ts,避免 provider → buffer 反向依赖)
'latest' LATEST_TRADING_DATE
'exhausted' OLDER_DATA_STATUS.EXHAUSTED
/api/v1/market-data/... 端点路径 V1_ENDPOINTS.*
Content-Type: application/json JSON_HEADERS
'CN' CN_SESSION_ID

刻意保留

  • MarketDataErrorCode(data 层独立领域词汇,UPSTREAM_UNAVAILABLE / ABORTED / UNKNOWN 等)不是 KLineChartError 码,无对应常量对象。
  • 类型化联合的判别值、wire 协议字段名、数据源注册表数据、mock 夹具、errors-help 的「码 → 提示」表、测试断言。

兼容性

  • 仅内部源码目录与私有导入路径变化;包级公开导出集合不变,并补出 SourceRouterTimeShareRangeRequest 与 V1_ENDPOINTS(均为增量)。

验证

  • pnpm -C packages/core test:245 文件 / 2645 用例通过
  • pnpm -C packages/core build + publint --strict:产物与 exports 一致
  • vue 168 / react 2 / angular 12 / agent-runtime 97:全过
  • biome check(改动文件):无 error
  • tsc -p tsconfig.build.json --noEmit:通过

设计文档

docs/design/data-layer-module-layout.md

需要贡献者验证

图表加载 / 数据源切换 / 实时 K 线 / 深度热力图的 E2E 与视觉回归。

Call sites for SCALE_/FOOTPRINT_/AVWAP_/INDICATOR_/HEATMAP_/MTF_/CHART_TYPE_/REPLAY_/DEPTH_ error codes referenced *_ERROR_CODES.* objects that errors.ts did not export, so the package failed to type-check. Add the missing constant objects and normalize the file to the repo's Biome formatting (it had been committed with semicolons / double quotes / 4-space indent).
…ants

Magic strings in packages/core/src/data were duplicated or untyped:
- 'auto' -> AUTO_SOURCE_ID (moved to provider/types.ts so router does not depend on buffer, which would invert the layer)
- 'latest' -> LATEST_TRADING_DATE
- 'exhausted' -> OLDER_DATA_STATUS.EXHAUSTED
- '/api/v1/market-data/...' endpoint paths -> V1_ENDPOINTS
- Content-Type/application/json header -> JSON_HEADERS
- 'CN' session id -> CN_SESSION_ID
@363045841
363045841 merged commit c02d974 into main Sep 30, 2026
4 checks passed
@363045841
363045841 deleted the refactor/data-layer-impl-layout branch September 30, 2026 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant