fix(docker): embed mock types for Docker build compatibility
Remove lewooogo-brain local dependency that breaks Docker context. Inline Proposal/Guardrails definitions in proposals.py mock. Phase 6.4i will address proper monorepo Docker packaging. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,11 +25,12 @@ dependencies = [
|
||||
"opentelemetry-instrumentation-httpx>=0.41b0",
|
||||
"opentelemetry-instrumentation-logging>=0.41b0",
|
||||
# Phase 6.4g: leWOOOgo Brain - 積木化決策引擎
|
||||
"lewooogo-brain",
|
||||
# NOTE: Local package disabled for Docker build compatibility
|
||||
# "lewooogo-brain", # 待 monorepo Docker 解法 (Phase 6.4i)
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
lewooogo-brain = { path = "../../packages/lewooogo-brain", editable = true }
|
||||
# [tool.uv.sources]
|
||||
# lewooogo-brain = { path = "../../packages/lewooogo-brain", editable = true }
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
|
||||
@@ -28,9 +28,30 @@ class ProposalResponse(BaseModel):
|
||||
rejection_reason: str | None = Field(default=None, description="若未通過防爆圈,顯示阻擋原因")
|
||||
|
||||
def get_proposal_engine():
|
||||
"""Phase 6.4g 暫時性 Mock DI,驗證路由暢通"""
|
||||
from lewooogo_brain.interfaces.proposal_engine import Proposal, Guardrails
|
||||
"""
|
||||
Phase 6.4g 暫時性 Mock DI,驗證路由暢通
|
||||
NOTE: 完全內嵌,不依賴外部 lewooogo-brain 套件 (Docker 相容)
|
||||
"""
|
||||
from uuid import uuid4
|
||||
from pydantic import BaseModel
|
||||
|
||||
# 內嵌 Guardrails 定義 (Docker 相容)
|
||||
class Guardrails(BaseModel):
|
||||
require_dry_run: bool = True
|
||||
allowed_namespace: list[str] = ["awoooi-prod"]
|
||||
forbidden_commands: list[str] = ["rm -rf", "drop table", "kubectl delete ns"]
|
||||
max_retries: int = 1
|
||||
timeout_sec: int = 60
|
||||
|
||||
# 內嵌 Proposal 定義 (Docker 相容)
|
||||
class Proposal(BaseModel):
|
||||
proposal_id: str
|
||||
incident_id: str
|
||||
action: str
|
||||
description: str
|
||||
risk_level: str
|
||||
guardrails: dict
|
||||
metadata: dict = {}
|
||||
|
||||
class MockEngine:
|
||||
async def generate(self, incident_id: str) -> tuple[Proposal | None, str]:
|
||||
|
||||
Reference in New Issue
Block a user