波动几何

波动几何

研究折线拐点与平行直线之间的关系

Kotlin全棧架構藍圖DAG

作者:王教成

Mermaid Loading...
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Mermaid架構圖</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: #f5f7fa;
            margin: 0;
            padding: 20px;
            color: #333;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
            background-color: white;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
            padding: 20px;
            overflow: hidden;
        }
        h1 {
            color: #2c3e50;
            text-align: center;
            margin-bottom: 25px;
            border-bottom: 2px solid #3498db;
            padding-bottom: 15px;
        }
        #mermaid-diagram {
            width: 100%;
            min-height: 800px;
            overflow: auto;
            border: 1px solid #e1e4e8;
            border-radius: 4px;
            background: white;
            padding: 15px;
        }
        .instructions {
            background-color: #e3f2fd;
            padding: 15px;
            border-radius: 4px;
            margin: 20px 0;
            font-size: 14px;
        }
        .legend {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin: 15px 0;
            padding: 10px;
            background-color: #f8f9fa;
            border-radius: 4px;
        }
        .legend-item {
            display: flex;
            align-items: center;
            margin-right: 15px;
        }
        .legend-color {
            width: 20px;
            height: 20px;
            border-radius: 3px;
            margin-right: 8px;
            border: 1px solid #ddd;
        }
        .note {
            font-size: 13px;
            color: #666;
            font-style: italic;
            margin-top: 20px;
        }
        @media (max-width: 768px) {
            .container {
                padding: 10px;
            }
            #mermaid-diagram {
                min-height: 600px;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>系統架構分層圖</h1>
        
        <div class="instructions">
            <p>此圖表展示了伺服器端和客戶端的架構分層,包含以下組件:</p>
            <ul>
                <li><strong>伺服器端</strong>: Database, Entity, Repository, Service, Controller</li>
                <li><strong>客戶端</strong>: DataSource, ClientRepository, UseCase, ViewModel, UI</li>
            </ul>
        </div>
        
        <div class="legend">
            <div class="legend-item">
                <div class="legend-color" style="background-color: #FFEC8B;"></div>
                <span>Database</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #87CEEB;"></div>
                <span>Entity</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #FFB5C5;"></div>
                <span>Repository</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #E6E6FA;"></div>
                <span>Service</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #C1FFC1;"></div>
                <span>Controller</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #B0E0E6;"></div>
                <span>DataSource</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #FFDAB9;"></div>
                <span>ClientRepository</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #8470FF;"></div>
                <span>UseCase</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #FFA07A;"></div>
                <span>ViewModel</span>
            </div>
            <div class="legend-item">
                <div class="legend-color" style="background-color: #87CEFA;"></div>
                <span>UI</span>
            </div>
        </div>
        
        <div class="mermaid" id="mermaid-diagram">
graph TD
  %% ====== 伺服器 ======
  subgraph server["伺服器Server"]
    subgraph Database["Database"]
      DB_L0["Database_業務生態層:業務生態層"]
      DB_L1["Database_系統層:MySQL高可用架構"]
      DB_L2["Database_子系統層:物理庫劃分"]
      DB_L3["Database_安全架構層:TLS+AES加密"]
      DB_L4["Database_模組層:模組表結構"]
      DB_L5["Database_包結構層:遷移腳本目錄"]
      DB_L6["Database_類與介面層:表結構設計"]
      DB_L7["Database_方法層:存儲過程"]
      DB_L8["Database_程式碼塊層:事務控制塊"]
      DB_L9["Database_語句層:DDL語句"]
      DB_L10["Database_表達式層:查詢優化"]
      DB_L11["Database_原子操作層:原子約束"]
      DB_L0 --> DB_L1 --> DB_L2 --> DB_L3 --> DB_L4 --> DB_L5 --> DB_L6 --> DB_L7 --> DB_L8 --> DB_L9 --> DB_L10 --> DB_L11
    end
    
    subgraph Entity["Entity"]
      ET_L0["Entity_業務生態層:無"]
      ET_L1["Entity_系統層:Hibernate快取"]
      ET_L2["Entity_子系統層:業務域分包"]
      ET_L3["Entity_安全架構層:欄位加密"]
      ET_L4["Entity_模組層:實體掃描路徑"]
      ET_L5["Entity_包結構層:分層包結構"]
      ET_L6["Entity_類與介面層:JPA實體類"]
      ET_L7["Entity_方法層:審計回調"]
      ET_L8["Entity_程式碼塊層:欄位驗證"]
      ET_L9["Entity_語句層:映射關係"]
      ET_L10["Entity_表達式層:懶加載策略"]
      ET_L11["Entity_原子操作層:equals/hashCode"]
      ET_L0 --> ET_L1 --> ET_L2 --> ET_L3 --> ET_L4 --> ET_L5 --> ET_L6 --> ET_L7 --> ET_L8 --> ET_L9 --> ET_L10 --> ET_L11
    end
    
    subgraph Repository["Repository"]
      RP_L0["Repository_業務生態層:無"]
      RP_L1["Repository_系統層:查詢策略"]
      RP_L2["Repository_子系統層:聚合根分包"]
      RP_L3["Repository_安全架構層:行級安全"]
      RP_L4["Repository_模組層:JPA倉庫掃描"]
      RP_L5["Repository_包結構層:倉庫分層"]
      RP_L6["Repository_類與介面層:倉庫介面"]
      RP_L7["Repository_方法層:動態查詢"]
      RP_L8["Repository_程式碼塊層:@Query註解塊"]
      RP_L9["Repository_語句層:派生查詢"]
      RP_L10["Repository_表達式層:SpEL表達式"]
      RP_L11["Repository_原子操作層:flush操作"]
      RP_L0 --> RP_L1 --> RP_L2 --> RP_L3 --> RP_L4 --> RP_L5 --> RP_L6 --> RP_L7 --> RP_L8 --> RP_L9 --> RP_L10 --> RP_L11
    end
    
    subgraph Service["Service"]
      SV_L0["Service_業務生態層:無"]
      SV_L1["Service_系統層:Seata事務"]
      SV_L2["Service_子系統層:服務邊界"]
      SV_L3["Service_安全架構層:方法級權限"]
      SV_L4["Service_模組層:事務管理"]
      SV_L5["Service_包結構層:服務分層"]
      SV_L6["Service_類與介面層:服務實現類"]
      SV_L7["Service_方法層:業務邏輯"]
      SV_L8["Service_程式碼塊層:事務控制塊"]
      SV_L9["Service_語句層:領域事件"]
      SV_L10["Service_表達式層:EL規則"]
      SV_L11["Service_原子操作層:空安全調用"]
      SV_L0 --> SV_L1 --> SV_L2 --> SV_L3 --> SV_L4 --> SV_L5 --> SV_L6 --> SV_L7 --> SV_L8 --> SV_L9 --> SV_L10 --> SV_L11
    end
    
    subgraph Controller["Controller"]
      CT_L0["Controller_業務生態層:無"]
      CT_L1["Controller_系統層:OpenAPI規範"]
      CT_L2["Controller_子系統層:網關路由"]
      CT_L3["Controller_安全架構層:JWT認證"]
      CT_L4["Controller_模組層:消息轉換器"]
      CT_L5["Controller_包結構層:控制器分包"]
      CT_L6["Controller_類與介面層:RestController"]
      CT_L7["Controller_方法層:端點方法"]
      CT_L8["Controller_程式碼塊層:參數驗證"]
      CT_L9["Controller_語句層:標準化響應"]
      CT_L10["Controller_表達式層:MapStruct轉換"]
      CT_L11["Controller_原子操作層:響應頭設置"]
      CT_L0 --> CT_L1 --> CT_L2 --> CT_L3 --> CT_L4 --> CT_L5 --> CT_L6 --> CT_L7 --> CT_L8 --> CT_L9 --> CT_L10 --> CT_L11
    end
  end

  %% ====== 客戶端 ======
  subgraph client["客戶端Client"]
    subgraph DataSource["DataSource"]
      DS_L0["DataSource_業務生態層:無"]
      DS_L1["DataSource_系統層:Retrofit配置"]
      DS_L2["DataSource_子系統層:無"]
      DS_L3["DataSource_安全架構層:證書綁定"]
      DS_L4["DataSource_模組層:網路模組"]
      DS_L5["DataSource_包結構層:資料源分層"]
      DS_L6["DataSource_類與介面層:Retrofit介面"]
      DS_L7["DataSource_方法層:流式資料"]
      DS_L8["DataSource_程式碼塊層:重試邏輯"]
      DS_L9["DataSource_語句層:網路調用"]
      DS_L10["DataSource_表達式層:JSON解析"]
      DS_L11["DataSource_原子操作層:認證頭"]
      DS_L0 --> DS_L1 --> DS_L2 --> DS_L3 --> DS_L4 --> DS_L5 --> DS_L6 --> DS_L7 --> DS_L8 --> DS_L9 --> DS_L10 --> DS_L11
    end
    
    subgraph ClientRepository["ClientRepository"]
      CR_L0["ClientRepository_業務生態層:無"]
      CR_L1["ClientRepository_系統層:快取策略"]
      CR_L2["ClientRepository_子系統層:無"]
      CR_L3["ClientRepository_安全架構層:SQLCipher加密"]
      CR_L4["ClientRepository_模組層:資料協調"]
      CR_L5["ClientRepository_包結構層:倉庫實現"]
      CR_L6["ClientRepository_類與介面層:倉庫類"]
      CR_L7["ClientRepository_方法層:混合資料獲取"]
      CR_L8["ClientRepository_程式碼塊層:快取過期"]
      CR_L9["ClientRepository_語句層:Room查詢"]
      CR_L10["ClientRepository_表達式層:資料轉換"]
      CR_L11["ClientRepository_原子操作層:StateFlow發射"]
      CR_L0 --> CR_L1 --> CR_L2 --> CR_L3 --> CR_L4 --> CR_L5 --> CR_L6 --> CR_L7 --> CR_L8 --> CR_L9 --> CR_L10 --> CR_L11
    end
    
    subgraph UseCase["UseCase"]
      UC_L0["UseCase_業務生態層:無"]
      UC_L1["UseCase_系統層:用例規範"]
      UC_L2["UseCase_子系統層:無"]
      UC_L3["UseCase_安全架構層:權限檢查"]
      UC_L4["UseCase_模組層:業務規則"]
      UC_L5["UseCase_包結構層:用例包"]
      UC_L6["UseCase_類與介面層:用例類"]
      UC_L7["UseCase_方法層:核心邏輯"]
      UC_L8["UseCase_程式碼塊層:錯誤轉換"]
      UC_L9["UseCase_語句層:倉庫調用"]
      UC_L10["UseCase_表達式層:參數驗證"]
      UC_L11["UseCase_原子操作層:構建領域對象"]
      UC_L0 --> UC_L1 --> UC_L2 --> UC_L3 --> UC_L4 --> UC_L5 --> UC_L6 --> UC_L7 --> UC_L8 --> UC_L9 --> UC_L10 --> UC_L11
    end
    
    subgraph ViewModel["ViewModel"]
      VM_L0["ViewModel_業務生態層:無"]
      VM_L1["ViewModel_系統層:Hilt注入"]
      VM_L2["ViewModel_子系統層:無"]
      VM_L3["ViewModel_安全架構層:會話處理"]
      VM_L4["ViewModel_模組層:狀態容器"]
      VM_L5["ViewModel_包結構層:ViewModel分包"]
      VM_L6["ViewModel_類與介面層:ViewModel類"]
      VM_L7["ViewModel_方法層:狀態更新"]
      VM_L8["ViewModel_程式碼塊層:狀態轉換"]
      VM_L9["ViewModel_語句層:UI狀態更新"]
      VM_L10["ViewModel_表達式層:密封類轉換"]
      VM_L11["ViewModel_原子操作層:UseCase調用"]
      VM_L0 --> VM_L1 --> VM_L2 --> VM_L3 --> VM_L4 --> VM_L5 --> VM_L6 --> VM_L7 --> VM_L8 --> VM_L9 --> VM_L10 --> VM_L11
    end
    
    subgraph UI["UI"]
      UI_L0["UI_業務生態層:用戶旅程"]
      UI_L1["UI_系統層:Compose框架"]
      UI_L2["UI_子系統層:無"]
      UI_L3["UI_安全架構層:防劫持"]
      UI_L4["UI_模組層:主題模組"]
      UI_L5["UI_包結構層:組件包"]
      UI_L6["UI_類與介面層:組合函數"]
      UI_L7["UI_方法層:事件處理"]
      UI_L8["UI_程式碼塊層:條件渲染"]
      UI_L9["UI_語句層:UI組合"]
      UI_L10["UI_表達式層:動畫"]
      UI_L11["UI_原子操作層:文本屬性"]
      UI_L0 --> UI_L1 --> UI_L2 --> UI_L3 --> UI_L4 --> UI_L5 --> UI_L6 --> UI_L7 --> UI_L8 --> UI_L9 --> UI_L10 --> UI_L11
    end
  end

  %% ====== 關鍵依賴 ======
  %% 伺服器內部依賴
  DB_L11 --> RP_L6
  ET_L11 --> RP_L6
  RP_L11 --> SV_L7
  SV_L11 --> CT_L7

  %% 客戶端內部依賴
  DS_L11 --> CR_L7
  CR_L11 --> UC_L9
  UC_L11 --> VM_L11
  VM_L11 --> UI_L7

  %% 跨端通信
  DS_L6 --> CT_L7

  %% 安全體系
  DB_L3 --> ET_L3
  CT_L3 --> DS_L3
  SV_L3 --> RP_L3
  VM_L3 --> UI_L3

  %% 原子操作
  DB_L11 --> RP_L11
  ET_L11 --> RP_L9
  SV_L11 --> CT_L11
  CR_L11 --> UC_L11

  %% ====== 樣式設計 ======
  %% 定義
  classDef server fill:#FFD6E7,stroke:#FF2D95
  classDef client fill:#D6F0FF,stroke:#00A1FF
  classDef Database fill:#FFEC8B,stroke:#FF8C00
  classDef Entity fill:#87CEEB,stroke:#1E90FF
  classDef Repository fill:#FFB5C5,stroke:#FF1493
  classDef Service fill:#E6E6FA,stroke:#9370DB
  classDef Controller fill:#C1FFC1,stroke:#32CD32
  classDef DataSource fill:#B0E0E6,stroke:#1E90FF
  classDef ClientRepository fill:#FFDAB9,stroke:#FF6347
  classDef UseCase fill:#8470FF,stroke:#0000FF
  classDef ViewModel fill:#FFA07A,stroke:#CD853F
  classDef UI fill:#87CEFA,stroke:#4169E1
  
  %% 應用
  class server server
  class client client
  class Database Database
  class Entity Entity
  class Repository Repository
  class Service Service
  class Controller Controller
  class DataSource DataSource
  class ClientRepository ClientRepository
  class UseCase UseCase
  class ViewModel ViewModel
  class UI UI
        </div>
        
        <div class="note">
            注意: 此圖表使用Mermaid.js渲染。如果圖表未正確顯示,請確保已加載Mermaid庫。
        </div>
    </div>
    
    <script>
        // 初始化Mermaid圖表
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            securityLevel: 'loose',
            flowchart: {
                useMaxWidth: false,
                htmlLabels: true,
                curve: 'basis'
            },
            themeCSS: `
                .node rect {
                    stroke-width: 1.5px;
                    stroke-opacity: 0.8;
                    rx: 5px;
                    ry: 5px;
                }
                .edgePath path {
                    stroke: #555;
                    stroke-width: 1.5px;
                }
            `
        });
    </script>
</body>
</html>
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。