diff --git a/apps/api/src/_archived/README.md b/apps/api/src/_archived/README.md new file mode 100644 index 00000000..0ee2dad0 --- /dev/null +++ b/apps/api/src/_archived/README.md @@ -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) +- **正式刪除**: 觀察期後無問題可永久刪除 diff --git a/apps/api/src/routes/approvals.py b/apps/api/src/_archived/routes/approvals.py similarity index 100% rename from apps/api/src/routes/approvals.py rename to apps/api/src/_archived/routes/approvals.py diff --git a/apps/api/src/services/approval.py b/apps/api/src/_archived/services/approval.py similarity index 100% rename from apps/api/src/services/approval.py rename to apps/api/src/_archived/services/approval.py diff --git a/apps/api/src/models/approval.py b/apps/api/src/models/approval.py index 853b4419..7e2137be 100644 --- a/apps/api/src/models/approval.py +++ b/apps/api/src/models/approval.py @@ -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" diff --git a/apps/api/src/services/__init__.py b/apps/api/src/services/__init__.py index 1e92edfb..74ea559f 100644 --- a/apps/api/src/services/__init__.py +++ b/apps/api/src/services/__init__.py @@ -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", diff --git a/apps/api/src/services/trust_engine.py b/apps/api/src/services/trust_engine.py index 4e5004bb..f93c6017 100644 --- a/apps/api/src/services/trust_engine.py +++ b/apps/api/src/services/trust_engine.py @@ -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