feat(screener): canvas adds AI news node (12 nodes, 18 edges)

This commit is contained in:
2026-05-13 23:51:09 +09:00
parent 7ebeba2f3d
commit ec3ca5fcfa
2 changed files with 16 additions and 9 deletions

View File

@@ -5,10 +5,10 @@ import {
} from './canvasLayout';
describe('canvasLayout', () => {
it('NODE_IDS — 11개 키, 모두 unique', () => {
it('NODE_IDS — 12개 키, 모두 unique', () => {
const ids = Object.values(NODE_IDS);
expect(ids).toHaveLength(11);
expect(new Set(ids).size).toBe(11);
expect(ids).toHaveLength(12);
expect(new Set(ids).size).toBe(12);
});
it('INITIAL_NODE_POSITIONS — 모든 NODE_IDS에 좌표 존재', () => {
@@ -20,8 +20,8 @@ describe('canvasLayout', () => {
}
});
it('EDGES — 16개, source/target이 모두 NODE_IDS 안에 존재', () => {
expect(EDGES).toHaveLength(16);
it('EDGES — 18개, source/target이 모두 NODE_IDS 안에 존재', () => {
expect(EDGES).toHaveLength(18);
const validIds = new Set(Object.values(NODE_IDS));
for (const e of EDGES) {
expect(validIds.has(e.source)).toBe(true);
@@ -30,10 +30,11 @@ describe('canvasLayout', () => {
}
});
it('EDGES — 7개 점수 노드는 모두 gate 입력 + combine 출력을 가짐', () => {
it('EDGES — 8개 점수 노드는 모두 gate 입력 + combine 출력을 가짐', () => {
const SCORE_IDS = [
NODE_IDS.FOREIGN, NODE_IDS.VOLUME, NODE_IDS.MOMENTUM,
NODE_IDS.HIGH52W, NODE_IDS.RS, NODE_IDS.MA, NODE_IDS.VCP,
NODE_IDS.AI_NEWS,
];
for (const sid of SCORE_IDS) {
const hasGateInput = EDGES.some(
@@ -54,9 +55,10 @@ describe('canvasLayout', () => {
}
});
it('SCORE_NODE_NAME_MAP — 7개 점수 노드 ID → backend node name', () => {
expect(Object.keys(SCORE_NODE_NAME_MAP)).toHaveLength(7);
it('SCORE_NODE_NAME_MAP — 8개 점수 노드 ID → backend node name', () => {
expect(Object.keys(SCORE_NODE_NAME_MAP)).toHaveLength(8);
expect(SCORE_NODE_NAME_MAP[NODE_IDS.FOREIGN]).toBe('foreign_buy');
expect(SCORE_NODE_NAME_MAP[NODE_IDS.VOLUME]).toBe('volume_surge');
expect(SCORE_NODE_NAME_MAP[NODE_IDS.AI_NEWS]).toBe('ai_news');
});
});