メインコンテンツまでスキップ

構造と境界

現場タブレットアプリを修正したり、他のシステムと連携させたりする際に把握しておくべき構造です。ソースは plantpulse-platform/plantpulse-frontline-web リポジトリです。

構成​

태블릿 브라우저 (PWA) frontline 컨테이너 플랫폼
┌──────────────────────┐ HTTPS ┌──────────────────────────────┐ V5 ┌──────────────┐
│ React 웹 앱 │ ──────▶ │ BFF (/api/*) │ ────▶ │ server-web │
│ 서비스워커 · 입력 큐 │ 9701 │ · 기기 토큰 · 작업자 세션 │ 토큰 │ /api/v5/... │
└──────────────────────┘ │ · 범위 검사 · 감사 로그 │ 하나 └──────────────┘
└──────────────┬───────────────┘
│ JDBC
플랫폼 DB pp · 스키마 pf
部分内容リポジトリ内の位置
WebReact 19 + TypeScript + Vite PWA。サービスワーカー、オフライン入力キュー(IndexedDB)、画面別の最終値(localStorage)。グラフは ECharts 6 — グラフがある画面を開く時のみ読み込む別チャンクweb/
BFFSpring Boot 4.1 WAR。Platform 共用 Tomcat 10.1(runtime-base) 上で動作。ディスパッチャーは /api/* にのみ適用。範囲確認(scope/)、点検(maintenance/)、不良(defect/)、レポート(floor/ReportController)がここに実装src/plantpulse/frontline/
DBPlatform データベース pp の pf スキーマ(2026-10-29 前は frontline)、Platform の既存 DB アカウント。テーブルは fl_ で始まる。スキーマは Flyway で適用(V1~V14)src/db/migration/
イメージdocker.kopens.io/pp/plantpulse-frontline-web。ポート 9701(TLS) · 9700(ヘルスチェックのみ)Dockerfile

スキーマ履歴​

バージョン内容
V1~V4作業者 · PIN · 設備 · 設定 · 理由一覧 · 交替メモ · 監査ログ、画面言語 · テーマ
V5言語項目の CHECK IN ('ko','en') を削除し fl_operator.lang · fl_operator_revision.lang · fl_device.default_lang を VARCHAR(35)(BCP 47) に拡張。許可言語はスキーマではなくサーバーの一覧で定義
V6fl_setting の kiosk.micro_stop_seconds 行を削除。短時間停止基準は Platform 設定に従う(旧値は移行しない)
V7担当範囲。以下参照
V8監査ログを個人別にページ単位で読み込むためのインデックス
V9作業者ログインと Platform 社員(pp.mm_employee)の連携項目
V10作業者アカウントを Platform へ移行。ログインキャッシュ fl_account_cache と同期状態 fl_account_sync を作成し、セッションが Platform 社員 ID を指すように変更(既存セッションは削除 — 適用後、全タブレットで再ログインが必要)。旧 fl_operator · fl_operator_scope は Platform への移行確認後、V11 で削除
V11旧作業者テーブル(fl_operator · fl_operator_scope および各履歴テーブル)を削除。Platform への移行完了とマークされた導入(fl_account_sync.imported_at)からのみ削除し、未移行の導入は保持
V12設備「主要値» fl_key_value — 設備ごとに概要に優先表示するタグを最大6個まで(タグIDと順序のみ、値は V5 から読み取り)
V13顧客ロゴ fl_brand_logo — ライトモード・ダークモードの PNG 各1枚
V14設備デフォルト範囲 fl_device.default_scope_type の許可段階を SITE · AREA · LINE · ASSET の4段階に拡張(以前は LINE · ASSET)。既存行は維持

スキーマ名の変更。 アプリは Flyway より先に frontline スキーマが存在し pf がない場合のみ ALTER SCHEMA frontline RENAME TO pf を一括で1回実行する。テーブル · データ · Flyway 履歴 · 設定(ai.url · ai.api_key)はそのまま移行され、コピーは行わない。再起動後は pf が存在するため何もしない(べき等)。新規導入時は Flyway が pf を作成する。両方存在する場合は推測せず警告のみを残し pf を使用する。DB が応答しない場合は起動しない — スキップすると Flyway が空の pf を作成し、データが消失したように見えるため。

作業者アカウントの移行。 起動後の初回同期前に fl_operator · fl_operator_scope を V5 POST /app-accounts/frontline/import へ1回送信する。PIN ハッシュはそのまま移行する(再ハッシュしない)。社員に連携されていないログインは Platform が社員 EMP_FL_<로그인 번호> を作成して紐付ける。Platform に既に存在するログイン番号は Platform 側を優先する(EXISTS)。全行が CREATED · EXISTS で返ってきた時点で完了とマークし、それ以外は次回回に再送する(べき等)。

Platform との境界​

アプリは数値を生成しない

OEE · 稼働率 · 性能 · 品質 · 停止時間 · 損失 · MTBF · MTTR は Platform V5 が提供した値のみを表示する。Platform が提供しない値は空欄または«データなし»とするか非表示にし、0 や推定値で埋めない。画面で計算するのは表示用の進捗率(良品 ÷ 計画)のみであり、グラフは V5 の値をそのまま描き、軸単位のみを変更する。これにより、タブレット · Platform Web · レポート · AI が同一の数値を参照する。

  • Platform データは V5 経由でのみ読み書きする。同じ pp データベースにあっても Platform テーブルを直接参照・更新せず、pf スキーマに Platform データのコピーを保持しない。点検呼出と不良記録もアプリ側にコピーは持たず、正本は V5 の点検オーダー · 不良記録とする。
  • 唯一の例外 — ログインキャッシュ fl_account_cache。 Platform が再起動している間も現場でログイン可能にするために保持する。詳細は以下 作業者アカウント。他のテーブルに PIN ハッシュ · 社員名 · 在籍状態を持たせない(テストで禁止)。
  • MES 機能を実装しない。 作業者アカウントはログイン手段(ログイン番号 · 役割 · PIN)と 担当範囲(参照可能範囲)のみを管理する。担当範囲は MES の人員配置ではなく、資格 · 交替編成 · 個人実績 · 人員集計は扱わない。オーダーは選択して開始 · 一時停止 · 再開 · 終了 · 中断(理由コード)を行い、時間基準のオーダー達成率を報告する — 発行 · 編集は Platform で行う。
  • pf スキーマに保持するのは、設備(デフォルト言語 · 画面テーマ含む) · 設備別理由一覧 · キオスク設定 · 交替メモ · 監査ログ · セッション、およびログインキャッシュ(fl_account_cache · fl_account_sync)である。作業者アカウント(ログイン番号 · PIN ハッシュ · 役割 · 担当範囲 · 画面言語 · テーマ)の正本は Platform pp.mm_app_account · pp.mm_app_account_scope である。
  • V5 呼出時は、閲覧者の言語を Accept-Language として送信する。停止理由 · 故障モード · 不良原因名は V5 が返したままの形式で表示する。

判定も Platform が行う​

画面に表示する判定はアプリで行わず、V5 が提供した値をそのまま使用する。アプリ側にあった判定コード(計画 · 出典 · 長さ比較、交替ウィンドウ選択と8時間代替ウィンドウ)は削除した。

判定V5 の出典
今回の交替ウィンドウGET /calendar/shift-schedule/current。勤務表がない場合の«最近9時間»も V5 が提供する(ユーザーが12時間を選択した場合はその分拡張する)。V5 がウィンドウを返せない場合、カードはその拒否内容をそのまま伝え、アプリ側でウィンドウを捏造しない
«現在計画» オーダー同一レスポンスの planned_order_id
理由が未入力の停止停止ごとの needs_reason
短時間停止停止ごとの short。基準は GET /config/PP_STOP_MICRO_STOP_SECONDS(デフォルト60秒、0~1800、0 の場合は全て問い合わせる)

アプリが呼ぶ V5​

読み取り用途
GET /site · /asset/lines/by-site/… · /asset/equipments/by-line/… · /path/asset/…範囲選択(サイト → ライン → 設備)
GET /asset/… · GET /site/… · GET /asset/equipments/by-line/…担当範囲ノード解析(親チェーン)。ラインの計画対比は設備一覧で問い合わせる
GET /asset/…/status状態と持続時間
GET /kpi/oee/status/current · /kpi/period交替 OEE、ダッシュボード期間指標
GET /kpi/dailyダッシュボード · レポートの日別推移
GET /ram/breakdown?by=CAUSE · /failure-dictionary/alarm-cause故障原因パレートと原因名
GET /asset/…/stops · /asset/…/stop-lossタイムライン、理由未入力停止、短時間停止、停止理由別損失
GET /asset/…/timeline/alarmsアラーム(min_priority, limit=500)。BFF が進行中(最近7日以内に発生したもの)と今日終了したもののみを抽出
GET /stop-reasons原因辞書(理由ボタン、設定の停止理由一覧)
GET /calendar/shift-schedule/current今回の交替ウィンドウ(asset_id)。応答項目は from_ts · to_ts · shift_code · shift_date · from_plan · planned_order_id
GET /config/PP_STOP_MICRO_STOP_SECONDS短時間停止基準(1分キャッシュ)
GET /order/query · /order/current-asset · /order/… · /order/…/quantityオーダー一覧 · 進行オーダー · 詳細 · 数量
GET /order/…/revisions · /order/…/progress変更履歴、達成率報告履歴。V5 は社員番号のみを返すため、BFF がログインキャッシュから名前を探し names として付与する(社員番号がない場合はそのまま)
GET /maintenance-orders · /maintenance-orders/options · /maintenance-orders/…点検ボード(open=true&order=asc&limit=100, 範囲 · 担当者フィルタ)、症状 · コード一覧、取消前確認
GET /asset/…/defects/options · /asset/…/defects · /order/…/defects · /defects/…不良原因一覧、設備 · オーダーの不良記録
GET /asset/qr/{token}読み取った QR ラベルのトークン → 設備。BFF のみが呼び出し、トークンはログに残さない
GET /order/deviation-summary · /defects/summary · /maintenance-orders/summaryレポートの計画対比 · 不良原因 · 点検要約(遅延読み込み)

GET /order/query はワークオーダー画面のために line_id · site_id · status=END,ABORTED · end_since · end_before · include=oee · sort · limit=500 · order_id フィルタを使用する。点検ボードの読み取りは BFF が 5秒、点検 · 不良 options は 60秒の共有キャッシュを持ち、書き込み時にクリアする。

書き込み用途ヘッダー
PUT /asset/{asset}/stops/{started_at}/reason停止理由記録Idempotency-Key
PUT /order/{order}/quantity数量訂正(良品 · 不良 合計 + 理由)Idempotency-Key
POST /order/{order}/start · pause · resume · endオーダー遷移。本文に押下時刻 occurred_at(epoch ms)If-Match (オーダー version)
POST /order/{order}/abortオーダー中断。abort_code · abort_notes · occurred_atIf-Match · Idempotency-Key
POST /order/{order}/progress達成率報告。percent_complete(0~100 整数) · note · reported_atIf-Match · Idempotency-Key
POST /asset/{asset}/maintenance-orders点検呼出(maintenance_kind_code: CORRECTIVE, failure_mode_code · 説明 · 呼出者)Idempotency-Key · X-PP-Channel: FRONTLINE
POST /maintenance-orders/{id}/transition受付 · 修理開始 · 完了(status_code + 処置 · 部品 · 故障コード)、取消(status_code: CANCELLED + cancel_reason_code)。version は本文に記載Idempotency-Key · X-PP-Channel
POST /asset/{asset}/defects不良記録Idempotency-Key · X-PP-Channel
POST /defects/{id}/cancel不良記録取消If-Match · X-PP-Channel
  • 全ての書き込みに X-PP-Performed-By: 로그인한 사번 を含める。V5 はこれを performed_by として記録し changed_by はアプリアカウントとする。オフラインキューで後送する場合も押下者の社員番号が記録される。
  • 書き込みには Idempotency-Key を付与する。オフラインキューで再送しても V5 が同一の書き込みを二重に受け取らないようにする。
  • オーダー遷移は If-Match で version を合わせる。その間に他者が変更していた場合は 409 が返され、画面に«他の人が先に変更しました»と表示する。
  • オーダー遷移 · 中断 · 不良記録は 押下時刻 を記録する。キューから後送されても実績時刻は押下時刻となる。
  • «前オーダーを終了して開始» は BFF が end と start を順に呼び出す。各フェーズで個別のべき等キーを使用し、両フェーズに同一の押下時刻を記録する。2番目が失敗しても1番目は切り戻さず、そのまま通知する。

V5 自体については API 文書を参照。

QR ラベルからのアクセス時​

Platform の 公開ページ «frontline で開く» は <PP_UI_FRONTLINE_URL>/#/qr/<token> として遷移する。アドレスに設備 ID は含まれない。

  1. アプリはトークンをアドレスから直ちに削除し、そのタブの sessionStorage に保持する(fl.qr_pending)。ログイン前にはサーバーへ送信しない。
  2. ログイン後、トークンを取り出し BFF POST /api/v1/qr/resolve の 本文 で送信する — パスに含めると通過するアクセスログに全て残るため。
  3. BFF はトークンの形式(base64url 43文字)をまず確認し、V5 GET /asset/qr/{token} で設備を特定し、当該アカウント · タブレットがその設備を選択可能か範囲チップと同ルールで確認する。
  4. 通過した場合、アプリが範囲をその設備に移動させ«現在»を開く。
応答コード画面
400qr_tokenラベルトークンではない
404qr_unknown再発行済みまたは設備が消失した
403scope_denied担当範囲外である

作業者アカウント V5​

作業者アカウントは Platform V5 /api/v5/app-accounts/frontline に存在する。ADMIN トークンまたは Platform マスターキーのみ呼び出し可能(変更フィードに PIN ハッシュが含まれるため)。

呼出用途
GET /app-accounts/frontlineアカウント一覧(社員名 · 在籍状態含む)。アプリの読み取り専用«作業者»タブ
GET /app-accounts/frontline/{employee_id}単一レコード(ETag = version)
PUT /app-accounts/frontline/{employee_id}アカウント作成 · 修正(ログイン番号 · 役割 · 許可 · 一時 PIN)
DELETE /app-accounts/frontline/{employee_id}ログイン削除(社員は保持)。最後の管理者は削除不可
PUT /app-accounts/frontline/{employee_id}/scope担当範囲 — {"all": true} または {"nodes": [...]}
POST /app-accounts/frontline/pin/verifyキーパッド PIN 確認。常に 200 と結果(OK · INVALID · LOCKED · DISABLED · PIN_RESET_REQUIRED · EMPLOYEE_INACTIVE · EMPLOYEE_ON_LEAVE)を返す
POST /app-accounts/frontline/{employee_id}/pin本人 PIN 変更(現 PIN · 新 PIN)
POST /app-accounts/frontline/{employee_id}/pin/reset管理者 PIN 初期化(一時 PIN, ロック解除含む)
POST /app-accounts/frontline/{employee_id}/unlockロック解除
GET /app-accounts/frontline/changes変更フィード(カーソル)。ログインキャッシュがこれを読み取る
POST /app-accounts/frontline/importアプリの旧ログイン移行(べき等)
  • ログイン。 Platform に接続できれば BFF は pin/verify のみを呼び出す。失敗回数 · ロック(5回ミスで5分) · 退職 · 休職拒否は Platform が制御する。
  • ログインキャッシュ。 AccountSync が 60秒ごとに変更フィードをカーソルから最後まで読み取り fl_account_cache を同期させる(スナップショットに PIN ハッシュ · 在籍状態 · 範囲が含まれる)。キャッシュは Platform に接続できない場合のみ読み取り、最終成功同期が accounts.offline_days(管理者«キオスク»画面, デフォルト7日, 1~30日)より古い場合はオフラインログインを拒否する(fail-closed, 503 offline_login_expired)。
  • オフライン失敗。 キャッシュで確認し PIN が不一致の場合、アプリ側で回数をカウントし(個人別5回で5分、設備別20回で15分)、Platform へは送信しない。
  • オフラインで不可な操作。 PIN 変更 · 画面言語 · テーマ変更は Platform 接続時のみ可能。アカウント編集 · PIN 初期化 · ロック解除はアプリ側には実装せず(コンソール«社員»で実施)。
  • 本人が変更可能なのは PIN(BFF PUT /v1/session/pin) · 画面言語 · テーマ(PUT /v1/me/preferences)と, «マイプロファイル» の連絡先 · 写真(PUT /v1/me/profile · PUT /v1/me/photo, Platform 社員情報)である。

二重化(HA)について​

Platform 二重化の PG メタ同期により、frontline のデータも待機クラスターへ移行される。

移行対象非移行対象(ノード毎)
作業者アカウントと担当範囲 pp.mm_app_account · pp.mm_app_account_scope(PIN ハッシュ含む)セッション · 設備登録コード · 監査ログ · 交替メモ · べき等記録
キオスク設定 pf.fl_setting · 設備別停止理由一覧 pf.fl_asset_reason_list · 登録タブレット pf.fl_deviceログインキャッシュ fl_account_cache · fl_account_sync — 各ノードが自身の Platform 変更フィードで埋める
AI キー(fl_setting の ai.api_key)は metasync.include.tokens=true の場合のみ

Platform 再起動時​

Platform の再起動は通常 1~3分、長くとも 10分程度である。その間もアプリは停止しない。

  • BFF は V5 または自社 DB に接続できない場合、503 と X-FL-Offline ヘッダーで«現在不可»を通知する。拒否(4xx)とは区別される。
  • Web はその応答を受け取ると接続断として表示し、画面は最終値を«3分前基準»のように受信時刻と共に表示する。捏造値は出さず、BFF が最後に提供した値のみを表示する。
  • キューに格納されるのは、停止理由 · オーダー遷移(中断含む) · 達成率報告 · 点検呼出 · 不良記録である。同一オーダー · 停止に触れる入力はキュー順を維持し、前のものが拒否された場合は後のものは送信せず、ユーザーの判断を待つ。
  • 復帰は /api/health を 2 · 4 · 8 · 15秒(以降15秒繰り返し)間隔で問い合わせ、DB と Platform が共に UP であれば接続状態に戻し、キューを送信し、画面を再読み込みする。
  • 数量訂正 · 点検段階移行 · 点検呼出取消 · 不良記録取消はキューに入れない — その時点の値と version を基準に判断する書き込みであるため、接続状態でのみ受け付ける。既にキューにある点検呼出の取消は、キューから削除することで完結させる。
  • V5 読み取りのタイムアウトは接続 2秒、応答 5秒とする。レポートの重量級要約(計画対比 · 不良 · 点検)のみ 20秒まで待機し、それを超えても回路を開放(サーキットブレイカー)はせず、当該カードのみ 504 platform_slow で失敗させ接続断状態へは移行させない。

PlantPulse AI チャット​

タブレットの«AI に聞く»は BFF が PlantPulse AI の現場チャット API へ中継する。Platform V5 とは別接続であるため、AI の遅延や停止が Platform の接続断として扱われることはない。

BFFAI 側用途
GET /api/v1/chat/capabilitiesGET /api/v1/chat/capabilitiesボタン表示の可否(60秒記憶)。範囲がないユーザーは AI を呼び出さず«なし»と表示
POST /api/v1/chat/streamPOST /api/v1/chat/stream応答を SSE で受け取りそのままストリーム送信
POST /api/v1/chat/cancelPOST /api/v1/chat/cancel停止。同一ユーザーの会話のみ
  • アドレスとキーはアプリ DB fl_setting の ai.url · ai.api_key に保持(設定 → AI)。キーは X-API-Key でのみ送信し、ログ · 応答 · 例外文には記載しない。
  • リクエストには«代理問い合わせ者»としてログイン済み社員番号(X-PP-Performed-By と同一値)とその人物の範囲(範囲確認と同ルール)を載せる。範囲がない場合は AI を呼び出さず 403 を返す。
  • 画面言語は Accept-Language として送信する。

認証 — 三層構造​

層内容保存場所
Platform キーPlatform マスター API キー。BFF のみが保持コンテナ環境変数 PP_MASTER_API_KEY
設備トークンタブレット登録時に発行される乱数。DB にはハッシュのみ保存。有効期限はなく、管理者が解除した時点で終了。Authorization: Bearer で送信当該ブラウザの localStorage(fl.device_token)。他ブラウザ · シークレットモード · サイトデータを削除したブラウザでは保持されないため未登録扱い
作業者セッションログイン番号 + PIN で生成。PIN は Platform が確認(不可時はログインキャッシュ)。セッションは Platform 社員 ID を指し、自動ログアウト時間まで有効で設備トークンに紐付けられる。X-FL-Session で送信当該タブの sessionStorage — リロード後も保持され、タブを閉じると消滅(ストレージ不可時はメモリ)
  • Platform V5 は USER 役割トークンを受け付けない(ADMIN · API のみ)。そのため個人ごとに Platform トークンを付与せず、マスターキー一つで呼び出す。誰が操作したかは V5 記録の performed_by(上記 X-PP-Performed-By)とアプリの監査ログ(fl_audit — 社員番号 · 設備 · V5 パス · 応答コード · Idempotency-Key)の両方に記録される。
  • Platform 監査ログで本アプリの呼出は行為者 master-api-key とし、プロキシログでは User-Agent PlantPulse-frontline-web/<version> で区別する。
  • 全ての BFF ハンドラーはアクセスレベルを明記する — 表記がない場合は拒否をデフォルトとする。
  • トークン · PIN はログ · 応答 · 例外文に記載しない。

役割確認​

ハンドラーごとに @Access で許可役割を記述する。画面上のボタン非表示とは別に、サーバー側で再度ブロックする。

操作許可役割
点検受付 · 修理開始 · 完了点検 · 管理者
オーダー中断班長 · 管理者
点検呼出 · 点検呼出取消 · 不良記録 · 不良記録取消全4役割。取消はハンドラーで再確認 — 本人または班長 · 管理者
設定(/v1/admin/)管理者

範囲確認​

役割の次に 担当範囲 を確認する。全ての現場リクエストは scope/ScopeInterceptor の一箇所を通過する(認証インターセプタの後)。

  • 対象はパス · クエリに含まれる設備 · ライン · オーダー(V5 で設備を確認) · 点検オーダー · 不良記録である。読み取りは範囲内である必要があり、書き込みは RW である必要がある。
  • 範囲外の場合は 403 scope_denied、閲覧専用で書き込みを試みた場合は 403 scope_read_only を返す。
  • @OpenToReadOnly(点検呼出, 点検呼出取消)は読み取りレベルでのみ確認する — 設備を«閲覧»権限のみで受け取ったユーザーも点検を呼出できなければならないため。他人の呼出取消はハンドラーで再度ブロックする。
  • ログイン範囲 = アカウント範囲 ∩ 設備デフォルト範囲(ScopeGuard.within)。アカウントノードが設備ノードと同一またはその下位にあればそのまま保持し、設備ノードより上位にあれば設備ノードを当該アカウントノードの access として付与する。重複しないノードは破棄する。アカウントが scope_all の場合は設備ノード RW となる。設備側で範囲を広げたり RO を RW に昇格させることはない。管理者役割およびデフォルト範囲を持たない設備は絞り込まない。設備デフォルト範囲はサイト · エリア · ライン · 設備いずれの段階でも設定可能(DeviceScope)。
  • ノードは下位へ継承される。1つの設備が RW と RO を同時に受け取った場合 RW が優先される。ノードは V5 で親チェーンを解析し 5分間保持する。V5 から削除されたノードのアクセス権は 0 となる。
  • ダッシュボード · レポートは そのノード自体 が範囲内である必要がある。設備一つを許可されたからといって、そのラインのダッシュボードが開くことはない。
  • 一覧はハンドラーで絞り込む — 範囲ツリー、ラインカード · アラーム数、ワークオーダー(行ごとに access を同封)、点検ボード。
  • fail-closed である。scope_all でもなくノードも存在しない場合は何も読み取れない。範囲は Platform アカウント(pp.mm_app_account.scope_all · pp.mm_app_account_scope)から派生し、アプリ側には範囲を修正する API は存在しない。V5 は空のノード一覧を«何もない»として受け取り、ノードは最大 200個までとする。
  • 管理者役割は範囲確認なしで全権限を持つ。管理 API(/v1/admin/)は範囲確認をスキップし管理者役割のみを確認する。
  • ログインしていないタブレット(«PIN なしで «現在» 表示»)は、設備デフォルト範囲のみを RO で読み取る。

ログイン応答には 4つの範囲項目が含まれる。

項目意味
scope{"all": true} またはノード一覧(id · kind · access)
scope_noneこのタブレットで表示可能なものが一切ない — Web はメニューなしで案内とログアウトのみを表示
scope_none_reasonscope_none 時の理由。ACCOUNT はアカウントに範囲がない(«範囲未指定»), TABLET はアカウント範囲と本タブレット範囲が重複しない(«このタブレットで表示可能な範囲がありません»)
home_scope画面が開始する範囲(最後に選択したもの、なければ設備デフォルト範囲)がユーザー範囲外である場合に代わりに開く最初の設備またはライン

環境変数​

変数内容
PP_TZ表示タイムゾーン(必須)。保存は UTC epoch、画面はこのタイムゾーンで表示。日付跨ぎ · «今日» · 日付跨ぎウィンドウの日付グループもこのタイムゾーンに従う
PP_LANG導入言語(必須)。サポート言語一覧のタグ(現在は ko · en)である必要があり、大文字小文字と地域バリアント(en-US)も許容する。一覧にない場合は起動しない
PP_SERVER_URLPlatform V5 アドレス
PP_MASTER_API_KEYPlatform マスター API キー。server-web · batch-web · warehouse-web と同一の値 — 変更時は 4つ同時に再起動する
PP_POSTGRES_HOST · PP_POSTGRES_PORTデータレイク PostgreSQL
PP_DB_NAME · PP_PG_USER · PP_PG_PASSWORDPlatform データベース(pp)とアカウント。server-web · batch-web · warehouse-web と同一名称 · 同一値。frontline 専用アカウント · パスワードは存在しない

PP_MASTER_API_KEY · PP_PG_PASSWORD · PP_POSTGRES_HOST がない場合、コンテナは起動しない。JVM ヒープは 512 MB(direct 128 MB)に固定。担当範囲 · 点検 · 不良 · レポートのために新設された変数はない。

新しい画面言語を追加するには、Web バンドルに web/src/i18n/<태그>.json を含め、サーバーのサポート言語一覧に1行追加する。スキーマは変更しない(V5)。

今後の実装項目​

以下の項目はまだアプリに実装されていない。画面上にスペースは確保しておらず、Platform に汎用 V5 API が実装され次第、BFF に呼出を追加して開く。

項目現状Platform に必要なもの
週別推移 · 過去期間比較なし(日別推移は /kpi/daily で実装済み)週単位の期間系列
エネルギー(EMS)なし — ダッシュボードタブもレポート節もないEMS API
ライン単位の停止理由別損失なし — 設備のみで描画ライン範囲の停止損失集計
時間別 実績 / 目標なし時間別目標 · 実績 API
交替損失ウォーターフォールなし — 交替 OEE ウィンドウには OEE · 稼働率 · 性能 · 品質と停止理由上位のみが存在損失分解
停止手動登録 · 時間帯別数量なし停止書き込みパス, 時間帯別数量書き込み

以前のバージョンでこの表にあった項目のうち、以下は実装済みである。

項目実装方法
操作者(Platform 記録の社員番号)全書き込みの X-PP-Performed-By → V5 performed_by
点検呼出 → 受付 → 修理開始 → 完了V5 /maintenance-orders
不良数量 + 理由V5 /defects
日別推移V5 /kpi/daily
交替 · 日 · 週間レポートBFF GET /v1/report が V5 の KPI · オーダー · 要約 API を集約