859938c4f1
- test-r009: 手动归属核心(建表/幂等/UPSERT 不覆盖归属/候选/持久化过滤) - test-r009-sync: TradeSync 同步集成 - test-r009-normalize: QMT code 归一化 - test-r009-api: API 层端点集成 - verify-real-r009: 真实数据只读验证 - verify-real-attribution: 归属写闭环(被插件锁时跳过)
42 lines
2.3 KiB
JavaScript
42 lines
2.3 KiB
JavaScript
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');
|
||
|
||
// mapOrder:tradeDate 兜底 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 保留');
|
||
|
||
// mapTrade:code 归一化 + 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);
|