posimai-root/STATUS.md

142 lines
9.5 KiB
Markdown
Raw Normal View History

# Posimai — 現在の状態
> このファイルはセッション末に AI が更新する。「今何をしている最中か」を引き継ぐ唯一の場所。
## 作業中
- 特になし
## 次にやること(優先順)
### Guard / Tauri
1. **Timer → Pulse 連携(セッションログ)** — タイマー終了時にセッション記録モーダル。`posimai-timer-sessions` に保存
2. **Tauri アプリ動作確認** — デスクトップショートカットから起動、CodeViewer が WebView でも動くか確認
3. **Diff → 履歴保存 + Journal 送信** — 比較結果をlocalStorage保存・Journal連携
### Guard 完成状態2026-04-14
- ルールエンジン133ルール
- 静的修正テンプレート85ルール
- VS Code で開く ✓
- CLI`npx tsx cli/guard.ts`)✓
- VS Code 拡張APIキー不要
### Guard ビルド方法メモ(次回再ビルド時)
```bash
cd /c/Users/maita/posimai-project/posimai-guard-app
export PATH="$PATH:/c/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64:/c/Program Files (x86)/Windows Kits/10/bin/10.0.26100.0/x64"
export LIB="C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.44.35207\lib\x64;..."
export INCLUDE="..."
node_modules/.bin/tauri build
# → target/release/bundle/nsis/Posimai Guard_0.1.0_x64-setup.exe
# → target/release/bundle/msi/Posimai Guard_0.1.0_x64_en-US.msi
```
### ビジネス化
1. **Eiji に Stripe sandbox テストをお願いする**(購入フロー確認)
2. **日本酒アプリを完成させて展開**mai 最優先)
3. 特商法ページ記入mai 作業 — 事業者名・住所・電話番号)
4. Store デザイン確定Eiji と A/B/C/D から選定)
5. Stripe 本番モード切り替え(上記完了後)
## ブロック中
| ブロック | 待ち先 |
|---------|--------|
| Stripe sandbox テスト結果 | Eiji |
| premium 実装対象決定 | mai + Eiji の判断 |
| Store デザイン確定 | Eiji |
| Stripe 本番切り替え | Store 確定・特商法記入 |
## 保留中(着手条件あり)
| タスク | 条件 | 理由 |
|--------|------|------|
| server.js リファクタリングlib/ + routes/ 分割) | 3500行超 or 新ルート追加時 | 現在 ~3130行、本番稼働中・障害なし |
| habit/pulse → VPS API 移行 | premium 対象決定後 | テーブルは VPS 存在済み。localStorage データの移行 UX 設計が必要 |
| user_activity テーブル追加 | mai 確認必要DB スキーマ変更) | Digest 週次集計の前提。CLAUDE.md 要確認事項 |
| Redis 移行webauthnChallenges | スケール要件が出てから | 現状インメモリで問題なし |
## 直近でやったこと2026-04-14 セッション2
### ponshu / Guard 拡張 / Guard VS Code修正
- **ponshu_room_lite 消費者APK**: 最新コミット04-12 13:23でリビルド完了 → `build/apk_releases/2026-04-14_22-54-28/` に maita・Eiji 向け各 90MB
- **posimai-guard-ext**: ルールエンジン組み込み完了。APIキー不要でスキャン可能に。Gemini/Claude はオプション追加スキャンに降格。バンドル 120KBルールエンジン込み
- **Guard「VS Code で開く」修正**: `window.open(uri, '_self')``window.location.href = uri` に変更。popup ブロッカーによる無効化を解消
- デプロイ済みVercel 自動デプロイ中)
## 直近でやったこと2026-04-14
### Guard 静的修正テンプレート + セキュリティ修正
- **ruleEngine.ts**: `RULE_FIXES` マップを追加。85ルール以上に静的修正テンプレートを設定。`makeIssue()` が `RULE_FIXES[rule.id] ?? null` を返すよう変更
- **CodeViewer.tsx `InlineFix`**: `issue.fix` があれば即表示API 呼び出しなし)。紫色の TEMPLATE ラベル + コピーボタン。「AI生成に切替」ボタンで従来の詳細 BEFORE/AFTER 生成も可能
- **`/api/fetch-url`**: レートリミット未設定だったため追加10 req/min per IP
- **`clientIp.ts`**: `x-forwarded-for` の最後のエントリを使うよう変更スプーフィング耐性向上。IP 形式検証追加
- デプロイ済みVercel 自動デプロイ中)
## 直近でやったこと2026-04-11 セッション3
### セキュリティ修正・コード品質改善(批判的コードレビュー対応)
- **Together API メンバー検証**: `/together/share` `/together/react` `/together/comments``together_members` テーブルでのグループ参加確認を追加。非メンバー投稿を 403 で拒否 → VPS デプロイ済み
- **manifest.json id 統一**: lens / diff / habit / pulse の `"id"``"posimai-xxx"``"/posimai-xxx/"` 形式に修正new-app-guide.md 仕様通り)→ 各アプリデプロイ済み
- **feed XSS 修正**: `onclick="openInReader('${article.url}', ...)"` の URL 直接埋め込みを `data-url` 属性 + イベント委任に変更 → デプロイ済み
- **PostgreSQL MCP**: 前セッションで完了SSH トンネル設定・start-postgres-mcp.sh 作成。Claude Code 再起動で有効化される
### 残る既知の課題
- **Together 完全な認証**: member チェックはあるが member-to-member なりすましは防げないJWT 導入まで)
- **9アプリ base.css 未移行**: feed/maps/hotels/reader/journal/daily/events/timer/storeカスタムテーマ以外
## 直近でやったこと2026-04-11 セッション2
### posimai-ui 移行バッチCSS 重複削除・base.css 統一)
- **posimai-lens**: 完全移行768行 → 632行+ デプロイ済み
- **posimai-diff**: 完全移行807行 → 705行+ デプロイ済み
- **posimai-clean**: 最小移行data-app-id + base.css 追加、JWT handoff は既存実装あり)+ デプロイ済み
- **posimai-think**: 最小移行data-app-id + base.css + CSP style-src 更新)+ デプロイ済み
- **posimai-digest**: 完全移行1602行 → 1113行+ JWT handoff 追加 + デプロイ済み
- **posimai-pulse / posimai-habit**: 前セッションで移行・デプロイ済みを確認
- **posimai-ui/base.css**: サイドバーレイアウトパターン追加済み(前セッション)
- **_template-minimal / create-app.sh**: 前セッションで最新化済み
### PostgreSQL MCP 設定
- [docs/postgresql-mcp-setup.md](docs/postgresql-mcp-setup.md): セットアップガイド作成SSH トンネル・read-only user・セキュリティ要件
- [.mcp.json](.mcp.json): MCP 設定テンプレート作成(`.gitignore` に追加済み)
- **次のアクション**: VPS に `posimai_readonly` ユーザー作成 → パスワードを `.mcp.json` に設定 → SSH トンネル起動
### 移行スキップ(意図的)
- **brain / atlas / analytics / dev**: カスタムテーマnavy/violet 等)のため移行しない
- **clean / think**: CSS が複雑混在のため最小移行のみ(重複 CSS は残存するが機能的に問題なし)
## 直近でやったこと2026-04-11 セッション1
- **全アプリ認証統一**: `posimai_token`JWTを優先、`pk_` キーをフォールバックに変更Brief / Daily / Journal / Ambient
- **Brief**: API キー手入力欄を廃止 → ログインボタン UI に変更
- **Daily**: 設定の API キー欄を撤去 → ログインボタン UI に変更
- **Journal**: Auth Gate を「ログインする」ボタンに変更JWT で自動通過)
- **Ambient**: `posimai_token` を優先認証に対応
- **Habit / Pulse**: ログイン先を `posimai.soar-enrich.com/login` に修正(旧 `posimai-dashboard.vercel.app` から)
- **server.js**: 購入チェック失敗時のストア URL を `store.posimai.soar-enrich.com` に統一(旧 `posimai-store.vercel.app`
- **VPS デプロイ**: scp + docker compose restart で反映済み
- **Together**: 本番運用中のため変更なし(設計通りの独自 user/group 方式)
- **Brief feed API**: CORS で Authorization ヘッダーを許可・POST 失敗時の GET フォールバック追加
## 直近でやったこと2026-04-10
- **Brain 記事保存ラグ解消**: POST /save を即時 INSERT + setImmediate() 非同期 AI 処理に変更
- **Brain 楽観的 UI**: addArticleFromCommand() に temp article 即時表示を実装
- **Brain AI pending UX**: 「AI分析中...」テキスト削除・sparkles アイコン点滅のみに変更
- **SW キャッシュ**: Brain sw.js を v27 に更新
- **server.js セキュリティ修正 7件**: SSRF ガードisSsrfSafe・サイズ上限・pool 設定改善
- **Together Supabase 撤退2026-04-06**: VPS PostgreSQL に完全移行61件投稿
- **セキュリティ修正 4件2026-04-06**: e.message 直返し撤廃・WebSocket 認証・SSRF・Feed 認証
- **全体最適化2026-04-10**: skipWaiting 追加4アプリ・SW 登録追加2アプリ・brain ハードコード色修正
- **ドキュメント最新化**: server-refactor-plan.md マージ・atlas.json Supabase 削除/Gemini 追加・projects.json 更新・timeline 追記
## コードの「正」はどこか
| 何 | 正 | 役割 |
|----|-----|------|
| コード | **GitHub** | Vercel がここを参照。確認はここ |
| フロント本番 | **Vercel** | GitHub push で自動デプロイ |
| バックエンド本番 | **VPS** | `bash deploy-server.sh` で更新 |
| Gitea | バックアップのみ | push するだけ・確認先にしない |