WBS-2.4 PEG_SCORE_V1 구현 + ROADMAP_WBS.md 완성도 매트릭스 전면 업데이트

[WBS-2.4] ingest_fundamental_raw.py에 peg_ratio / peg_gate 필드 추가
  - PEG = TTM_PE(per) / eps_growth_1y_pct (양수 성장 종목만)
  - PEG_GATE: BUY_GRADE(≤1.0) / HOLD(≤1.5) / CAUTION(>1.5)
  - 비ETF 8종목 중 6종목 PEG 산출 (75% — 음수성장 2종목 정상 NULL)
  - Forward_PE 미입수 시 TTM_PE 대체 조항 적용

[ROADMAP] 완성도 매트릭스 전면 업데이트
  - WBS 1.1~1.5, 2.1~2.4, 3.1~3.4, 4.4, 5.1~5.3 모두 100%  반영
  - WBS 2.5, 4.1~4.3: DATA_GATED 명시
  - Phase bar: 1/3/5 완료(20/20), 2 80%, 4 25%
  - D2: 9% → 100% (269개 등록), D5: 55단계 DAG PASS
  - KPI 섹션: RS/PEG/CI/CD 실적 반영

[CI] tools/setup_act_runner.sh 추가 (Synology NAS act_runner 설치 스크립트)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 17:31:51 +09:00
parent 9824f348d2
commit 45a39759e3
3 changed files with 160 additions and 55 deletions
+87
View File
@@ -0,0 +1,87 @@
#!/bin/bash
# Gitea Act Runner 자동 설치 — Synology NAS (armv7l / x86_64 / arm64)
GITEA_URL="http://192.168.123.100:8418"
REG_TOKEN="Kj6L43zdWKZdTtqFswN0PYFWRHkdUChxG8yIfr8L"
RUNNER_NAME="synology-runner"
RUNNER_DIR="/volume1/gitea/act_runner"
ACT_RUNNER_VERSION="0.2.11"
echo "=== Gitea Act Runner Setup ==="
# 1. 아키텍처 감지
ARCH=$(uname -m)
case "$ARCH" in
x86_64) BINARY="act_runner-${ACT_RUNNER_VERSION}-linux-amd64" ;;
aarch64) BINARY="act_runner-${ACT_RUNNER_VERSION}-linux-arm64" ;;
armv7l) BINARY="act_runner-${ACT_RUNNER_VERSION}-linux-arm-7" ;;
*) echo "ERROR: 지원하지 않는 아키텍처: $ARCH"; exit 1 ;;
esac
echo "[1] 아키텍처: $ARCH -> $BINARY"
# 2. 설치 디렉토리 생성
mkdir -p "$RUNNER_DIR/workspace"
echo "[2] 디렉토리: $RUNNER_DIR"
# 3. 바이너리 다운로드
DOWNLOAD_URL="https://gitea.com/gitea/act_runner/releases/download/v${ACT_RUNNER_VERSION}/${BINARY}"
echo "[3] 다운로드: $DOWNLOAD_URL"
curl -L --progress-bar "$DOWNLOAD_URL" -o "$RUNNER_DIR/act_runner"
chmod +x "$RUNNER_DIR/act_runner"
echo "[3] 완료: $("$RUNNER_DIR/act_runner" --version 2>&1 | head -1)"
# 4. config.yaml 생성
cat > "$RUNNER_DIR/config.yaml" <<YAML
runner:
name: ${RUNNER_NAME}
labels:
- "self-hosted:host"
- "linux:host"
container:
network: host
docker_host: "-"
host:
workdir_parent: ${RUNNER_DIR}/workspace
YAML
echo "[4] config.yaml 생성"
# 5. Runner 등록
echo "[5] Runner 등록..."
"$RUNNER_DIR/act_runner" register \
--no-interactive \
--instance "$GITEA_URL" \
--token "$REG_TOKEN" \
--name "$RUNNER_NAME" \
--labels "self-hosted,linux" \
--config "$RUNNER_DIR/config.yaml"
echo "[5] 등록 완료"
# 6. 부팅 시작 스크립트
cat > "$RUNNER_DIR/start.sh" <<'SH'
#!/bin/bash
RUNNER_DIR="/volume1/gitea/act_runner"
PID_FILE="$RUNNER_DIR/runner.pid"
LOG="$RUNNER_DIR/runner.log"
if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
echo "already running pid=$(cat $PID_FILE)"
exit 0
fi
nohup "$RUNNER_DIR/act_runner" daemon --config "$RUNNER_DIR/config.yaml" >> "$LOG" 2>&1 &
echo $! > "$PID_FILE"
echo "started pid=$!"
SH
chmod +x "$RUNNER_DIR/start.sh"
echo "[6] start.sh 생성"
# 7. 즉시 시작
echo "[7] Runner 시작..."
"$RUNNER_DIR/start.sh"
sleep 3
echo "[7] PID: $(cat $RUNNER_DIR/runner.pid 2>/dev/null || echo 'N/A')"
echo ""
echo "=== 설치 완료 ==="
echo "DSM 작업 스케줄러 → 부팅 트리거 → 명령: bash ${RUNNER_DIR}/start.sh"
echo "Gitea 확인: ${GITEA_URL}/KimJaeHyun/myfinance/settings/runners"