Files
one_divine_lot/scripts/test-r009-normalize.mjs
T
kyugao 859938c4f1 test(交易记录): 迭代 07/08 回归测试(独立数据目录)
- test-r009: 手动归属核心(建表/幂等/UPSERT 不覆盖归属/候选/持久化过滤)
- test-r009-sync: TradeSync 同步集成
- test-r009-normalize: QMT code 归一化
- test-r009-api: API 层端点集成
- verify-real-r009: 真实数据只读验证
- verify-real-attribution: 归属写闭环(被插件锁时跳过)
2026-09-02 01:21:04 +08:00

42 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { QmtBridgeRestDataSource } from '../src/component/QmtBridgeRestDataSource.js';
const ds = new QmtBridgeRestDataSource({ baseUrl: 'http://x' });
let pass = 0, fail = 0;
function assert(cond, msg) {
if (cond) { pass++; console.log(' ✅ ' + msg); }
else { fail++; console.log(' ❌ ' + msg); }
}
// code 归一化
assert(ds.normalizeInstrumentCode('001330', 'SZ') === '001330.SZ', '001330+SZ → 001330.SZ');
assert(ds.normalizeInstrumentCode('600519', 'SH') === '600519.SH', '600519+SH → 600519.SH');
assert(ds.normalizeInstrumentCode('001330.SZ', 'SZ') === '001330.SZ', '已带后缀原样保留');
assert(ds.normalizeInstrumentCode('601117', '') === '601117.SH', '无交易所按首位推断 6→SH');
assert(ds.normalizeInstrumentCode('000001', '') === '000001.SZ', '无交易所按首位推断 0→SZ');
assert(ds.normalizeInstrumentCode('300057', '') === '300057.SZ', '无交易所按首位推断 3→SZ');
// mapOrdertradeDate 兜底 insertDate
const o = ds.mapOrder({
m_strOrderSysID: '645009273', m_strInstrumentID: '001330', m_strInstrumentName: '博纳影业',
m_strExchangeID: 'SZ', m_nOffsetFlag: 49, m_strOptName: '限价卖出', m_nOrderStatus: 56,
m_nVolumeTotalOriginal: 200, m_nVolumeTraded: 200, m_nVolumeTotal: 200,
m_dLimitPrice: 6, m_dTradedPrice: 6, m_dTradeAmount: 1200,
m_strInsertDate: '20260901', m_strInsertTime: '101333',
});
assert(o.code === '001330.SZ', 'mapOrder code 归一化: ' + o.code);
assert(o.tradeDate === '20260901', 'mapOrder tradeDate 兜底 insertDate: ' + o.tradeDate);
assert(o.insertDate === '20260901' && o.insertTime === '101333', 'insertDate/insertTime 保留');
// mapTradecode 归一化 + tradeDate 保留原始
const t = ds.mapTrade({
m_strTradeID: '0103000030812084', m_strOrderSysID: '645009273', m_strInstrumentID: '001330',
m_strInstrumentName: '博纳影业', m_strExchangeID: 'SZ', m_nOffsetFlag: 49, m_strOptName: '限价卖出',
m_dPrice: 6, m_nVolume: 200, m_dTradeAmount: 1200, m_dCommission: 0.852,
m_strTradeDate: '20260901', m_strTradeTime: '101333',
});
assert(t.code === '001330.SZ', 'mapTrade code 归一化: ' + t.code);
assert(t.tradeDate === '20260901', 'mapTrade tradeDate 保留: ' + t.tradeDate);
console.log('\n结果: ' + pass + ' 通过, ' + fail + ' 失败');
process.exit(fail > 0 ? 1 : 0);