feat(qe-m3-01): implement GetBarsAsOf with lookahead bias prevention and complete unit tests
Validators (Pushes and Pull Requests) / validate-core (push) Failing after 9s
Validators (Pushes and Pull Requests) / validate-ui-and-storage (push) Successful in 16s

This commit is contained in:
2026-07-12 21:46:38 +09:00
parent 5589a0432b
commit b0c9776601
7 changed files with 363 additions and 7 deletions
+35 -3
View File
@@ -16,6 +16,20 @@ concurrency:
jobs:
validate-core:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: quantengine_ci
POSTGRES_PASSWORD: quantengine_ci
POSTGRES_DB: quantenginedb
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 5s
--health-timeout 5s
--health-retries 10
steps:
- name: Checkout Code
@@ -41,10 +55,24 @@ jobs:
/usr/bin/python3 --version
/usr/bin/python3 -m pip --version
/usr/bin/python3 -m pip install --disable-pip-version-check --quiet \
--target "$PYTHON_DEPS" requests pyyaml openpyxl pytest
--target "$PYTHON_DEPS" requests pyyaml openpyxl pytest "psycopg[binary]"
export PYTHONPATH="$PYTHON_DEPS:${PYTHONPATH:-}"
echo "PYTHONPATH=$PYTHON_DEPS:${PYTHONPATH:-}" >> "$GITHUB_ENV"
/usr/bin/python3 -c 'import requests, yaml, openpyxl, pytest; print("Python dependencies: PASS")'
/usr/bin/python3 -c 'import requests, yaml, openpyxl, pytest, psycopg; print("Python dependencies: PASS")'
- name: Apply Database Migrations (CI Postgres service)
env:
PGPASSWORD: quantengine_ci
run: |
# QE-M2-01 등 스키마 존재만 확인하는 게이트는 실제 Postgres에 대해 재검증한다
# (2026-07-12: WBS 게이트가 마이그레이션 SQL만으로 스키마를 주장하지 않도록,
# ci.yml 전용 postgres 서비스 컨테이너에 실제 DbUp 마이그레이션을 순서대로 적용).
which psql || (sudo apt-get update -qq && sudo apt-get install -y -qq postgresql-client)
for f in $(ls src/dotnet/QuantEngine.Infrastructure/Migrations/V*.sql | sort -V); do
echo "=== Applying $f ==="
psql -h 127.0.0.1 -p 5432 -U quantengine_ci -d quantenginedb -v ON_ERROR_STOP=1 -f "$f"
done
echo "QE_WBS_PG_DSN=host=127.0.0.1 port=5432 dbname=quantenginedb user=quantengine_ci password=quantengine_ci options='-c search_path=quantengine'" >> "$GITHUB_ENV"
- name: Install Node Dependencies
run: |
@@ -106,7 +134,11 @@ jobs:
- name: Generate DONE WBS Verdicts
run: |
for task in QE-M0-01 QE-M0-02 QE-M0-03 QE-M0-04 QE-M0-05 QE-M0-06; do
# DONE 작업 중 CI(ubuntu-latest, 위 postgres 서비스 컨테이너)에서 온디맨드로 재검증
# 가능한 것만 나열한다. 실제 KIS API/라이브 앱이 전제인 나머지 DONE 작업은
# spec/60의 execution.mode: not_ci_reproducible 로 별도 표시되어
# validate_quant_engine_wbs_v1.py 가 verdict 부재를 FAIL로 취급하지 않는다.
for task in QE-M0-01 QE-M0-02 QE-M0-03 QE-M0-04 QE-M0-05 QE-M0-06 QE-M0-07 QE-M1-05 QE-M1-06 QE-M2-01 QE-M2-06; do
python3 tools/verify_wbs_task_v1.py --task "$task"
done