claude-memory/project_tools_enhancement.md

131 lines
6.1 KiB
Markdown
Raw Permalink 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: 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クリーン + 履歴 | なし |