Source Tree

nia-shift ソースツリー

プロジェクト全体のフォルダ構成と、実際に稼働しているCloudflare版(cloudflare-app/)の中身を樹形図で示します。GAS版など更新停止中のものも含め、何がどこにあるか迷わないための地図です。

保守対象 cloudflare-app/ のみ それ以外 参照・レガシー(編集しない)

プロジェクト全体(nia-shift/)

ローカルの /Users/tanakaseiya/Downloads/nia-shift/ 直下。今後の修正はすべて cloudflare-app/ に対して行う。

nia-shift/
├── cloudflare-app/現行アプリ本体。詳細は下のツリー参照保守中
├── src/旧GAS版のソース(Index/Javascript/Css.html, WebApp.js 等)停止
├── netlify-app/移行検討時の試作(Netlify + Turso)。不採用のため未使用未使用
├── homescreen-icon/ホーム画面アイコン起動用の補助ページ(Firebase Hosting)保守中
├── nia-shift_仕様書.md初期設計時の仕様書。アプリ内「仕様書」ページの元データ
└── README.mdプロジェクト全体の簡単な説明

cloudflare-app/ の中身

画面(public/)・API(functions/)・通知バッチ(notify-worker/)・DBスキーマ(migrations/)の4本柱。

cloudflare-app/
├── public/Cloudflare Pagesがそのまま配信する静的ファイル一式
│   ├── index.htmlアプリ本体。画面・CSS・JSを1ファイルに統合
│   ├── infra-map.html運用基盤マップページ(ハンバーガーメニュー「参考」から)
│   └── spec.html仕様書ページ(同上)
├── functions/Cloudflare Pages Functions(サーバー処理)
│   ├── api.js全APIの入口。/api へのPOSTを{fn, args}形式で一手に処理
│   └── lib/api.js が使う実装本体
│       ├── config.js定数(テーブル名・ステータス値・役職順・D1容量上限)
│       ├── db.jsD1クエリの薄いラッパー(INSERT/UPDATE文の組み立て等)
│       ├── dates.js日付・時刻ユーティリティ(Asia/Tokyo基準)
│       ├── auth.jsパスワードハッシュ・署名付きチームトークン(Web Crypto API)
│       ├── repositories.jsUsers/Shifts/SalesChannels/Sessions等のCRUD
│       ├── settingsRepository.jsアプリ内設定(Key/Value)の読み書き
│       ├── notifications.jsLINE/Chatwork向け稼働通知メッセージの組み立て・送信
│       └── storageService.jsD1ストレージ使用量の監視(Cloudflare API経由)
├── notify-worker/Pagesとは別の独立Worker(Cron Trigger専用)
│   ├── index.js15分おき通知バッチ + 毎朝6時のストレージ使用量チェック
│   └── wrangler.tomlnotify-worker専用のCloudflare設定(cronスケジュール等)
├── migrations/D1に流し込むSQL
│   ├── 0001_init.sql初期テーブル定義(8テーブル)
│   └── 9999_migrate_data.sqlGAS版スプレッドシートからのデータ移行用(実行済み)
├── scripts/手動実行用のNode.jsスクリプト
│   └── migrate-from-sheets.cjsGoogleスプレッドシート→D1移行SQLの生成(実行済み)
├── wrangler.tomlPagesプロジェクト全体の設定(D1バインディング等)
├── package.json依存パッケージ定義(googleapis, wrangler等)
├── db-dump.html生データダンプの生成物(ローカル控え、非公開)
└── README.mdセットアップ手順・環境変数一覧

主な設定ファイル

コードではないが、動作を左右する設定ファイル4つ。

wrangler.toml
Pagesプロジェクト名・出力先(public/)・D1データベースのバインディング(DBという名前で functions/ から参照可能にする)を定義
notify-worker/wrangler.toml
通知バッチWorker専用の設定。15分おきの稼働通知と毎朝6時のストレージチェック、2本のCron Triggerを定義
migrations/0001_init.sql
D1(SQLite互換)のテーブル定義。Users・Shifts・ShiftHistory等8テーブルの列構成そのもの
package.json
npmの依存パッケージ(データ移行用のgoogleapis、デプロイ用のwrangler)を定義

このツリーは手作業でまとめたスナップショットです。実際の最新構成を確認したい場合はClaudeに「ソースツリーを更新して」と伝えてください。環境変数・シークレット(ACCESS_PASSWORD等)はCF_API_TOKENのようにファイル名には出てこないため、値は運用基盤マップのCloudflareダッシュボードから確認してください。