diff --git a/AGENTS.md b/AGENTS.md index e9c517ce..13c53acf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -101,6 +101,7 @@ git push gitea main && git push github main | `AGENTS.md` を変更 | `CLAUDE.md` も同等の内容に更新する(ツール名は AI 固有のため完全同一でなくてよい) | | `~/.claude/settings.json` を変更 | `posimai-root/claude-settings.json` を上書きコピーして push | | memory ファイルを変更 | `claude-memory` リポジトリに push する | +| インフラ変更(VPS・DB・認証・ドメイン・アプリ追加) | `docs/master-architecture.md` を更新する(最終更新日付も書き換える) | --- diff --git a/CLAUDE.md b/CLAUDE.md index a35ffe43..4d20c17c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -96,6 +96,7 @@ git push gitea main && git push github main | `AGENTS.md` を変更 | `CLAUDE.md` も同等の内容に更新する(ツール名は AI 固有のため完全同一でなくてよい) | | `~/.claude/settings.json` を変更 | `posimai-root/claude-settings.json` を上書きコピーして push | | memory ファイルを変更 | `claude-memory` リポジトリに push する | +| インフラ変更(VPS・DB・認証・ドメイン・アプリ追加) | `docs/master-architecture.md` を更新する(最終更新日付も書き換える) | --- diff --git a/docs/master-architecture.md b/docs/master-architecture.md index bfa5ba0c..40d0f5ad 100644 --- a/docs/master-architecture.md +++ b/docs/master-architecture.md @@ -1,409 +1,222 @@ # Posimai Project — マスターアーキテクチャドキュメント -最終更新: 2026-03-11 +最終更新: 2026-03-28 対象: Claude Code / Cursor / Antigravity / Gemini / 全 AI エージェント -このドキュメントはプロジェクトの現状・課題・ロードマップを一元管理します。 -実装の前に必ずこのファイルを読んでください。 +**このドキュメントはプロジェクトの現状を一元管理します。実装の前に必ず読んでください。** + +> メモ: このファイルは変更が発生するたびに更新する(CLAUDE.md のルールに明記済み)。 +> 「最終更新」日付と内容を常に一致させること。 --- -## 0. Gemini 最新回答への批判的レビュー(2026-03-11) - -Gemini が「Gemini 3.1 Flash-Lite(2026-03-03リリース)」「Gemini 3.1 Pro(2026-02-19リリース)」 -と具体的な日付を断言しているが、**AI が自身のバージョンに関してハルシネーションを起こす -典型的なパターン** であり、鵜呑みにしてはならない。 - -| Gemini の主張 | 判定 | 理由 | -|---|---|---| -| "Gemini 3.1 Flash-Lite を 2026-03-03 に正式リリース" | 要検証 | Claude の知識カットオフ(2025年8月)以降の情報。公式確認必須 | -| "DeepSeek V3.2 は推測だったと認める" | 評価する | 自己訂正は誠実 | -| Docker Compose 設計案を提示 | 方向性は正しい | ただし不完全(後述) | -| Ollama の導入 | 有効な提案 | RAM 要件の言及が不足 | - -**AI モデルのバージョン情報は必ず公式で確認すること:** -- Google AI Studio (aistudio.google.com) でモデル一覧を確認 -- DeepSeek 公式 API ドキュメントで最新版を確認 - -**Gemini の docker-compose.yml の問題点:** -- nginx(リバースプロキシ)がない → ポートが直接露出する -- Gitea がない → すでに動いているなら Compose で管理すべき -- ネットワーク定義がない -- restart ポリシーがない(NAS 再起動後にコンテナが自動起動しない) -- Ollama の GPU/メモリ設定がない -- secrets 管理が平文環境変数のみ(DB パスワード等) - ---- - -## 1. プロジェクト全体像 - -### 1.1 所有者プロフィール -- 非エンジニア(コードを読める、書けない) -- AI エージェントへのプロンプト設計が得意 -- クラウド依存なし・Synology ファーストが絶対条件 -- コスト最小化・利用回数の上限を気にしたくない - -### 1.2 現在のアプリ一覧(全 9 本) - -| アプリ | ディレクトリ | 種別 | Synology 依存 | 状態 | -|--------|-------------|------|--------------|------| -| posimai-brain | `posimai-brain/` | SPA (Vanilla JS) | Yes(記事 API) | 稼働中 | -| posimai-feed | `posimai-feed/` | SPA (Vanilla JS) | Yes(フィード API) | 稼働中 | -| posimai-events | `posimai-events/` | 静的 (Vanilla JS) | 部分的 | 稼働中 | -| posimai-hotels | `posimai-hotels/` | 静的 (Vanilla JS) | 部分的 | 稼働中 | -| posimai-maps | `posimai-maps/` | 静的 (Vanilla JS) | 部分的 | 稼働中 | -| posimai-reader | `posimai-reader/` | 静的 (Vanilla JS) | No | 稼働中 | -| posimai-together | `posimai-together/` | 静的 (Vanilla JS) | No | 稼働中 | -| posimai-dashboard | `posimai-dashboard/` | Next.js (App Router) | 不明 | 稼働中 | -| posimai-analytics | `posimai-analytics/` | Next.js (App Router) | 不明 | 稼働中 | - -### 1.3 アプリ種別の正確な分類 +## 1. 全体構成図(2026-03-28 確定) ``` -純粋な静的アプリ(Synologyなしでも全機能動作) - → reader, together - → データはコード内 or 不要 +╔══════════════════════════════════════════════════════════╗ +║ maita の開発環境(Windows 11 PC) ║ +║ VS Code / Cursor / Claude Code CLI / Termius ║ +╚══════════════════════════════════════════════════════════╝ + │ git push(gitea + github の2リモート同時) + ▼ +╔══════════════════════════════════════════════════════════╗ +║ コード管理(2リモート並行) ║ +║ Gitea(Synology 内) ←→ GitHub(posimai/ org) ║ +║ ローカルバックアップ Vercel 自動デプロイトリガー ║ +╚══════════════════════════════════════════════════════════╝ + │ 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.soar-enrich.com ワイルドカード DNS ║ +║ → Passkey の rpID 問題を解決・Eiji に依頼予定 ║ +╚══════════════════════════════════════════════════════════╝ + │ 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 提供 ║ +║ ║ +║ Nginx: api.soar-enrich.com → :8090 ║ +║ ║ +║ posimai-api(Node.js / Express / :8090) ║ +║ 稼働中のエンドポイント: ║ +║ ・記事 /articles /save ・Journal /journal/* ║ +║ ・RSS /feeds ・Gemini AI /gemini/* ║ +║ ・TTS /tts/* ← VOICEVOX 連携(コンテナ追加で即有効) ║ +║ ║ +║ PostgreSQL 16 ║ +║ articles / journal_posts / users ║ +║ site_config / reading_history ║ +║ ※ auth テーブルは Supabase Auth 採用確定につき将来削除 ║ +╚══════════════════════════════════════════════════════════╝ -データ参照型(Synologyが落ちてもUIは動く・データだけ取れない) - → events, hotels, maps - → Synology から定期取得、localStorage キャッシュあり +╔══════════════════════════════════════════════════════════╗ +║ バックアップ(Synology NAS・停止しない) ║ +║ 100.76.7.3 / posimai-lab.tail72e846.ts.net ║ +║ Tailscale VPN 経由のみアクセス可 ║ +║ ║ +║ ・Gitea(git バックアップサーバー) ║ +║ ・posimai_api(旧 API・待機中) ║ +║ ・PostgreSQL 15(旧 DB・待機中) ║ +║ ・Uptime Kuma(死活監視) ║ +║ ・Ubuntu PC バックアップ受け先(毎日 3:00 rsync) ║ +╚══════════════════════════════════════════════════════════╝ -SPA + バックエンド依存(Synologyが必須) - → brain, feed - → Synology FastAPI が主データソース - -Next.js(サーバーサイド処理あり) - → dashboard(Basic Auth あり), analytics - → Vercel Edge で動作、Synology 依存は設計次第 +╔══════════════════════════════════════════════════════════╗ +║ 外部サービス ║ +║ ║ +║ 【認証・確定】Supabase Auth ║ +║ Magic Link(メール)+ Passkey(指紋・顔) ║ +║ → Resend をカスタム SMTP として設定 ║ +║ → 各アプリは Supabase JWT で認証 ║ +║ → VPS は JWT を検証するだけ(認証ロジックは Supabase) ║ +║ ║ +║ 【稼働中】Supabase DB ║ +║ together(リアルタイム同期・稼働中) ║ +║ habit / pulse(将来移行予定・現在は localStorage) ║ +║ ║ +║ Gemini API → VPS 経由(journal/pulse 等) ║ +║ Gemini API → フロント直接(think アプリのみ) ║ +║ Resend(メール)→ noreply@soar-enrich.com ║ +║ Google Fonts(Inter)/ unpkg(Lucide @0.344.0 固定) ║ +║ ║ +║ 【将来】 ║ +║ Stripe(課金・アカウント済み・Eiji と共有済み) ║ +║ Google Play Console(Android 配信) ║ +╚══════════════════════════════════════════════════════════╝ ``` --- -## 2. 現在のインフラ構成(確認済み・2026-03-11) +## 2. アプリ一覧(全 23 本・2026-03-28 時点) -``` -[開発者PC(Windows 11)] - ├ VS Code + Claude Code / Cursor - ├ c:/Users/maita/posimai-project/ (ローカル作業) - └ git push → Gitea(primary) + GitHub(mirror) - -[Synology NAS「Mai_SVR」(自宅・常時稼働)] - ├ 物理 RAM: 16 GB(現在 4.11 GB 使用中) - ├ DSM: 7.3.2-86009 Update 1 - ├ Virtual Machine Manager - │ └ Posimai_lab(VM): CPU 2コア、RAM 4GB、ディスク 100GB - │ ※ VM 内の詳細は未確認(OS 不明) - └ Container Manager(Docker Compose) - └── プロジェクト: posimai_lab(/volume1/docker/posimai_lab) - ├── gitea (gitea/gitea:1.21) ← 稼働中 ✓ - ├── gitea_db (postgres:15) ← 稼働中 ✓ ※Gitea + API 共用 - ├── mcp_server (node:20-slim) ← 稼働中 ✓ AI エージェント連携 - ├── posimai_api (node:20-slim) ← 稼働中 ✓ 記事API・Geminiプロキシ - └── ai_proxy (python:3.11-slim) ← 停止中 → 削除可 - - 外部アクセス: Tailscale(posimai-lab.tail72e846.ts.net) - 内部ポート: Gitea:3000, API:8090 - -[GitHub(クラウド)] - └ private mirror(Vercel webhook用) - -[Vercel(クラウド)] - └ 全9アプリをホスト(静的ファイル配信 / Next.js SSR) -``` - -### 2.1 posimai_api の詳細(確認済み) - -- **言語**: Node.js(Python/FastAPI ではなかった) -- **役割**: 記事保存・要約・Gemini API プロキシ -- **DB**: PostgreSQL(gitea_db と同一インスタンス、同一ユーザー共用) -- **認証**: API キー方式(pk_maita_ / pk_partner_ / pk_musume_) -- **CORS 許可**: posimai-brain, posimai-reader, posimai-feed -- **アクセス方法**: Tailscale 経由 HTTPS または 内部 HTTP:8090 - -### 2.2 現状の問題点(優先度順) - -**問題1: シークレット管理 — 高優先** -- docker-compose.yml に DB パスワード・API キーが平文記載 -- git commit するとパスワードが Gitea/GitHub に残る -- 対策: `.env` ファイルに分離、docker-compose.yml から変数参照に変更 - -**問題2: DB ユーザーの共用 — 中優先** -- Gitea と posimai_api が同一 postgres ユーザー(gitea)を使用 -- 対策: posimai_api 専用ユーザー/DB を作成する - -**問題3: posimai_api が HTTP のみ — 中優先** -- nginx がないため HTTPS 化されていない(Tailscale 経由なら許容範囲) -- 対策: nginx コンテナ追加(必要と判断したとき) - -**問題4: アクセントカラーの不統一 — 低優先** -- Brain/Feed/Reader: `#818CF8`(Indigo) -- その他・テンプレート: `#6EE7B7`(Teal) -- 対策: 新規アプリは Teal 固定。既存は次回大改修時に統一。 +| アプリ | 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-ui | ui.vercel.app | 静的 | — | 共有デザインシステム | --- -## 3. デプロイパイプライン(確立済み) +## 3. 認証フロー(確定・未実装) ``` -コード変更 - ↓ -git add . && git commit -m "feat: ..." - ↓ -npm run deploy - = git push gitea main && git push github main - ↓ ↓ -Gitea(自宅Synology) GitHub(private mirror) -(プライマリ・ソースof真実) ↓ - Vercel webhook - ↓ - https://[app-id].vercel.app +現行(稼働中): + フロント → X-API-Key: pk_maita_xxx → VPS が検証 + ?init_key= URL → localStorage に保存 + 3ユーザー(maita / partner / musume)のみ対応 + +移行先(確定・実装待ち): + フロント → Supabase Auth → Magic Link or Passkey + → Supabase JWT 発行 + → VPS が JWT を検証 + メール送信: Resend(noreply@soar-enrich.com) + +課題: Passkey は登録ドメイン固有 + → *.posimai.soar-enrich.com ワイルドカード DNS が必要 + → Eiji への依頼待ち ``` -**絶対に守るルール:** -- `vercel --prod` 直接実行 → 禁止(GitHub push で自動デプロイ) -- `git push origin` → 禁止(gitea と github の2リモートを使う) -- デプロイは `npm run deploy` のみ +**実装完了まで `X-API-Key`・`?init_key=`・localStorage 認証ロジックは変更禁止。** --- -## 4. 新アプリ作成の自動化(確立済み) +## 4. データ保存先まとめ + +| 保存先 | アプリ | 状態 | +|--------|--------|------| +| VPS PostgreSQL | brain・journal・site・reading_history | 稼働中 | +| Supabase DB | together | 稼働中 | +| Supabase DB | habit・pulse | 将来移行予定(商用化フェーズ3) | +| localStorage(永続・移行しない) | veil 設定・timer 設定 | 確定 | +| データなし(都度処理) | diff・clean・lens・digest・think・timer 本体 | — | + +--- + +## 5. デプロイパイプライン(確立済み) ```bash -bash scripts/new-app.sh "<表示名>" "<説明>" +git add . +git commit -m "feat/fix/chore: 変更内容" +npm run deploy # = git push gitea main && git push github main ``` -1. `_template/` をコピー(プレースホルダー置換) -2. Git 初期化 + 初回コミット -3. Gitea API でリポジトリ作成 → push -4. GitHub CLI でリポジトリ作成 → push -5. Vercel で GitHub 連携 -6. git post-commit フック設置 - ---- - -## 5. テンプレート仕様(`_template/`) - -### 5.1 デザインシステム(変更禁止トークン) - -```css ---bg: #0D0D0D /* ページ背景 */ ---surface: #1A1A1A /* カード */ ---surface2: #252525 /* ネスト要素 */ ---border: #2D2D2D /* ボーダー */ ---text: #F3F4F6 /* 主テキスト */ ---text2: #9CA3AF /* 副テキスト */ ---text3: #6B7280 /* 弱テキスト */ ---accent: #6EE7B7 /* Posimai Teal(アプリごとに1行変更可) */ ---radius: 12px -``` - -- フォント: Inter (300/400/500/600) -- アイコン: Lucide のみ(stroke 1.5〜2.0) -- 絵文字: **絶対禁止** -- カラフルな配色: **禁止** -- バッジ: emerald(完了)/ amber(進行中)/ zinc(予定)の3色のみ - -### 5.2 テンプレートの現在の機能(Phase 1 実装済み) - -``` -_template/index.html に含まれるもの: - ├ header(52px glassmorphism) - │ ├ PC展開時: ページタイトルのみ(アプリ名はサイドバーに) - │ └ モバイル/折りたたみ時: アプリ名 + ハンバーガー - ├ sidebar - │ ├ accordion ナビセクション(折りたたみ対応) - │ ├ nav-count バッジ(数値表示) - │ └ フッター(アバター + ユーザー名 + 設定歯車) - ├ settings-panel(右スライドアウト) - │ ├ トグルスイッチ - │ ├ API キー入力 - │ └ データ削除ボタン - ├ main content - │ ├ card / list-item / empty-state - │ ├ btn-primary / btn-ghost / btn-danger - │ └ badge-stable / badge-progress / badge-planned - └ toast 通知 -``` - -### 5.3 テンプレート Phase 2 候補(優先度付き) - -| 優先度 | 機能 | 判断根拠 | -|--------|------|---------| -| 中 | SWR API クライアント(オプションファイル) | API ありアプリ専用。デフォルト OFF | -| 中 | Pull to Refresh(モバイル) | PWA の基本 UX | -| 低 | コマンドパレット(Cmd+K) | パワーユーザー向け | -| 低 | BroadcastChannel(タブ同期) | 必要なアプリで個別実装 | -| 低 | PWA Share Target | manifest.json のコメントサンプルとして | +- `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 鍵認証・完全無人) --- ## 6. AI エージェント役割分担 -| エージェント | 主な用途 | 得意なこと | -|---|---|---| -| **Claude Code** | 設計・実装・アーキテクチャ判断 | CLAUDE.md / LEARNINGS.md の遵守 | -| **Cursor** | 日常的な小改修・インライン編集 | IDE 内での素早い修正 | -| **Antigravity** | 自律エージェント実験 | 複数ファイル横断変更 | -| **Gemini** | レビュー・大コンテキスト分析 | プロジェクト全体の俯瞰 | +| 担当 | 内容 | +|------|------| +| インフラ担当チャット | 認証実装・VPS デプロイ・DNS・server.js 変更 | +| UI 担当チャット | UX・デザイン・CLAUDE.md 適合・プライバシー表記・バグ修正 | -**注意**: Gemini はモデルバージョン・リリース日・具体的な数値を -ハルシネーションする傾向がある。重要な技術情報は公式で確認すること。 +**UI 担当が触ってはいけないもの:** +`api.soar-enrich.com` URL / `X-API-Key` ヘッダー / `?init_key=` パラメータ / localStorage 認証ロジック / server.js・VPS・Docker 関連 --- -## 7. AI モデル戦略(コストゼロ・上限なし優先) +## 7. 直近の確定事項(設計判断ログ) -### 7.1 基本方針 - -「最新モデルを追いかけず、無料枠を確実に使い切る」 - -### 7.2 推奨スタック(2026年3月時点での合理的な選択) - -| 役割 | モデル | 費用 | 上限 | -|------|--------|------|------| -| メイン(解析・生成) | Gemini Flash 最新版 | 無料枠 | 1分あたり RPM あり | -| コード論理検証 | DeepSeek V3 最新版 | 有料(格安) | 実質無制限 | -| 完全ローカル(上限なし) | Ollama on Synology | 0円 | なし(RAM 依存) | - -**重要**: モデル名・料金は Google AI Studio および DeepSeek 公式で必ず確認すること。 -本ドキュメントに特定バージョンを記載しない理由は、AI によるハルシネーションを防ぐため。 - -### 7.3 Ollama on Synology の実現可能性 - -| Synology モデル | RAM | 動作可能なモデル | -|----------------|-----|----------------| -| 4GB | Llama 3.2 3B(要確認) | 簡単な要約・コード補完 | -| 8GB+ | Llama 3.1 8B, Gemma 3 9B | 記事分析・コード生成 | -| 16GB+ | Mistral Nemo 12B 等 | ほぼ全用途をカバー | - -→ Synology の RAM 容量を確認してから検討 +| 日付 | 決定事項 | +|------|---------| +| 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-28 | 現行 auth テーブル(magic_link_tokens 等)は将来削除予定・今は放置 | +| 保留中 | *.posimai.soar-enrich.com ワイルドカード DNS(Eiji 依頼待ち) | +| 保留中 | VPS に VOICEVOX コンテナ追加(Eiji 作業中) | --- -## 8. Synology Docker 目標アーキテクチャ - -### 8.1 現状(確認済み) -``` -Container Manager / posimai_lab プロジェクト(稼働中) - ├ gitea ✓ Docker 化済み - ├ gitea_db ✓ PostgreSQL 稼働中(Gitea + API 共用) - ├ mcp_server ✓ MCP サーバー稼働中 - ├ posimai_api ✓ Node.js API 稼働中(記事・Gemini プロキシ) - └ ai_proxy × 停止中 → 削除可 - -主な改善余地: シークレット管理 / nginx / DB 分離 -``` - -### 8.2 目標構成(Container Manager / docker-compose) - -```yaml -# posimai-synology/docker-compose.yml(設計案) - -services: - - nginx: - image: nginx:alpine - ports: - - "80:80" - - "443:443" - volumes: - - ./nginx/conf.d:/etc/nginx/conf.d:ro - - ./nginx/certs:/etc/nginx/certs:ro - restart: unless-stopped - depends_on: - - posimai-api - - posimai-api: - build: ./api - environment: - - DATABASE_URL=postgresql://posimai:${DB_PASS}@postgres:5432/posimai - - GEMINI_API_KEY=${GEMINI_API_KEY} - restart: unless-stopped - depends_on: - postgres: - condition: service_healthy - - postgres: - image: postgres:16-alpine - environment: - - POSTGRES_USER=posimai - - POSTGRES_PASSWORD=${DB_PASS} - - POSTGRES_DB=posimai - volumes: - - postgres_data:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U posimai"] - interval: 10s - timeout: 5s - retries: 5 - restart: unless-stopped - - # Gitea(既にDockerなら統合、直インストールなら後回し) - # gitea: - # image: gitea/gitea:latest - # ... - - # オプション: ローカル LLM(RAM 8GB以上推奨) - # ollama: - # image: ollama/ollama - # volumes: - # - ollama_data:/root/.ollama - # restart: unless-stopped - -volumes: - postgres_data: - # ollama_data: -``` - -**env ファイル(`.env`、gitignore 必須):** -``` -DB_PASS=xxxxxxxxxx -GEMINI_API_KEY=xxxxxxxxxx -``` - -### 8.3 nginx ルーティング設計(案) - -```nginx -# /api → posimai-api:8000 -# /git → gitea:3000(任意) -# Tailscale IP または特定ポートでのみ公開 -``` - -### 8.4 実装ステップ(優先度順) - -| 優先度 | タスク | 前提条件 | -|--------|--------|---------| -| 1 (高) | ai_proxy コンテナ削除 | すぐ実施可 | -| 2 (高) | docker-compose.yml の `.env` 分離 | シークレット管理改善 | -| 3 (中) | nginx 追加(HTTPS / リバースプロキシ) | Tailscale 運用継続なら低優先でも可 | -| 4 (中) | posimai_api 専用 DB ユーザー作成 | Gitea との DB ユーザー分離 | -| 5 (低) | Ollama 追加 | VM RAM を 8GB に増やしてから | - ---- - -## 9. 未解決事項(要確認) - -| 確認項目 | 判明状況 | -|---------|---------| -| Synology の RAM 容量 | ✓ 物理 16GB(VM に 4GB 割当)| -| FastAPI / Python | ✓ 不使用。Node.js (posimai_api) が担当 | -| データの保存形式 | ✓ PostgreSQL(gitea_db コンテナ)| -| Synology への外部アクセス | ✓ Tailscale(posimai-lab.tail72e846.ts.net)| -| Gitea は Docker か | ✓ Docker 化済み | -| VM(Posimai_lab)の OS・用途 | 未確認(SSH / VNC で確認要)| -| mcp_server の具体的な動作 | 未確認(どの AI エージェントが使っているか)| - ---- - -## 10. 絶対に守るルール(全 AI 共通) +## 8. 絶対に守るルール(全 AI 共通) 1. **デプロイは `npm run deploy` のみ**(`vercel --prod` 禁止) 2. **絵文字禁止**(コード・UI・コメントすべて) -3. **アイコンは Lucide のみ** -4. **デザイントークン変更禁止**(--accent 1行のみ例外) +3. **アイコンは Lucide のみ**(`@0.344.0` 固定) +4. **デザイントークン変更禁止**(`--accent` 1行のみ例外) 5. **`git push origin` 禁止**(gitea と github の2リモートのみ) -6. **AI のバージョン断言は鵜呑みにしない**(公式確認必須) -7. **Synology への直接インストール禁止**(今後は全て Docker 経由) +6. **`api.soar-enrich.com` / 認証ロジックは UI 担当チャットが触らない** +7. **このファイルを変更したらすぐ「最終更新」日付を更新する** --- @@ -413,9 +226,7 @@ GEMINI_API_KEY=xxxxxxxxxx |---------|------| | `CLAUDE.md` | AI 向けプロジェクトルール(最優先) | | `AGENTS.md` | CLAUDE.md の Cursor/Windsurf 向けコピー | -| `LEARNINGS.md` | 過去のトラブル・解決策・設計判断ログ | -| `docs/master-architecture.md` | **このファイル** | -| `docs/template-features-analysis.md` | テンプレート機能優先度分析 | -| `docs/gemini-review-prompt.md` | Gemini へのレビュー依頼プロンプト | -| `_template/index.html` | PWA テンプレート(Phase 1 実装済み) | -| `scripts/new-app.sh` | 新アプリ作成自動化スクリプト | +| `docs/master-architecture.md` | **このファイル**(インフラ・確定事項の一元管理) | +| `posimai-dashboard/src/data/projects.json` | 全アプリの一覧・ステータス・技術スタック | +| `_template/` | フル機能テンプレート | +| `_template-minimal/` | 単機能ツール用テンプレート |