claude-memory/project_tools_enhancement.md

131 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

---
name: ツールアプリ差別化実装計画
description: Posimai ツールカテゴリ各アプリへのエコシステム連携・差別化機能の実装計画(優先順位付き)
type: project
---
## 背景・目的
ツールカテゴリdigest/clean/timer/lens/diff/roadmapは現状「汎用ツール + Posimaiデザイン」止まりで、
エコシステムとの連携がゼロ。Posimaiらしさを出すために以下の実装を優先順位順に進める。
**Why:** 各ツールが Pulse/Brain/Journal/Maps 等の他アプリと連携することで、
「使って終わり」から「記録・蓄積・振り返り」のループが完成する。
**How to apply:** 実装前に必ず現在のアプリコードを全文読んでから着手する。
---
## 実装優先順位と内容
### 1位: posimai-timer — Pulse連携 + セッションログ
**実装内容:**
- タイマー終了時(カウントダウン)に「集中セッション終了モーダル」を表示
- 何をやったか(テキストメモ、任意)
- エネルギーレベル1-5 スライダー or タップ選択)
- 気分1-5
→ これを Pulse と同じ localStorage スキーマで保存する
- セッション履歴ビューを追加(サイドバーに「履歴」ナビ追加)
- 日付ごとのセッション一覧(時刻・時間・メモ・エネルギー)
- 今週の合計集中時間を冒頭に表示
- Habit と同じ週ヒートマップで可視化(日別集中時間)
**Pulse との連携方式:**
- Pulse の localStorage キー: `posimai-pulse-entries`data-app-id="posimai-pulse" 配下)
- Timer が直接同じキーに書き込むのではなく、Timer 独自キー `posimai-timer-sessions` に保存
→ Pulse アプリ側で Timer セッション連携を将来追加する方が正しい設計
→ 今回は Timer 内にセッション記録・閲覧機能を完結させる
**UI ルール:**
- 終了モーダルは既存のデザインシステム(--surface, --border, --accentを使う
- モーダルはシンプル。テキスト入力 + エネルギー選択5段階のみ。送信 or スキップ
- ヒートマップは Habit アプリと同じロジックで実装7列 × N行グリッド、今週ハイライト
---
### 2位: posimai-diff — 履歴保存 + Journalへ送信
**実装内容:**
- 比較履歴の永続化
- 「保存」ボタンでタイトル付き保存localStorage: `posimai-diff-history`
- 履歴ビュー(サイドバー「履歴」)で過去の比較を再読み込み
- 最大20件保存古いものから削除
- Journalへ送信ボタン
- 差分結果エリアの右上に「Journal へ送る」ボタン
- クリックで Posimai Journal`https://posimai-journal.vercel.app`)を
`?body=` パラメータ付きで別タブで開く
(差分テキスト + 比較元タイトルを body に含める)
---
### 3位: posimai-lens — Maps連携ボタン
**実装内容:**
- EXIF に GPS 座標が含まれる場合、「Mapsで開く」ボタンを表示
- クリックで `https://posimai-maps.vercel.app/?lat=XX&lng=YY&label=ファイル名` を別タブで開く
- Maps 側が `?lat=&lng=&label=` を受け取ってピン表示できるか事前確認が必要
Maps の現コードを読んで対応の有無を確認してから実装する)
- 撮影設定メモのお気に入り登録
- 「この設定をお気に入りに追加」ボタンlocalStorage: `posimai-lens-favorites`
- お気に入りビューで設定名 + F値/SS/ISO 一覧
---
### 4位: posimai-digest — Brainへ保存
**実装内容:**
- 要約結果エリアの右下に「Brain に保存」ボタン
- クリックで Synology Brain API に POST
- エンドポイント: `POST /brain/api/articles`
- body: `{ title: (元URLのタイトルor先頭40文字), content: 要約テキスト, url: 元URL, source: "digest" }`
- API キーは既存の `posimai_api_key` を使用localStorage から取得)
- 保存成功時はトースト表示「Brain に保存しました」
---
### 5位: posimai-clean — 現状維持
現時点では追加機能の優先度が低いため対応しない。
---
## 実装前に必ず確認することCLAUDE.md ルール抜粋・特に重要なもの)
1. **絵文字は一切使わない**コード・HTML・コメント・トースト文言すべて
2. **lucide@latest を使わない**`@0.344.0` 固定
3. **アクセントカラーは `var(--accent)` を使う**。`#6EE7B7` のハードコード禁止
4. **SW でクロスオリジン GET をキャッシュしない**Brain API 等の外部 API は必ずネットワーク経由)
5. **底面固定要素には `env(safe-area-inset-bottom)` を付ける**
6. **外部リンクには `rel="noopener"` を付ける**`target="_blank"` とセット)
7. **デプロイは `npm run deploy`**= `git push gitea main && git push github main`
`vercel --prod` は直接実行しない
8. **デプロイ後は Dashboard Timeline に追記して Dashboard もデプロイする**(規模問わず必須)
9. **`lucide.createIcons()` は早期 return の後に呼ばない**(アイコンが空になるバグ防止)
## デプロイ手順(毎回)
```bash
cd posimai-[app]
git add .
git commit -m "feat: ..."
npm run deploy # git push gitea main && git push github main
# その後必ず Dashboard Timeline 更新
cd ../posimai-dashboard
# src/app/timeline/page.tsx の EVENTS 配列に追記
git add src/app/timeline/page.tsx
git commit -m "chore: update timeline"
npm run deploy
```
## 各アプリの現状2026-03-23 確認)
| アプリ | 現状 | Pulse/Brain API連携 |
|--------|------|---------------------|
| posimai-timer | ストップウォッチ + カウントダウン。履歴なし | なし |
| posimai-diff | テキスト差分のみ。保存機能なし | なし |
| posimai-lens | EXIF読み取り + 履歴。GPS表示ありテキスト| なし |
| posimai-digest | Gemini API 要約 + 履歴。APIキー設定あり | なし |
| posimai-clean | URLクリーン + 履歴 | なし |