アーキテクチャ図 (C4 / Structurizr)¶
Greco のアーキテクチャを C4 モデル で表します。正準の
定義は Structurizr DSL ファイル workspace.dsl にあります。GitHub 上で
.md を直接閲覧するときにも概観できるよう、同じ構成を Mermaid で簡略表現した補助図も掲載します。
典拠: apps/web (ADR 0014)、apps/api (ADR 0009)、apps/mobile、
Supabase (ADR 0002 / 0003)、apps/api/src/ocr/extractor.ts (Claude 構造化抽出・
claude-sonnet-5 → 低スコア時 claude-opus-4-8、wrangler.toml が正) —
manifests.ts (マニフェスト OCR) / vehicle-costs.ts (請求書 OCR) が利用、
scripts/invite-org.mjs (Resend)。
システムコンテキスト (補助図)¶
システムコンテキスト(利用者と外部系)。
OCR は Anthropic Claude (structured outputs。
claude-sonnet-5→ 低スコア時claude-opus-4-8、wrangler.tomlが正) で構造化抽出します。 マニフェスト取込 (manifests.ts) と車両コスト請求書取込 (vehicle-costs.ts) が共有する。
コンテナ図 (補助図)¶
workspace.dsl の Container ビューと同じ構成です。Web の業務データは ADR 0018 の同一オリジン
proxy と API を経由して Supabase へ到達します。特権操作(招待・メンバー管理・OCR)は API の
service_role 経路を使い、ブラウザから Supabase へ直接リクエストしません。
Mobile は不使用の歴史的資産で、現行のドライバーチャネルは PWA です。
flowchart LR
discharger["排出事業者"]
staff["処理業者スタッフ"]
driver["ドライバー"]
operator["運営"]
subgraph wl["Greco"]
web["Web SPA<br/>Vite+React / CF Pages"]
mobile["Mobile<br/>不使用(歴史的資産・ドライバーチャネルは PWA)"]
api["API<br/>Hono / CF Workers"]
script["運用スクリプト<br/>invite-org.mjs"]
auth["Auth<br/>Supabase Auth"]
db[("Database<br/>Supabase Postgres + RLS")]
end
resend["Resend"]
claude["Anthropic Claude"]
discharger --> web
staff --> web
driver --> web
driver -.->|歴史的資産(現在は PWA)| mobile
operator --> script
web -->|ログイン| auth
web -->|ADR 0018 同一オリジン proxy| api
web -->|特権操作| api
mobile -->|ログイン| auth
mobile -->|歴史的な直接経路| db
api -->|JWT/RLS または service_role| db
api -->|Admin API| auth
api -->|OCR: 構造化抽出| claude
script -->|service_role| db
script -->|招待メール| resend
Structurizr DSL のレンダリング方法¶
正準の C4 定義は workspace.dsl です。Mermaid 補助図は概観用で、
正確な C4 ビュー (SystemContext / Container) は以下のいずれかでレンダリングします。
- structurizr.com でワークスペースを作成。
workspace.dslの内容を DSL エディタに貼り付ける。- SystemContext / Container ビューを表示・エクスポート (PNG/SVG/PlantUML 等)。
DSL の検証状況
workspace.dsl の構文は目視で確認しています。本リポジトリの CI には
structurizr-cli を組み込んでいないため、自動レンダリング検証は行っていません。
図を更新する場合は上記いずれかの方法でレンダリングし、内容を確認してください。
ビュー一覧¶
| ビュー | 種別 | 内容 |
|---|---|---|
| SystemContext | System Context | 4 アクター (排出事業者 / 処理業者スタッフ / ドライバー / 運営) と外部システム (Resend / Anthropic Claude) との関係。Google Cloud Vision は正準 DSL に要素なし。 |
| Containers | Container | Web SPA / Mobile(不使用・歴史的資産) / API / 運用スクリプト / Database / Auth と、外部システムとの関係。 |
関連 ADR: 0009 API を Cloudflare Workers (Hono) で構築、 0002 バックエンドに Supabase を採用、 0014 フロントエンド技術選定、 0010 環境分割 (dev / prod)。