claude-memory/project_status.md

209 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: プロジェクト現状・残タスク・次ステップ
description: 2026-03-16 全アプリ品質監査完了。ponshu-room は Flutter との乖離解消まで保留。
type: project
---
## 完了済み〜2026-03-15 全セッション)
### インフラ・設定
- Docker Compose の .env 分離Synology
- Magic Link キー保存先を全アプリで posimai_api_key に統一
- theme-color を全アプリで Teal (#6EE7B7) に統一
- server.js CORS wildcardposimai-*.vercel.app対応 → デプロイ済み
- Gemini モデル: gemini-3.1-flash-lite → gemini-2.0-flash-liteJournal AI tag 修正)
### posimai-daily 改修2026-03-15
- Feed 欄を Brain API → `posimai-feed.vercel.app/api/feed` に変更(常に最新)
- VOICEVOX TTS 実装AudioContext エンジン、AbortController、fallback
- 話者選択 UI設定パネルに 6 話者ボタン)
- SW v3skipWaiting + clients.claim
- API キー移行スクリプトposimai_api_key → posimai-daily-apikey
- NAS Infrastructure ページposimai-dashboard追加
- Sidebar に NAS Infrastructure リンク追加
### Dashboard 機能追加
- Ecosystem Map / Timeline / Boilerplates / Access Guide / NAS Infrastructure
- Sidebar 各ページへのリンク追加
### 新アプリ実装
- posimai-digest, posimai-clean, posimai-ambient, posimai_widget, posimai-widget-dl
---
## posimai-daily VOICEVOX TTS 問題2026-03-15 解決済み)
### 根本原因(確定)
VOICEVOX の合成速度が遅すぎたNAS の CPU が弱い):
- 短文 "テスト": 13 秒
- ニュース記事30 文字): 67 秒
- キャッシュ HIT: 0.005 秒
Tailscale Funnel が数秒のタイムアウトで接続を切断 → browser に response が届かず pending のまま。
### 解決策2026-03-15 実装・デプロイ済み)
**バックグラウンドウォームアップ方式**:
1. server.js に `POST /brain/api/tts/warmup` エンドポイント追加
- 即座に 202 を返すFunnel タイムアウトなし)
- VOICEVOX をバックグラウンドでシリアル合成してキャッシュに入れる
2. index.html で Feed 読み込み後に warmup を fire-and-forget で呼ぶ
3. `#tts-status` に「音声準備中...」→「音声準備完了」を表示
### ウォームアップ時間の目安
- 記事ごとに 13〜70 秒(テキスト長による)
- 全 6 テキスト5 記事 + 締め): 2〜5 分
- ユーザーが記事を読んでいる間に完了するケースが多い
- 未完了でも Web Speech API フォールバックが動く
### 現在のコード状態
- `server.js`: `ttsSynthesize()` ヘルパー + `/tts/warmup` エンドポイント追加済み
- `posimai-daily/index.html`: warmup 呼び出し + `#tts-status` 表示ロジック追加済み
- `posimai-daily/api/tts.js`: Vercel プロキシ(未使用、残置)
---
## バックアップ現状2026-03-17 調査)
### 安全Gitea + GitHub 二重保存済み)
- 全 posimai-* アプリ 22個 → gitea / github リモート両方あり確認済み
- ponshu-room → 同上
### Step 2 完了済み2026-03-17
- `posimai-root` リポジトリ: gitea/github 両方に push 済み
- 内容: CLAUDE.md, AGENTS.md, _template/, deploy-server.sh, scripts/, server.js, .gitignore
- Gitea: http://100.76.7.3:3000/mai/posimai-root
- GitHub: https://github.com/posimai/posimai-root (private)
- `claude-memory` リポジトリ: gitea/github 両方に push 済み
- 内容: memory/ 以下の全 .md ファイル8ファイル
- Gitea: http://100.76.7.3:3000/mai/claude-memory
- GitHub: https://github.com/posimai/claude-memory (private)
### Step 2 追加対応完了2026-03-17
- `claude-settings.json``posimai-root` に追加(`~/.claude/settings.json` のバックアップ)
- CLAUDE.md にディザスタリカバリセクション追記(新マシン復元手順 + 各リポジトリ更新コマンド)
- `posimai-root` に commit & push 済みgitea + github
### バックアップ後の残リスク
- memory 変更時は手動で push が必要(自動化なし)
```bash
cd ~/.claude/projects/c--Users-maita-posimai-project/memory
git add . && git commit -m "chore: update memory"
git push gitea main && git push github main
```
- `claude-settings.json` は手動コピー更新settings.json 変更時は posimai-root にも反映する)
### Step 1 完了済み2026-03-17
- posimai-dashboard: Header.tsx 末尾改行コミット・push 済み
- posimai-tech-events: theme-color media query 修正・gas-proxy-setup.md コミット・push 済み
- posimai-hotels: 改行コード差分のみ → git restore で戻した(変更なし)
---
## 全プロジェクト精査結果2026-03-17
### [CRITICAL] 即対応必須2026-03-17 全対応済み)
- [x] **C-1** posimai-pulse/sw.js — origin チェック追加済み
- [x] **C-2** posimai-lens/sw.js — 同上
- [x] **C-3** posimai-tech-events/sw.js — origin チェック追加済み
- [x] **C-4** server.js /together/share — URL プロトコル検証追加済みhttp/https のみ許可)
- [x] **H-1** posimai-ambient/index.html — theme-color media query 追加済み
- [x] **H-3** posimai-together/index.html — marked@9.1.6 + DOMPurify@3.1.6 追加・sanitize 実装済み
- [x] **M-3** server.js /together/react — type バリデーション追加済みlike/star/fire のみ)
### [MEDIUM] 設計不整合2026-03-17 対応済み)
- [x] **M-1** #6EE7B7 ハードコード → pulse/diff/habit/lens の brand-logo gradient + heatmap を var(--accent) に置換
- [x] **M-2** border-radius: 8px 精査完了2026-03-17。変更すべきカード系3箇所のみ修正hotels/.site-row / together/.group-info-box / feed/.pack-card。残りはフォーム/ボタン/バッジで意図的8px。
- [x] **M-4** posimai-diff/sw.js, posimai-timer/sw.js — origin チェック追加済み
### [LOW] Tech debt2026-03-17 全対応済み)
- [x] **L-1** posimai-brain/sw.js — 重複 fetch リスナー削除、v23 に更新・デプロイ済み
- [x] **L-4** Dashboard Timeline に 2026-03-17 セキュリティ監査エントリ追加・デプロイ済み
- [x] **L-5** server.js コメント・起動ログの絵文字削除済みdeploy-server.sh 要実行)
### [NEW CRITICAL] 2026-03-17 発見・対応済み
- [x] **posimai-daily/sw.js** — クロスオリジン API レスポンスキャッシュバグHabit と同パターン)→ origin チェック追加、v11 に更新・デプロイ済み
### 確認済み(対応不要)
- Lucide バージョン: 全アプリ @0.344.0 固定済み
- manifest.json / sw.js: 全PWAアプリで存在確認済み
- 絵文字: HTML ファイルでは検出なし
---
## 残タスク(手動・未対応)
- [x] ai_proxy コンテナ削除済みContainer Manager + ai-proxy/ ai-proxy-data/ ディレクトリも削除)
- [ ] posimai_widget APK 実機インストール・ウィジェット動作テスト
- [ ] Magic Link 動作確認(ブラウザで手動テスト)
- [x] Lucide アイコン — 全アプリ既に @0.344.0 固定済みと確認(残タスクは誤記)
## ponshu-room PWA — 保留中2026-03-16
**状態**: Flutter ネイティブアプリとの UI/UX 乖離が大きく、再設計が必要なため保留。
**問題点3つ**:
1. テーマが根本的に違うPosimai Teal → Washi 琥珀に要変更)
2. Sakenowa 自動マッチング6軸フレーバーが未実装
3. MBTI・ゲーミフィケーションが未実装
**再開時の参照先**: `ponshu-room/ROADMAP.md`(全詳細・優先度・実装チェックリスト記載)
**再開時の作業順**:
1. CSS を Washi テーマへ書き換え(最速で効果大)
2. データモデル拡張Sakenowa フィールド追加)
3. Sakenowa API 連携(公開 API、認証不要
4. グリッド/リスト切替
5. MBTI・ゲーミフィケーション後回し可
**触ってはいけないもの**: `ponshu_room_lite/`Flutter 版本体、読み取り専用参照のみ)
## posimai-together 実装状況2026-03-17 完了)
### 完了済み
- DB テーブルtogether_groups/members/shares/reactions/commentsクリーンリセット migration 追加
- 設定モーダル統合3モーダル → 1モーダル、タブ切替
- Quick CaptureWeb Share Target API、GET method
- インライン Reader SheetJina Reader + marked.js
- AI 要約スケルトンarchive_status: pending/done/failed
- Bubble BoardCanvas アニメーション)
- 30秒ポーリング + 新着バナー
### Gemini API キー管理2026-03-17 完了)
- `GEMINI_TOGETHER_API_KEY``/volume1/docker/posimai_lab/.env` に追加(`GEMINI_API_KEY` と同値)
- `docker-compose.yml``posimai-api` サービスに `GEMINI_TOGETHER_API_KEY` 環境変数追加
- `docker compose up -d --no-deps posimai-api` で再起動・動作確認済みhealth: ok, gemini: true
### Gemini サーバー側管理の中長期計画
- posimai-think → server.js の `/think/chat` エンドポイント経由に移行GEMINI_THINK_API_KEY
- posimai-digest → server.js の `/digest/summarize` 経由に移行GEMINI_DIGEST_API_KEY
- ponshu-room → server.js の `/ponshu/analyze` 経由に移行GEMINI_PONSHU_API_KEY
- 各アプリのキー入力 UI は廃止
---
## 確定済み「対応不要」
- `?init_key=` URL: **廃止しない**。Magic Link 方式は意図的設計
- Jina Reader SPOF: **対応済み**。AbortSignal.timeout(15000) + OGP フォールバック実装済み
-レポ化・Firebase SSO: 個人利用規模では不要
## 重要なシステム情報
### Dashboard 認証
- Basic 認証: middleware.ts で実装
- デフォルト: mai / posimai
- Vercel 環境変数: BASIC_AUTH_USER / BASIC_AUTH_PASSWORD
### デザインシステム v2
- Dark: bg #0D0D0D / surface #1A1A1A / accent #6EE7B7Teal
- Light: bg #F9FAFB / surface #FFFFFF / accent #059669Emerald-600
- アプリ別例外: journal/site = #80CAEESky Blue
- フォント: Inter 300/400/500/600 / アイコン: Lucide / 絵文字禁止
- radius: 12px
### Synology インフラ
- NAS IPTailscale: 100.76.7.3
- Docker binary: /var/packages/ContainerManager/target/usr/bin/docker
- Tailscale binary: /var/packages/Tailscale/target/bin/tailscale
- Brain API: http://127.0.0.1:8090/brain/api (ホスト上), posimai_api コンテナ
- VOICEVOX: http://127.0.0.1:50021 (ホスト上), コンテナ名 voicevox:50021
- Tailscale Funnel: /brain → http://127.0.0.1:8090, / → http://127.0.0.1:3000