跳至主要内容

Software Layers

Jope.SMB 由自家開發的三層軟體堆疊構成,外加一個獨立的 Python 推論 process。 每層邊界明確,個別層可獨立演進不影響其他層。

Layer Stack

Layer 職責

Jope.Core · 底層框架

  • Transport — Messaging (ZMQ abstractions)、HTTP helpers、WebSocket (future)
  • Compliance — Append-only Audit trail、Electronic Signature service、hash-chain 完整性驗證
  • Identity — User / Role / Permission / Session 管理、RBAC enforcement、4-eyes 輔助
  • FileStorage — WAL-enabled file system 抽象、原子寫入
  • Logging — 跨層 structured log 合約
  • Localization — i18n service 與 resource loader

所有基於 Jope.Core 的應用都繼承相同的 compliance 與 identity 保證。

Jope.UI · 共用 WPF Shell

  • Shell Framework — 主視窗 chrome、導覽 rail、routing、theme 切換(Light / Dark)、執行時 locale 切換
  • Login / Session / Idle Lock — Layout A/B 自適應登入、閒置自動鎖定、session restore
  • Electronic Signature Dialog — 可重用簽章 UI,強制執行 21 CFR 11.100 流程(password + meaning + reason)
  • Dialogs — MessageDialog (5 levels)、Toast、LoadingOverlay、ChangePassword、UserSwitch、VendorAdminGate
  • Design System — JopeDataTable、Card、StatusPill、IconBadge、PasswordStrengthMeter、JopeButton

Jope.UI 與產品無關。Jope.SMB、Jope.Raman 及未來的 Jope app 共用同一個 shell。

Jope.SMB.App · 應用層

  • Batch FSMidle → running → held → completed state machine(Stateless 驅動),transition 需簽章並 audit
  • Recipe / Script Engine — YAML recipe parser、trigger conditions、validation
  • Device I/O — Pump / Valve / Raman / UV driver 實作(IPumpIValveIDetector interfaces)
  • PID Controller — 多迴路獨立流量控制,支援 setpoint ramping
  • Process Flow — GST.Plugin.ProcessFlow 整合、flow diagram 視覺化
  • FlexReport — Batch record report templates、匯出 PDF / Excel

Jope.SMB.App 建構於 Jope.Core + Jope.UI 之上,僅加入層析專用邏輯。

Inference Server · 獨立 Process

  • 獨立 Python 3.11 process,以常駐 daemon 形式執行於專用 plant-LAN 主機(推薦 Linux + systemd,或 Docker / Podman)
  • Stateless — 與 Console 無共享記憶體
  • 鬆散耦合:可替換而不影響 C# codebase
  • 只要遵守 ZMQ Protocol,可透明替換為其他演算法(SVR / DANN / ensemble)

Runtime deployment 見 Topology、wire contract 見 ZMQ Protocol

依賴規則

  • Jope.SMB.App 依賴 Jope.UI + Jope.Core
  • Jope.UI 只依賴 Jope.Core — 不向上依賴
  • Jope.Core 無 Jope-layer 依賴(僅 3rd-party + .NET SDK)
  • Inference Server process 隔離;只透過 ZMQ + REST 通訊

靜態 code analyzer (Jope.UI.Analyzers) 在編譯時強制執行這些邊界。