From e4bd0a19015dfd1ed29d0b19c6934c18b108814d Mon Sep 17 00:00:00 2001 From: posimai Date: Mon, 6 Apr 2026 17:05:47 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20update=20master-architecture=20to=20202?= =?UTF-8?q?6-04-06=20=E2=80=94=20Supabase=E6=92=A4=E9=80=80=E3=83=BBDNS?= =?UTF-8?q?=E7=A2=BA=E5=AE=9A=E3=83=BB=E6=AE=8B=E3=82=BF=E3=82=B9=E3=82=AF?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Together VPS移行完了・Supabase撤退を反映 - ワイルドカードDNS確認済み・reading_history VPS修正済みを記録 - セキュリティ修正(WebSocket/SSRF/e.message)をdecision logに追加 - STATUS.md を 2026-04-06 版に更新 --- STATUS.md | 33 ++-- docs/master-architecture.md | 368 +++++++++++++++++++----------------- 2 files changed, 212 insertions(+), 189 deletions(-) diff --git a/STATUS.md b/STATUS.md index 4b22f5ee..80c3238f 100644 --- a/STATUS.md +++ b/STATUS.md @@ -4,32 +4,37 @@ ## 作業中 -- Store デザイン確定待ち(Eiji さんと A/B/C/D から選定中) +- 特になし(前セッションのタスク完了) ## 次にやること(優先順) -1. 特商法ページ記入(mai 作業 — 事業者名・住所・電話番号) -2. **どのアプリに premium 機能を実装するか決める**(未決定・最重要) -3. Stripe 本番モード切り替え(上記2点が完了してから) -4. 各アプリへの `purchased` フラグ実装(対象アプリ決定後) +1. **どのアプリに premium 機能を実装するか決める**(未決定・最重要。Brain/Feed/Reader/Together が候補) +2. 特商法ページ記入(mai 作業 — 事業者名・住所・電話番号) +3. Store デザイン確定(Eiji と A/B/C/D から選定) +4. Stripe 本番モード切り替え(上記完了後) +5. 各アプリへの `purchased` フラグ実装(対象決定後・1アプリ30分) ## ブロック中 | ブロック | 待ち先 | |---------|--------| +| premium 実装 | mai の判断 | | Store デザイン確定 | Eiji | | Stripe 本番切り替え | Store 確定・特商法記入 | -| premium 実装 | mai の判断 | -## 直近でやったこと(2026-04-05) +## 直近でやったこと(2026-04-06) -- Google OAuth + GitHub OAuth 実装・動作確認済み -- Stripe Webhook 実装・テスト決済で plan=premium 更新確認済み -- auth/verify: type=oauth の場合 Magic Link API をスキップするバグ修正 -- Store Design D 復活 -- atlas.json v3・Dashboard timeline・BentoCard beta バッジ更新 -- Uptime Kuma ポート 3002 確認・Station 修正 -- memory・master-architecture.md・CLAUDE.md を 2026-04-05 時点に更新 +- **セキュリティ修正(VPS server.js)**: e.message 直返し → "Internal server error" に一括置換 +- **セキュリティ修正(posimai-dev)**: WebSocket 認証ゲート追加(Tailscale IP のみ許可) +- **セキュリティ修正(posimai-dev)**: SSRF blocklist 完全版に更新(RFC 1918 全帯域 + metadata IP) +- **セキュリティ修正(posimai-feed)**: Feed POST に認証チェック追加 +- **Together 移行**: Supabase → VPS PostgreSQL 完全移行(61件投稿・9リアクション・1グループ・3メンバー) +- **Together フロント**: Supabase SDK 完全削除・VPS エンドポイントのみに統一 +- **CLAUDE.md / AGENTS.md**: stale な Supabase Edge Function deploy セクション削除 +- **memory**: 矛盾・陳腐化したファイルを一括更新・不要ファイル削除 +- **docs/master-architecture.md**: 2026-04-06 時点の全情報を一元化(インフラ図・テーブル一覧・残タスク) +- VPS DB バックアップ動作確認(毎日4時・7日分・正常稼働) +- Together API URL 設定パネルが別チャットで削除済みであること確認 ## コードの「正」はどこか diff --git a/docs/master-architecture.md b/docs/master-architecture.md index 98d87947..011bbe8d 100644 --- a/docs/master-architecture.md +++ b/docs/master-architecture.md @@ -1,260 +1,278 @@ # Posimai Project — マスターアーキテクチャドキュメント -最終更新: 2026-04-05 -対象: Claude Code / Cursor / Antigravity / Gemini / 全 AI エージェント +最終更新: 2026-04-06 +対象: Claude Code / Cursor / Gemini / 全 AI エージェント **このドキュメントはプロジェクトの現状を一元管理します。実装の前に必ず読んでください。** -> メモ: このファイルは変更が発生するたびに更新する(CLAUDE.md のルールに明記済み)。 -> 「最終更新」日付と内容を常に一致させること。 - --- ## 0. ビジネス体制(確定) -- **Eiji**: 共同経営者。VPS・DNS(soar-enrich.com)・Cloudflare 管理・対外窓口・代表。 +- **Eiji**: 共同経営者。VPS・DNS(soar-enrich.com)・Cloudflare 管理・対外窓口・代表。VPS は mai も自由に操作可。 - **mai**: プロダクト開発担当。アプリ設計・実装・AI 活用。 -- インフラ・ドメイン共用は設計通り。「Eiji 依存リスク」ではない。 +- インフラ・ドメイン共用は設計通り。 --- -## 1. 全体構成図(2026-04-05 確定) +## 1. 全体構成図(2026-04-06 確定) ``` ╔══════════════════════════════════════════════════════════╗ ║ mai の開発環境(Windows 11 PC) ║ -║ VS Code / Cursor / Claude Code CLI / Termius ║ +║ VS Code / Claude Code CLI ║ ╚══════════════════════════════════════════════════════════╝ │ git push(gitea + github の2リモート同時) + │ ※ Gitea 廃止は検討中・現状維持 ▼ ╔══════════════════════════════════════════════════════════╗ -║ コード管理(2リモート並行) ║ -║ Gitea(Synology 内) ←→ GitHub(posimai/ org) ║ -║ ローカルバックアップ Vercel 自動デプロイトリガー ║ +║ コード管理 ║ +║ GitHub(正)← Vercel 自動デプロイトリガー ║ +║ Gitea(NAS)← バックアップのみ・確認先にしない ║ ╚══════════════════════════════════════════════════════════╝ │ GitHub push → Vercel 自動デプロイ ▼ ╔══════════════════════════════════════════════════════════╗ ║ フロントエンド(Vercel / CDN) ║ -║ ║ -║ posimai.soar-enrich.com → posimai-dashboard(確定) ║ -║ ║ -║ 全アプリ URL(*.vercel.app で稼働中・全 23 本 PWA): ║ -║ brain / habit / pulse / feed / reader / journal ║ -║ brief / daily / ambient / veil / together / lens ║ -║ diff / clean / timer / digest / think / site ║ -║ events / maps / tech-events / analytics / roadmap ║ -║ ║ -║ 【セルフホスト】posimai-dev(Ubuntu PC / Tailscale) ║ -║ https://ubuntu-pc-pc-mkm21cz79ys4.tail72e846.ts.net:3333║ -║ ║ -║ 【計画中】*.posimai.soar-enrich.com ワイルドカード DNS ║ -║ → Passkey の rpID 問題を解決・Eiji に依頼予定 ║ +║ posimai.soar-enrich.com → posimai-dashboard ║ +║ *.posimai.soar-enrich.com → Vercel(ワイルドカード設定済)║ +║ 全 27 本アプリ(全て PWA) ║ ╚══════════════════════════════════════════════════════════╝ │ https://api.soar-enrich.com/brain/api/... - │ (2026-03-26 移行完了) ▼ ╔══════════════════════════════════════════════════════════╗ -║ バックエンド本番(VPS)— 2026-03-25 移行完了 ║ -║ Ubuntu 25.04 / AMD EPYC 4コア / 5.8GB / 85.131.245.239 ║ -║ 共同開発者 Eiji 提供 ║ +║ バックエンド本番(VPS)85.131.245.239 ║ +║ Ubuntu 25.04 / AMD EPYC 4コア / 5.8GB RAM ║ ║ ║ ║ Nginx: api.soar-enrich.com → :8090 ║ -║ ║ ║ posimai-api(Node.js / Express / :8090) ║ -║ 稼働中のエンドポイント: ║ -║ ・記事 /articles /save ・Journal /journal/* ║ -║ ・RSS /feeds ・Gemini AI /gemini/* ║ -║ ・認証 /auth/* (Magic Link + WebAuthn + Google/GitHub OAuth) ║ -║ ・記事 /articles /save ・Journal /journal/* ║ -║ ・RSS /feeds ・Gemini AI /gemini/* ║ -║ ・TTS /tts/* ← VOICEVOX(:50021 稼働済み) ║ -║ ・Stripe Webhook /api/stripe/webhook(署名検証済み) ║ -║ ║ -║ PostgreSQL 16 ║ -║ articles / journal_posts / users(plan/stripe列あり) ║ -║ site_config / reading_history ║ -║ magic_link_tokens / passkey_credentials / auth_sessions ║ +║ PostgreSQL 16(posimai_brain DB) ║ +║ VOICEVOX(:50021)稼働済み ║ ╚══════════════════════════════════════════════════════════╝ ╔══════════════════════════════════════════════════════════╗ -║ Ubuntu PC — 開発 OS(常時稼働) ║ -║ 100.77.11.43 / ubuntu-pc-pc-mkm21cz79ys4.tail*.ts.net ║ -║ ║ -║ ・posimai-dev(:3333 HTTPS / Tailscale) ║ -║ → ブラウザ内ターミナル + Claude Code 統合 PWA ║ -║ ・posimai-station(/station) ║ -║ → HDMI モニター全画面キオスク監視盤 ║ -║ ・Syncthing → Windows PC と双方向同期 ║ -║ ・GNOME 削除済み / Openbox + Chromium kiosk ║ +║ Ubuntu PC(100.77.11.43 / Tailscale) ║ +║ ・posimai-dev(:3333)ブラウザターミナル + Station ║ +║ ・Station(HDMI 全画面監視) ║ +║ ・Openbox + Chromium kiosk ║ ╚══════════════════════════════════════════════════════════╝ ╔══════════════════════════════════════════════════════════╗ -║ Synology NAS — バックアップ & 開発支援 ║ -║ 100.76.7.3 / posimai-lab.tail72e846.ts.net ║ -║ Tailscale VPN 経由のみアクセス可 ║ -║ ║ -║ ・Gitea(git バックアップサーバー) ║ -║ ・posimai_api(旧 API・待機中・フォールバック候補) ║ -║ ・PostgreSQL 15(旧 DB・待機中) ║ -║ ・Uptime Kuma(死活監視 / :3002) ║ +║ Synology NAS(100.76.7.3 / Tailscale のみ) ║ +║ ・Gitea(:3000)git バックアップ ║ +║ ・Uptime Kuma(:3002)死活監視 ║ +║ ・旧 API / PostgreSQL 15(停止可能・保留中) ║ +║ ・Ubuntu PC → NAS rsync バックアップ(毎日3時) ║ ╚══════════════════════════════════════════════════════════╝ ╔══════════════════════════════════════════════════════════╗ ║ 外部サービス ║ -║ ║ -║ 【認証・稼働中】VPS 自前(Magic Link + WebAuthn + ║ -║ Google OAuth + GitHub OAuth) ║ -║ JWT: { userId, sid, plan }(plan=free/premium) ║ -║ Resend: Magic Link メール送信(noreply@soar-enrich.com)║ -║ ║ -║ 【決済・テストモード稼働中】Stripe ║ -║ 月額¥500・Webhook で plan=premium に自動更新 ║ -║ 本番切り替え: Store デザイン確定・特商法記入後 ║ -║ ║ -║ 【稼働中】Supabase DB ║ -║ together のみ(リアルタイム同期) ║ -║ ║ -║ Gemini API → VPS 経由(journal/pulse 等) ║ -║ Gemini API → フロント直接(think アプリのみ) ║ -║ Google Fonts(Inter)/ unpkg(Lucide @0.344.0 固定) ║ +║ Resend(Magic Link メール / noreply@soar-enrich.com) ║ +║ Stripe(テストモード稼働中 / 月額¥500) ║ +║ Gemini API(VPS 経由・gemini-2.5-flash 固定) ║ +║ Google Places API(Maps アプリ・フロント直接・要改善) ║ ╚══════════════════════════════════════════════════════════╝ ``` --- -## 2. アプリ一覧(全 27 本・2026-04-05 時点) +## 2. VPS PostgreSQL — テーブルとデータの実体 -| アプリ | URL | 種別 | バックエンド | 備考 | -|--------|-----|------|-------------|------| -| posimai-dashboard | posimai.soar-enrich.com | Next.js | — | メインダッシュボード | -| posimai-analytics | analytics.vercel.app | Next.js | — | RFM 分析 | -| posimai-brain | brain.vercel.app | 静的 | VPS API | 記事管理 | -| posimai-feed | feed.vercel.app | 静的 | VPS API | RSS フィード | -| posimai-reader | reader.vercel.app | 静的 | VPS API | 記事リーダー | -| posimai-journal | journal.vercel.app | 静的 | VPS API | CMS エディタ | -| posimai-site | site.vercel.app | 静的 | VPS API | 公開ホームページ | -| posimai-together | together.vercel.app | 静的 | Supabase | リアルタイム共有 | -| posimai-daily | daily.vercel.app | 静的 | VPS API | ブリーフィング | -| posimai-brief | brief.vercel.app | 静的 | VPS TTS | 音声ブリーフィング | -| posimai-habit | habit.vercel.app | 静的 | localStorage | 習慣管理(Supabase 移行予定) | -| posimai-pulse | pulse.vercel.app | 静的 | localStorage | 気分記録(Supabase 移行予定) | -| posimai-think | think.vercel.app | 静的 | Gemini 直接 | AI 思考整理 | -| posimai-digest | digest.vercel.app | 静的 | Gemini 直接 | テキスト要約 | -| posimai-ambient | ambient.vercel.app | 静的 | open-meteo | 常時表示 | -| posimai-veil | veil.vercel.app | 静的 | — | アプリランチャー | -| posimai-roadmap | roadmap.vercel.app | 静的 | — | ロードマップ管理 | -| posimai-timer | timer.vercel.app | 静的 | — | タイマー | -| posimai-lens | lens.vercel.app | 静的 | — | EXIF 表示 | -| posimai-diff | diff.vercel.app | 静的 | — | テキスト差分 | -| posimai-clean | clean.vercel.app | 静的 | — | テキストクリーナー | -| posimai-events | events.vercel.app | 静的 | — | イベント情報 | -| posimai-maps | maps.vercel.app | 静的 | — | マップ | -| posimai-hotels | hotels.vercel.app | 静的 | — | ホテル価格 | -| posimai-tech-events | tech-events.vercel.app | 静的 | RSS | IT イベント | -| posimai-atlas | atlas.vercel.app | 静的 | VPS API | インフラ構成図・監視 | -| posimai-ui | ui.vercel.app | 静的 | — | 共有デザインシステム | +| テーブル | 何が入っているか | AIが関与するか | +|---------|----------------|--------------| +| `users` | ユーザー情報・plan(free/premium)・Stripe ID | なし | +| `auth_sessions` | JWTセッション | なし | +| `articles` | Brain保存記事・**AI要約(summaryカラム)**・全文・トピック | Gemini が要約生成・VPS に永続保存 | +| `journal_posts` | Journal投稿・タグ | タグはGeminiが提案(その場限り) | +| `reading_history` | 読んだURL・タイトル・ドメイン | なし | +| `habit_habits` / `habit_log` | 習慣定義・達成ログ | なし | +| `pulse_log` | 気分・エネルギー・集中度・メモ | なし | +| `lens_history` | 写真EXIFデータ・サムネイル | なし | +| `together_groups/members/shares/reactions/comments` | Together全データ(2026-04-06 Supabaseから移行済み) | 投稿にAI要約あり | + +**Supabase は撤退済み(2026-04-06)。** Together を VPS PostgreSQL に完全移行。 --- -## 3. 認証フロー(確定) +## 3. データ保存先(確定) + +| 保存先 | 対象 | 状態 | +|--------|------|------| +| VPS PostgreSQL | brain・journal・together・reading_history・habit・pulse・認証 | 稼働中 | +| localStorage(永続・移行しない) | veil設定・timer設定 | 確定 | +| localStorage(将来VPS移行予定) | habit・pulse(VPSにテーブルは存在済み) | 商用化フェーズで移行 | +| データなし(都度処理) | diff・clean・think・digest・brief・feed・timer | — | + +--- + +## 4. アプリ間パイプライン(設計) ``` -方針(本番としてそのまま進化させる): - フロント → API Key or JWT (Magic Link) → VPS が検証 - ?init_key= URL → localStorage に保存・JWT 保有 - 3ユーザー(mai / partner / musume)のみ対応 - メール送信: Resend API (noreply@soar-enrich.com) - ※ Supabase Auth への移行計画は中止(完全自己ホスト化) - -課題: WebAuthn (Passkey) には共通の rpID が必要 - → *.posimai.soar-enrich.com ワイルドカード DNS が必須 - → Eiji への依頼待ち +Feed(発見) + ↓ 記事クリック +Reader(読む)→ reading_history に記録(2026-04-06 対応済み) + ↓ 保存ボタン +Brain(保存・AI要約)→ articles に記録 + ↓ 気づきをメモ +Think / Journal(内省)→ journal_posts + ↓ 週次バッチ(未実装) +Digest(まとめ)→ user_activity から集計して生成 +Brief(音声)→ Digest の内容を VOICEVOX で読み上げ + ↓ 公開したいものだけ +Together(共有)→ together_shares ``` -**自前認証化のため `X-API-Key`・`?init_key=`・localStorage ロジックは維持される。** +**Pulse/Habit は横断的に記録され、Rewind(振り返り)アプリの材料になる(将来)。** + +### 未実装・改善が必要なもの + +| 課題 | 内容 | 優先度 | +|------|------|--------| +| `user_activity` テーブル | アプリ横断の行動ログ基盤。Digestの週次集計に必要 | 中 | +| habit/pulse → VPS移行 | テーブルはVPSに存在。アプリ側をAPI呼び出しに変えるだけ | 中(premium機能として) | +| Together に Brain/Journal 連携 | `source_type` / `source_id` カラム追加で Brain記事を直接共有可能 | 低 | +| Digest `/api/digest/weekly` 実装 | user_activityから週次サマリー生成 | 低 | +| Google Places API → VPS経由化 | Mapsアプリのキーがフロントに露出している | 低(急がない) | --- -## 4. データ保存先まとめ +## 5. 認証フロー(確定・全て稼働中) -| 保存先 | アプリ | 状態 | -|--------|--------|------| -| VPS PostgreSQL | brain・journal・site・reading_history | 稼働中 | -| Supabase DB | together | 稼働中 | -| localStorage + VPS バックグラウンド同期 | habit・pulse | ローカルファースト(同期のみ) | -| localStorage(永続・移行しない) | veil 設定・timer 設定 | 確定 | -| データなし(都度処理) | diff・clean・lens・digest・think・timer 本体 | — | +``` +Magic Link(Resend メール → JWT) +Google OAuth → VPS → JWT → /auth/verify?type=oauth +GitHub OAuth → VPS → JWT → /auth/verify?type=oauth +WebAuthn / Passkey(rpID: posimai.soar-enrich.com) + +JWT: { userId, sid, plan } +plan = "free" or "premium"(Stripe決済後にDB更新) + +/auth/session/verify → { ok, userId, plan, purchased } +``` + +**Supabase Auth は不採用。完全 VPS 自前認証。** +`X-API-Key`・`?init_key=` の旧認証体系は一部アプリが依存しているため変更禁止。 --- -## 5. デプロイパイプライン(確立済み) +## 6. 販売フロー(テストモード稼働中) + +``` +posimai-store(LP) + → Stripe Payment Link(月額¥500・1日無料トライアル) + → Stripe Webhook → VPS → users.plan = "premium" + → JWT に plan: "premium" が入る + → 各アプリで purchased フラグで機能出し分け可能 +``` + +**本番切り替え待ち:** Storeデザイン確定 → 特商法記入 → Stripe本番切り替え + +--- + +## 7. アプリ一覧(全 27 本・2026-04-06 時点) + +| アプリ | バックエンド | 備考 | +|--------|------------|------| +| posimai-dashboard | — | Next.js / メインダッシュボード | +| posimai-brain | VPS API | 記事保存・AI要約 | +| posimai-feed | Vercel Serverless + RSS | フィード(キー不要) | +| posimai-reader | VPS API | 記事リーダー(reading_history連携済み) | +| posimai-journal | VPS API | CMS / Geminiタグ提案 | +| posimai-together | VPS API | 共有(Supabaseから移行済み) | +| posimai-brief | VPS TTS | VOICEVOX音声 | +| posimai-daily | VPS API | ブリーフィング | +| posimai-habit | localStorage → VPS(予定) | 習慣管理 | +| posimai-pulse | localStorage → VPS(予定) | 気分記録 | +| posimai-think | Gemini直接 | AI思考整理 | +| posimai-digest | Gemini直接 | テキスト要約 | +| posimai-maps | Google Places API(フロント直接) | 要VPS化 | +| posimai-tech-events | VPS経由RSS | ITイベント | +| posimai-atlas | VPS API | インフラ構成図 | +| posimai-site | VPS API | 公開ホームページ | +| posimai-lens | — | EXIF表示(処理のみ) | +| posimai-diff | — | テキスト差分(処理のみ) | +| posimai-clean | — | テキストクリーナー(処理のみ) | +| posimai-timer | — | タイマー(localStorage) | +| posimai-veil | — | アプリランチャー | +| posimai-ambient | open-meteo | 常時表示 | +| posimai-roadmap | — | ロードマップ | +| posimai-widget-dl | — | ウィジェット | +| posimai-events | VPS API | イベント情報(モック・Beta) | +| posimai-hotels | — | ホテル価格(モック・Beta) | +| posimai-analytics | — | Next.js / RFM分析 | + +--- + +## 8. デプロイパイプライン ```bash -git add . -git commit -m "feat/fix/chore: 変更内容" -npm run deploy # = git push gitea main && git push github main +# フロントエンド(全アプリ共通) +git add . && git commit -m "feat/fix/chore: ..." && npm run deploy +# = git push gitea main && git push github main → Vercel 自動デプロイ + +# VPS バックエンド(server.js 変更時) +bash deploy-server.sh + +# Ubuntu PC(posimai-dev/station 変更時) +npm run deploy:dev # git push + scp + systemctl restart ``` -- `gitea` → `http://100.76.7.3:3000/mai/[app-name].git`(ローカルバックアップ) -- `github` → `https://github.com/posimai/[app-name].git`(Vercel 自動デプロイトリガー) - `vercel --prod` 直接実行: **禁止** -- VPS バックエンド: `bash deploy-server.sh`(SSH 鍵認証・完全無人) +- VPS DBバックアップ: 毎日4時自動実行・7日分保持・正常稼働確認済み(2026-04-06) --- -## 6. AI エージェント役割分担 +## 9. 残タスク(優先順) -| 担当 | 内容 | +### 商用化直結(maiの決定が必要) + +| タスク | 状態 | +|--------|------| +| **どのアプリにpremium機能を実装するか決める** | **未決定・最重要** | +| Storeデザイン確定(A/B/C/D) | Eiji意見待ち | +| 特商法ページ記入(事業者名・住所等) | mai手動作業 | +| Stripe本番モード切り替え | デザイン確定後 | + +### AIが対応可能(maiの決定後) + +| タスク | 工数 | +|--------|------| +| 各アプリへのpremiumフラグ実装 | 1アプリ30分 | +| habit/pulse → VPS API移行 | 各2時間 | +| user_activityテーブル追加 | 2時間 | + +### 保留・検討中 + +| 項目 | 状態 | |------|------| -| インフラ担当チャット | 認証実装・VPS デプロイ・DNS・server.js 変更 | -| UI 担当チャット | UX・デザイン・CLAUDE.md 適合・プライバシー表記・バグ修正 | - -**UI 担当が触ってはいけないもの:** -`api.soar-enrich.com` URL / `X-API-Key` ヘッダー / `?init_key=` パラメータ / localStorage 認証ロジック / server.js・VPS・Docker 関連 +| Giteaをdeployから外す | 検討中(廃止メリットあり・決定待ち) | +| Uptime Kuma → Ubuntu PC移設 + UptimeRobot追加 | 検討中 | +| Synology 旧コンテナ停止 | 保留 | --- -## 7. 直近の確定事項(設計判断ログ) +## 10. 設計判断ログ | 日付 | 決定事項 | |------|---------| -| 2026-03-25 | バックエンドを Synology → VPS(Eiji 提供)に移行完了 | -| 2026-03-26 | API URL を `posimai.soar-enrich.com` → `api.soar-enrich.com` に分離完了 | -| 2026-03-27 | 認証方式を Supabase Auth(Magic Link + Passkey)に確定 | -| 2026-03-29 | ベンダーロックイン回避のため Supabase 完全移行を中止。VPS 独自認証(Magic Link+Passkey)を正規方針として続行 | -| 2026-04-04 | Google OAuth + GitHub OAuth 実装完了・動作確認済み | -| 2026-04-04 | Stripe Webhook 実装完了・テスト決済で plan=premium 更新確認済み | -| 2026-04-05 | VOICEVOX VPS 稼働済み確認(:50021)| -| 2026-04-05 | Uptime Kuma ポートが 3001 ではなく 3002 と判明・Station 修正済み | -| 2026-04-05 | atlas.json v3・Dashboard timeline・BentoCard beta バッジ更新済み | -| 保留中 | *.posimai.soar-enrich.com ワイルドカード DNS(Eiji 依頼待ち) | -| 保留中 | Store デザイン確定(A/B/C/D から選定中) | -| 保留中 | 特商法ページ事業者情報記入(mai 作業) | -| 保留中 | Stripe 本番モード切り替え | -| 未決定 | どのアプリに premium 機能を実装するか(最重要課題) | +| 2026-03-25 | バックエンドを Synology → VPS に移行完了 | +| 2026-03-26 | API URL を `api.soar-enrich.com` に分離完了 | +| 2026-03-29 | Supabase Auth を不採用。VPS 自前認証を正規方針に確定 | +| 2026-04-04 | Google OAuth + GitHub OAuth 実装完了 | +| 2026-04-04 | Stripe Webhook 実装完了・テスト決済確認済み | +| 2026-04-06 | Together を Supabase → VPS PostgreSQL に完全移行(61件) | +| 2026-04-06 | *.posimai.soar-enrich.com ワイルドカード DNS 設定済み確認 | +| 2026-04-06 | Reader reading_history を localStorage → VPS に修正済み | +| 2026-04-06 | WebSocket認証・SSRF blocklist・Feed POST認証・e.message修正済み | --- -## 8. 絶対に守るルール(全 AI 共通) +## 11. 絶対に守るルール(全 AI 共通) 1. **デプロイは `npm run deploy` のみ**(`vercel --prod` 禁止) -2. **絵文字禁止**(コード・UI・コメントすべて) -3. **アイコンは Lucide のみ**(`@0.344.0` 固定) -4. **デザイントークン変更禁止**(`--accent` 1行のみ例外) +2. **絵文字禁止**(コード・UI・コミット全て) +3. **Lucide @0.344.0 固定**(`@latest` 禁止) +4. **デザイントークン外の色直接使用禁止**(`var(--accent)` を使う) 5. **`git push origin` 禁止**(gitea と github の2リモートのみ) -6. **`api.soar-enrich.com` / 認証ロジックは UI 担当チャットが触らない** -7. **このファイルを変更したらすぐ「最終更新」日付を更新する** - ---- - -## 参照ファイル一覧 - -| ファイル | 内容 | -|---------|------| -| `CLAUDE.md` | AI 向けプロジェクトルール(最優先) | -| `AGENTS.md` | CLAUDE.md の Cursor/Windsurf 向けコピー | -| `docs/master-architecture.md` | **このファイル**(インフラ・確定事項の一元管理) | -| `posimai-dashboard/src/data/projects.json` | 全アプリの一覧・ステータス・技術スタック | -| `_template/` | フル機能テンプレート | -| `_template-minimal/` | 単機能ツール用テンプレート | +6. **Gemini モデルは `gemini-2.5-flash` 固定** +7. **このファイルを変更したら「最終更新」日付を更新する**