コミュニティ運営の全プロセスをAIで自動化。5フェーズ×60超タスクを一気通貫で管理。
Slack連携・重複チェック・Google Calendar自動登録。申請から確定まで半自動化。
| 予約ID | イベント名 | 日時 | 申請者 | 用途 | ステータス | 操作 |
|---|
3社ベンダー台帳×マッチングロジック×発注メール自動生成。立替精算まで一気通貫。
| 発注ID | イベント名 | ベンダー | 人数 | 金額 | 立替者 | 評価 |
|---|---|---|---|---|---|---|
| 2026-001 | Meetup #14 | B社 | 28名 | ¥210,000 | 田中太郎 | ⭐⭐⭐ ◎ |
| 2026-002 | LT大会 #3 | C社 | 15名 | ¥52,500 | 佐藤花子 | ⭐⭐⭐ ◎ |
| 2025-012 | Meetup #13 | A社 | 35名 | ¥280,000 | 鈴木一郎 | ⭐⭐ ○ |
10種テンプレート×登壇者写真自動処理×Canva連携。プロ品質のフライヤーを半自動生成。
| ID | 氏名 | 所属 | 肩書き | 写真 | 公開可否 | 操作 |
|---|---|---|---|---|---|---|
| S001 | 山田太郎 | 株式会社XX | CTO | 登録済 | 公開 | |
| S002 | 佐藤花子 | 株式会社YY | エンジニア | 未登録 | 公開 | |
| S003 | 鈴木一郎 | 株式会社ZZ | デザイナー | 登録済 | 非公開 |
| 発行ID | イベント名 | 開催日 | テンプレート | 登壇者 | ステータス | 操作 |
|---|---|---|---|---|---|---|
| 2026-F001 | Meetup #14 | 2026/04/20 | T02 サイバーパンク | 山田 / 佐藤 | 承認済 | |
| 2026-F002 | LT大会 #3 | 2026/04/05 | T07 ターミナル | 鈴木 | 承認済 | |
| 2026-F003 | Meetup #15 | 2026/05/20 | T03 ブループリント | 山田 / 田中 | 承認待ち |
登壇者確認フロー×媒体別自動ドラフト生成×Notion CMS連携。公開前の本人確認を徹底。
| ID | タイトル | 媒体 | 担当者 | 作成日 | ステータス | 操作 |
|---|
Slack収集×AI画像解析×月次Excel生成×会計士提出。電子帳簿保存法対応。
| ID | 提出者 | 日付 | 金額 | カテゴリ | プロジェクト | ステータス | 操作 |
|---|
Notionで管理する最新情報・お知らせを自動配信。タイトル・本文・写真のシンプル3フィールド構成。
各外部サービスのAPIキー管理・接続テスト・Slackコマンド設定・Notionデータベース連携。
tenant_id を持たせ、アプリ層でテナント分離を実現しています。
tenants (id PK) ├── users (tenant_id FK) │ └── sessions (user_id FK) ├── events (tenant_id FK, created_by FK→users) │ ├── bookings (tenant_id FK, event_id FK, applicant_id FK→users) │ ├── catering_orders (tenant_id FK, event_id FK, vendor_id FK) │ ├── flyers (tenant_id FK, event_id FK, template_id FK, created_by FK→users) │ ├── posts (tenant_id FK, event_id FK, author_id FK→users) │ └── receipts (tenant_id FK, event_id FK, submitter_id FK→users) ├── vendors (tenant_id FK) ├── flyer_templates (tenant_id FK) ├── speakers (tenant_id FK) ├── monthly_aggregations (tenant_id FK) ├── tenant_settings (tenant_id PK FK) └── audit_logs (tenant_id FK)
| フィールド | 用途 | 暗号化 |
|---|---|---|
| claude_key_enc | Claude API キー | AES-256 |
| claude_model | 使用モデル名 | - |
| slack_token_enc | Slack Bot Token | AES-256 |
| slack_signing_secret_enc | Slack Signing Secret | AES-256 |
| slack_workspace_id | Slack ワークスペース ID | - |
| slack_channels | チャンネルマッピング (JSON) | - |
| notion_token_enc | Notion Integration Token | AES-256 |
| notion_db_reports | レポート DB ID | - |
| notion_db_speakers | 登壇者 DB ID | - |
| notion_db_tasks | タスク DB ID | - |
| google_sa_enc | Google Service Account JSON | AES-256 |
| google_calendar_id | Google Calendar ID | - |
| gmail_address | Gmail アドレス | - |
| gmail_client_id | Gmail OAuth Client ID | - |
| gmail_client_secret_enc | Gmail Client Secret | AES-256 |
| accountant_email | 会計士メールアドレス | - |
| gdrive_events_folder_id | Drive イベントフォルダ ID | - |
| gdrive_vendors_file_id | Drive ベンダー台帳 ID | - |
| gdrive_flyers_file_id | Drive フライヤー台帳 ID | - |
| canva_client_id | Canva Client ID | - |
| canva_client_secret_enc | Canva Client Secret | AES-256 |
| canva_access_token_enc | Canva Access Token | AES-256 |
| canva_brand_kit_id | Canva Brand Kit ID | - |
| canva_folder_id | Canva フォルダ ID | - |
# 必要な権限: Workers Scripts:Edit, D1:Edit, Pages:Edit npx wrangler whoami
# 本番 D1 を作成(初回のみ) npx wrangler d1 create commops-production # 出力された database_id を wrangler.jsonc の # d1_databases[0].database_id に設定する
# ローカル開発用 npx wrangler d1 migrations apply commops-production --local # 本番環境 npx wrangler d1 migrations apply commops-production --remote
# ローカルのみ(本番には絶対に適用しないこと) npx wrangler d1 execute commops-production --local --file=./migrations/0002_seed_data.sql # シードデータ確認 npx wrangler d1 execute commops-production --local --command="SELECT id,name,plan FROM tenants"
# ビルド npm run build # D1 ローカルモードで起動 npx wrangler pages dev dist --d1=commops-production --local --ip 0.0.0.0 --port 3000 # または PM2 で起動(ecosystem.config.cjs の args を以下に変更) # args: 'wrangler pages dev dist --d1=commops-production --local --ip 0.0.0.0 --port 3000'
# ビルド + Cloudflare Pages へデプロイ npm run build npx wrangler pages deploy dist --project-name commops-hygiene # 本番 D1 の接続確認 curl https://commops-hygiene.pages.dev/api/health curl https://commops-hygiene.pages.dev/api/v1/events
# ローカル D1 を完全リセット(テーブル再作成 + シード再投入) rm -rf .wrangler/state/v3/d1 npx wrangler d1 migrations apply commops-production --local npx wrangler d1 execute commops-production --local --file=./migrations/0002_seed_data.sql
# テナント一覧 npx wrangler d1 execute commops-production --remote --command="SELECT id,name,plan,status FROM tenants" # ユーザー一覧 npx wrangler d1 execute commops-production --remote --command="SELECT id,email,role FROM users" # 各テーブルのレコード件数 npx wrangler d1 execute commops-production --remote --command=" SELECT 'tenants' as tbl, COUNT(*) as cnt FROM tenants UNION ALL SELECT 'users', COUNT(*) FROM users UNION ALL SELECT 'events', COUNT(*) FROM events UNION ALL SELECT 'bookings',COUNT(*) FROM bookings UNION ALL SELECT 'receipts',COUNT(*) FROM receipts"
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "commops-hygiene",
"compatibility_date": "2024-01-01",
"pages_build_output_dir": "./dist",
"compatibility_flags": ["nodejs_compat"],
"d1_databases": [
{
"binding": "DB",
"database_name": "commops-production",
"database_id": "f1dc0a89-377a-4f35-a848-ab6d038c8478"
}
]
}
| メソッド | パス | 説明 |
|---|---|---|
| GET | /api/v1/events | イベント一覧 |
| POST | /api/v1/events | イベント作成 |
| PATCH | /api/v1/events/:id | イベント更新 |
| GET | /api/v1/bookings | 会場予約一覧 |
| POST | /api/v1/bookings | 会場予約作成 |
| PATCH | /api/v1/bookings/:id | 予約ステータス更新 |
| GET | /api/v1/catering/vendors | ベンダー一覧 |
| POST | /api/v1/catering/vendors | ベンダー追加 |
| GET | /api/v1/catering/orders | 発注一覧 |
| POST | /api/v1/catering/orders | 発注作成 |
| GET | /api/v1/flyers/templates | テンプレート一覧 |
| POST | /api/v1/flyers/create | フライヤー作成 |
| GET | /api/v1/posts | 投稿一覧 |
| POST | /api/v1/posts/draft | 投稿下書き作成 |
| PATCH | /api/v1/posts/:id | 投稿ステータス更新 |
| GET | /api/v1/receipts | 領収書一覧 |
| POST | /api/v1/receipts | 領収書提出 |
| PATCH | /api/v1/receipts/:id | 領収書承認/却下 |
| GET | /api/v1/receipts/monthly/:yearMonth | 月次集計 |
| GET | /api/v1/settings | テナント設定取得 |
| POST | /api/v1/settings | テナント設定保存 |
| POST | /api/v1/settings/test-connection | API接続テスト |
| GET | /api/v1/users | ユーザー一覧 |
| POST | /api/ai/chat | Claude AI プロキシ |
migrations/ ディレクトリに連番 SQL ファイルを追加してください。
# 新規マイグレーションファイルを作成 # ファイル名: migrations/0003_add_xxxx.sql # 例: events テーブルに capacity カラムを追加 cat > migrations/0003_add_events_capacity.sql << 'EOF' ALTER TABLE events ADD COLUMN capacity INTEGER DEFAULT NULL; CREATE INDEX IF NOT EXISTS idx_events_capacity ON events(capacity); EOF # ローカルに適用 npx wrangler d1 migrations apply commops-production --local # 本番に適用 npx wrangler d1 migrations apply commops-production --remote