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: 归属写闭环(被插件锁时跳过)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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);
|
||||
Reference in New Issue
Block a user