refactor(api): Phase 16 R2 封存死代碼 + RiskLevel 統一

封存 (866 行):
- routes/approvals.py → _archived/routes/ (477 行,未註冊死代碼)
- services/approval.py → _archived/services/ (389 行,僅被死代碼使用)

合併 RiskLevel:
- models/approval.py 新增 HIGH (從 trust_engine.py 合併)
- trust_engine.py 改 import from models/approval.py
- 保留舊定義為註解供回滾

更新 services/__init__.py:
- 移除已封存模組的 import (註解保留回滾路徑)

驗證:
- RiskLevel 統一: models 與 trust_engine 使用同一 class
- 24 個 action_parsing 測試通過

回滾指令見 _archived/README.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-25 23:14:24 +08:00
parent 0afaea63f8
commit e0584bc181
6 changed files with 96 additions and 39 deletions

View File

@@ -0,0 +1,41 @@
# Archived Code (Phase 16 R2)
> **封存日期**: 2026-03-25
> **封存者**: Claude Code (Phase 16 R2)
> **策略**: 絞殺者模式 (Strangler Fig Pattern)
---
## 封存原因
這些檔案已被新版本取代,但保留供參考與回滾。
### routes/approvals.py (477 行)
- **取代者**: `api/v1/approvals.py`
- **原因**: 未註冊到 main.py屬於死代碼
- **回滾**: 如需恢復,移回 `src/routes/` 並在 main.py 註冊
### services/approval.py (389 行)
- **取代者**: `services/approval_db.py` + `services/approval_execution.py`
- **原因**: 只被 routes/approvals.py 使用,隨之封存
- **回滾**: 如需恢復,移回 `src/services/`
---
## 回滾指令
```bash
# 回滾 routes/approvals.py
git mv apps/api/src/_archived/routes/approvals.py apps/api/src/routes/approvals.py
# 回滾 services/approval.py
git mv apps/api/src/_archived/services/approval.py apps/api/src/services/approval.py
```
---
## 清理時間表
- **封存**: 2026-03-25
- **觀察期**: 30 天 (至 2026-04-25)
- **正式刪除**: 觀察期後無問題可永久刪除

View File

@@ -43,10 +43,15 @@ class RiskLevel(str, Enum):
- LOW: 0 人,自動放行
- MEDIUM: 需 1 人簽核
- CRITICAL: 需 2 Multi-Sig 雙重簽核
- HIGH: 需 1簽核 (信任引擎可降級至 MEDIUM)
- CRITICAL: 需 2 人 Multi-Sig 雙重簽核 (永不降級)
變更紀錄:
- 2026-03-25: 新增 HIGH (Phase 16 R2 合併自 trust_engine.py)
"""
LOW = "low"
MEDIUM = "medium"
HIGH = "high" # Phase 16 R2: 從 trust_engine.py 合併 (2026-03-25)
CRITICAL = "critical"

View File

@@ -1,23 +1,28 @@
"""
AWOOOI API Services
變更紀錄:
- 2026-03-25 Phase 16 R2: 移除 .approval import (已封存至 _archived/)
"""
from .approval import (
RISK_MATRIX,
ApprovalAlreadyDecidedError,
# Exceptions
ApprovalError,
ApprovalNotFoundError,
ApprovalState,
ApprovalStatus,
DuplicateSignatureError,
InsufficientPermissionError,
MultiSigEngine,
Signature,
TOCTOUConflictError,
UserRole,
multi_sig_engine,
)
# Phase 16 R2 (2026-03-25): 以下 import 已封存,原模組移至 _archived/services/approval.py
# 回滾: 將 _archived/services/approval.py 移回,取消下方註解
# from .approval import (
# RISK_MATRIX,
# ApprovalAlreadyDecidedError,
# ApprovalError,
# ApprovalNotFoundError,
# ApprovalState,
# ApprovalStatus,
# DuplicateSignatureError,
# InsufficientPermissionError,
# MultiSigEngine,
# Signature,
# TOCTOUConflictError,
# UserRole,
# multi_sig_engine,
# )
from .consensus_engine import (
AgentOpinion,
AgentType,
@@ -54,21 +59,20 @@ __all__ = [
"DryRunEngine",
"DryRunResult",
"dry_run_engine",
# Multi-Sig
"MultiSigEngine",
"multi_sig_engine",
"ApprovalState",
"Signature",
"UserRole",
"ApprovalStatus",
"RISK_MATRIX",
# Exceptions
"ApprovalError",
"InsufficientPermissionError",
"DuplicateSignatureError",
"TOCTOUConflictError",
"ApprovalNotFoundError",
"ApprovalAlreadyDecidedError",
# Phase 16 R2: Multi-Sig 已封存至 _archived/services/approval.py
# "MultiSigEngine",
# "multi_sig_engine",
# "ApprovalState",
# "Signature",
# "UserRole",
# "ApprovalStatus",
# "RISK_MATRIX",
# "ApprovalError",
# "InsufficientPermissionError",
# "DuplicateSignatureError",
# "TOCTOUConflictError",
# "ApprovalNotFoundError",
# "ApprovalAlreadyDecidedError",
# Trust Engine
"TrustScoreManager",
"trust_engine",

View File

@@ -19,7 +19,7 @@ Phase 3.2: Progressive Autonomy
import logging
from dataclasses import dataclass, field
from datetime import datetime
from enum import Enum
# from enum import Enum # Phase 16 R2: 不再需要RiskLevel 改從 models 導入
from typing import Literal
logger = logging.getLogger(__name__)
@@ -27,13 +27,20 @@ logger = logging.getLogger(__name__)
# ==================== Types ====================
# Phase 16 R2 (2026-03-25): RiskLevel 統一改從 models/approval.py 導入
# 原因: 消除重複定義,統一風險等級來源
# 執行者: Claude Code
# 回滾: 取消註解下方區塊,移除 import
from src.models.approval import RiskLevel
class RiskLevel(str, Enum):
"""風險等級"""
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
CRITICAL = "critical"
# --- 以下為舊定義,已封存 (Phase 16 R2) ---
# class RiskLevel(str, Enum):
# """風險等級"""
# LOW = "low"
# MEDIUM = "medium"
# HIGH = "high"
# CRITICAL = "critical"
# --- 封存結束 ---
@dataclass