了解。
Node.js を完全に排除し、バックエンドは Flask(Python)で統一する前提で、
これまでの OS レイヤー構造・MySQL スキーマ・胆(core intent)語彙体系・AI パイプラインをすべて統合した、
“高校数学 個人学習 AI Web アプリ(Flask 版)” の Cline 一括生成プロンプト(完全版) を作り直す。

これは Cline に貼った瞬間に、Flask + MySQL + Prisma(→ SQLAlchemy に変更)+ Next.js なし(純粋 Flask UI or Three.js UI)で全自動構築が始まる 仕様。

あなたの OS 思想(責務分離・意味空間の階層化・構造化 I/O)に完全準拠。


🚀 高校数学 個人学習 AI Web アプリ(Flask 版)Cline 一括生成プロンプト(完全版)

以下を そのまま Cline に貼るだけで、フルスタック Flask アプリが自動生成される。


あなたは「高校数学 個人学習 AI Web OS」を構築するフルスタック自動生成エージェントです。

以下の OS レイヤー構造・DB スキーマ・語彙体系・AI パイプラインに基づき、
Flask + MySQL + SQLAlchemy の Web アプリを
責務分離を保ったまま自律的に構築してください。

==================================================
【プロジェクト名】
==================================================
math-personal-learning-os-flask

==================================================
【OS の全体構造(必須)】
==================================================
ユーザが PNG の数学問題をアップロードすると、以下の OS パイプラインを実行する。

1. OCR(画像 → テキスト)
2. 構造化(テキスト → 数式・構造)
3. 胆抽出(core intent / operations / mistakes)
4. 類題10問生成
5. 解答ステップ生成
6. ユーザの「納得チェック」保存

UI では、類題 → 解答ステップ → 納得チェック → 弱点抽出 の流れで学習できる。

==================================================
【技術スタック】
==================================================
Backend: Flask  
DB: MySQL  
ORM: SQLAlchemy  
AI: Claude API(OCR / 構造化 / 胆抽出 / 類題生成 / ステップ生成)  
Storage: ローカル or S3(抽象化して interface 化)  
Frontend: Flask + Jinja2(または static/js で Three.js UI)

==================================================
【ディレクトリ構成(必須)】
==================================================
/backend
  /controllers
  /services
  /models
  /schemas
  /static
  /templates
  config.py
  app.py

/vocab
  core_intents.json

==================================================
【MySQL スキーマ(SQLAlchemy モデルとして実装)】
==================================================
TABLE problems (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    image_path VARCHAR(255) NOT NULL,
    created_at DATETIME NOT NULL
);

TABLE problem_ocr (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    problem_id BIGINT NOT NULL,
    ocr_text TEXT NOT NULL,
    created_at DATETIME NOT NULL
);

TABLE problem_structure (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    problem_id BIGINT NOT NULL,
    domain VARCHAR(50),
    type VARCHAR(50),
    expression TEXT,
    metadata JSON,
    created_at DATETIME NOT NULL
);

TABLE problem_core (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    problem_id BIGINT NOT NULL,
    core_intent VARCHAR(255),
    key_operations JSON,
    typical_mistakes JSON,
    created_at DATETIME NOT NULL
);

TABLE generated_problems (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    problem_id BIGINT NOT NULL,
    core_id BIGINT NOT NULL,
    generated_index INT NOT NULL,
    text TEXT NOT NULL,
    created_at DATETIME NOT NULL
);

TABLE generated_solutions (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    generated_problem_id BIGINT NOT NULL,
    full_solution TEXT,
    created_at DATETIME NOT NULL
);

TABLE solution_steps (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    solution_id BIGINT NOT NULL,
    step_index INT NOT NULL,
    step_text TEXT NOT NULL,
    created_at DATETIME NOT NULL
);

TABLE user_progress (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    step_id BIGINT NOT NULL,
    is_understood BOOLEAN NOT NULL,
    updated_at DATETIME NOT NULL
);

==================================================
【胆(core intent)語彙体系 JSON(読み取り専用)】
==================================================
/vocab/core_intents.json に保存し、
API /vocab で返すこと。

(※ 作った正式版 JSON をそのまま保存)

==================================================
【AI パイプライン I/O 仕様(必須)】
==================================================
すべて JSON で返すこと。

1. OCR
input: { "image_path": "..." }
output: { "ocr_text": "..." }

2. 構造化
input: { "ocr_text": "..." }
output: { "domain": "...", "type": "...", "expression": "...", "metadata": {...} }

3. 胆抽出
input: { "expression": "...", "metadata": {...} }
output: {
  "core_intent": "...",
  "key_operations": [...],
  "typical_mistakes": [...]
}

4. 類題生成
input: { "core_intent": "...", "key_operations": [...] }
output: { "problems": [{ "text": "..." }, ...] }

5. ステップ生成
input: { "text": "..." }
output: { "steps": [{ "step_index": 1, "step_text": "..." }, ...] }

==================================================
【API 設計(Flask Blueprint)】
==================================================
POST /problems/upload  
POST /problems/<id>/ocr  
POST /problems/<id>/structure  
POST /problems/<id>/core  
POST /problems/<id>/generate  
POST /generated/<id>/solution  
POST /steps/<id>/progress  

GET /problems/<id>  
GET /generated/<id>  
GET /steps/<id>  
GET /vocab  

==================================================
【UI 要件(Flask + Jinja2)】
==================================================
1. PNG アップロード画面  
2. 類題一覧画面  
3. 解答ステップ表示画面  
4. 納得チェック UI(チェックボックス)  
5. 弱点一覧(未納得ステップの抽出)

==================================================
【Cline への指示】
==================================================
1. ディレクトリ構成を自動生成する  
2. SQLAlchemy モデルを生成し、DB 初期化コードを作成する  
3. Flask Blueprint で API を実装する  
4. Jinja2 テンプレートで UI を実装する  
5. AI 呼び出しロジックを services 層に実装する  
6. 語彙体系 JSON を読み取り専用で扱う  
7. エラーが出たら自律的に修正する  
8. 完成まで自動で進める  

==================================================
【重要】
==================================================
- レイヤーを混ぜない  
- 意味空間を混ぜない  
- OS 的抽象化を保つ  
- 後から拡張できる構造にする  

以上を満たし、プロジェクトを完全自動生成してください。

🎉 このプロンプトは Flask 版として“完全に最適化された一括生成プロンプト”

あなたの OS 思想:

  • 意味レイヤーを混ぜない
  • 責務を明確に分離する
  • 後から深掘りできる構造にする

これらをすべて満たしつつ、
Cline が Flask アプリをフル自動生成できる形に再構成した。


次に進むならどれにする?

  • AI プロンプトの最適化
  • ステップ生成アルゴリズムの OS 化
  • 弱点抽出ロジックの設計
  • UI の Intent / Concept マップ化

どれでも深められる。