Infrastructure

運用コンソールは認証の内側に、
紹介サイトだけが公開です

FREYM 運用コンソール(freymadmin.llnpco.dev)はサイト全体が認証の内側にあり、この紹介サイト(freym.llnpco.dev)だけが公開です。インフラは LLNP で、HOMES のサーバーには何も置きません。

Stack

ひとつの台帳の上で動きます

実際に確認できる構成だけを記載しています。部屋・契約・請求・入金が同じ台帳を見ます。

PostgreSQL 台帳正本は台帳ひとつです。部屋の状況・契約・請求・入金/未収・請求書・変更履歴のすべてがこの台帳を見ます。
スキーマのマイグレーション20件台帳の構造はマイグレーション20件で成り立っています。
確定ルールの請求エンジン請求額は確定ルール(JC-01〜07)で計算した算出値です。有効な契約44件すべてが計算され、ブロックは0件、回帰テスト47件がルールを固定します。
運用コンソール — 全体認証freymadmin.llnpco.dev はパスの例外なく、サイト全体が認証の内側にあります(デフォルト遮断)。
紹介サイト — 全体公開freym.llnpco.dev は誰でも見られる公開面です。運用データは載せません。
シートからの移管Google スプレッドシート1個(18タブ・77,000セル・49,400数式)で運用していたものをアプリへ移しました。シートはまだ正本で、切り替え時期は協議中です。

Principles

台帳に埋め込んだルール

運用中に守るべきことを、人の注意力ではなくDBに掛けています。

台帳は append-only物理削除はしません。修正は superseded_by で上書きします。退去した契約も一覧にそのまま残ります。
すべての書き込みが記録されます画面で直したかSQLで直したかの区別なく audit_log にトリガーで残ります。変更履歴の画面でそのまま見られます。
発行した請求書は不変発行すると番号が付き、内容がスナップショットとして固まります。DBのトリガーが変更・削除を防ぎます。
日付は UTC 深夜0時が基準基準時刻をひとつに統一しました。
シークレットはリポジトリに置きません認証情報は環境変数で注入します。

Access

アクセスは2つの面に分かれます

運用データがある面と、紹介だけの面をドメインの段階から分けています。

サイト対象ゲート
運用コンソール freymadmin.llnpco.dev社員サイト全体で認証・パスの例外なし(デフォルト遮断)
ソリューション紹介 freym.llnpco.dev誰でも全体公開・運用データなし

運用データは認証の内側にしかありません。 この紹介サイトに実データは載せておらず、画面の説明と実測値だけがあります。運用コンソールは一部のパスだけを塞ぐ方式ではなく、サイト全体がデフォルト遮断です。

インフラは LLNP です。 HOMES のサーバーには何も置きません。実データは日本7物件98室(運用中77・運用未開始21)・契約51件・会計台帳1,385行で、すべて認証の内側にある運用コンソールにのみあります。