# 计划:盘口内存快照(QuoteSync/QuoteHub + 同步指示灯)(阶段航点) > 编号:PLAN-014 | 粒度:阶段航点 | 创建:2026-09-02 | 状态:**已实施(待验收)** > 派生自终极目标:目标-003(按策略监控市场)、目标-008(真实交易系统接入) > 依据需求:**R-015(已定稿,2026-09-02,老师逐项拍板)** —— 符合入范围门槛 > 设计约束:技术约束-010 变更(行情服务端中转改纯内存)、技术约束-012 变更(market_quotes_cache 退役)、技术约束-016(分域沿用);本次新增 技术约束-018、产品约束-012 ## 目标 盘口数据与持仓数据对称收敛:QuoteSync/QuoteHub 纯内存管理(5s REST 同步 + 涨停跌停合约信息),market_quotes_cache 退役(DROP),价格单一入口;会话头部新增持仓/盘口同步指示灯(绿黄灰、点击即同步)。 ## 范围 **做**: 1. QuoteSync(新):启动 prime + 5s REST 刷新 watch 集合 + 涨停跌停按交易日拉取缓存 + 热切换重置;WS 通路不迁移(删除); 2. QuoteHub(新):内存快照 + 合约信息缓存 + watch 集合 + 读穿透(走 dataSource.getTicks)+ getQuote(s) 对外;对外方法签名与旧 hub 兼容(getByCodes/watch/stats/getQuote); 3. 数据源适配:QmtBridgeRestDataSource 新增 getTicks(codes)(/data/tick 语义化批量); 4. 存储清理:SqliteStore 删行情表读写 + DROP TABLE market_quotes_cache(幂等)+ migrateJson/isEmpty 联动;DataStore 删 loadMarket/getMarketQuote(s)/setMarketQuotes; 5. API:market-snapshot 返回加涨停/跌停/昨收/updatedAt;新增 sync-status(吸收 market-stats)+ sync-now {domain}; 6. 前端:QmtConnectionChip 加 SyncIndicators(两圆点,10s 轮询,点击即同步);MarketDataProvider 清理 wsInfo 残留; 7. 策略持仓表行情列(老师确认并入):COLUMN_META + 涨停价/跌停价/今开/最高(defaultVisible: false,纯价格);StrategyTab.renderDataCell 对应 case;normalizeStrategyColumns 缺省显隐跟随 defaultVisible; 7. 回归脚本 test-quote-sync.mjs(纯内存 mock)。 **不做**:watch 收缩/降频;个股停牌标识;WS 相关需求推进;PriceCell 改动;最低/成交量/成交额列;距离涨停百分比展示。 ## 涉及文件 - 新增:src/market/QuoteSync.js、src/market/QuoteHub.js、src/client/views/SyncIndicators.jsx、scripts/test-quote-sync.mjs - 删除:src/market/MarketFeed.js、src/market/MarketDataHub.js - 修改:src/data-source/QmtBridgeRestDataSource.js(getTicks)、src/storage/SqliteStore.js、src/storage/DataStore.js、src/api/market.js、src/api/qmt-connections.js(热切换联动)、src/index.js、src/client/views/QmtConnectionChip.jsx、src/client/market/MarketDataProvider.jsx ## 实现步骤 1. 文档链(本计划 + 迭代三件套 + 约束条目);2. 数据源 getTicks;3. QuoteHub + QuoteSync;4. 存储清理 + DROP;5. API 改造;6. 前端指示灯 + 清理;7. 回归脚本 + typecheck + build + 存量回归;8. 复盘。 ## 验收要点 见 `docs/04-迭代记录/13-盘口内存快照/验收标准.md`。