"""AwoooP Phase 2.4: Project ID Context Variable
================================================
2026-05-04 ogt + Claude Sonnet 4.6（ADR-123 background loop tagging）

設計原則：
- Python asyncio.create_task() 自動繼承父任務的 ContextVar 值
- startup handler 設一次 PROJECT_ID.set("awoooi")，所有 31 個 loop 自動繼承
- get_db_context() 讀此 contextvar 作為 fallback，確保 RLS SET LOCAL 正確
- 多租戶未來：呼叫端傳入不同 project_id 即可隔離，無需改 loop 本體
"""
from __future__ import annotations

from contextvars import ContextVar

# 追蹤當前非同步任務的 project_id
# default="awoooi" 確保未設時也能正常查詢（RLS fail-open 保護）
PROJECT_ID: ContextVar[str] = ContextVar("project_id", default="awoooi")


def get_current_project_id() -> str:
    """取得當前任務的 project_id（給 service 層使用）"""
    return PROJECT_ID.get()
