一、项目总览

1.1 项目定位

一款面向初中生的错题管理 + AI 辅助学习工具,覆盖语文、英语、数学及小四门(历史、地理、生物、道德与法治),核心目标:记录 → 理解 → 巩固 → 提分

1.2 核心用户画像

角色 使用场景
学生(儿子) 日常记录错题、查看复习、与AI互动
家长(你) 后台管理、查看学习数据、补充内容

1.3 整体功能矩阵

┌─────────────────────────────────────────────────────┐
│                    错题宝 App                        │
├──────────┬──────────┬──────────┬─────────────────────┤
│   语文   │   英语   │   数学   │    小四门(4科)      │
├──────────┼──────────┼──────────┼─────────────────────┤
│ 字词读音  │ 错词本   │ 错题录入  │    拍照录入         │
│ 混淆字词  │ 易错短语  │ 解法记录  │    答案整理         │
│ 文学常识  │ 句型归纳  │ AI解题   │    AI整理答案       │
│ 古文基础  │ 错题集   │ 拍照识别  │    拍照识别         │
│ 拍照输入  │ 语音输入  │          │                     │
│ AI矫正   │ AI扩展   │          │                     │
├──────────┴──────────┴──────────┴─────────────────────┤
│          通用能力:拍照OCR / 语音STT / AI对话          │
│          学习管理:艾宾浩斯复习 / 统计分析 / 搜索       │
│          后台管理:内容管理 / 用户管理 / 数据统计        │
└─────────────────────────────────────────────────────┘

二、技术架构方案

2.1 推荐技术栈

考虑到你是个人开发者、买了云服务器、孩子用手机,推荐最务实的方案:

层级 技术选型 理由
前端(移动端) Flutter(推荐)或 uni-app 一套代码同时出 Android + iOS;uni-app 如果你更熟悉 Vue
后端服务 Python + FastAPI 生态好、AI库丰富、异步性能强、开发快
数据库 MySQL 8.0 + Redis MySQL 存业务数据,Redis 做缓存和复习提醒队列
文件存储 阿里云OSS / 本地存储 存储拍照图片、音频文件
AI能力 通义千问API / DeepSeek API 国内稳定、中文能力强、价格便宜
OCR识别 百度OCR API / 通义千问视觉模型 拍照识别文字
语音识别 讯飞语音 / 阿里云语音 中英文语音转文字
后台管理 Vue3 + Element Plus 功能完善的管理后台
服务器 你的云服务器(推荐2核4G起步) 个人使用足够

2.2 系统架构图

                    ┌──────────────┐
                    │   手机App    │
                    │  (Flutter)   │
                    └──────┬───────┘
                           │ HTTPS
                    ┌──────▼───────┐
                    │   Nginx      │  反向代理 + 静态资源
                    │   80/443     │
                    └──────┬───────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──────┐ ┌──▼────┐ ┌────▼─────┐
       │ FastAPI后端  │ │ Vue3  │ │ WebSocket│
       │  (业务API)   │ │管理后台│ │ (实时推送) │
       │  :8000       │ │ :3000 │ │  :8001   │
       └──────┬──────┘ └──┬────┘ └────┬─────┘
              │            │           │
       ┌──────▼────────────▼───────────▼─────┐
       │           MySQL + Redis              │
       │         数据持久化 + 缓存             │
       └──────────────┬──────────────────────┘
                      │
       ┌──────────────┼──────────────────┐
       │              │                  │
  ┌────▼────┐   ┌─────▼─────┐   ┌───────▼──────┐
  │ AI API  │   │  OCR API  │   │  语音 API    │
  │通义/DeepSeek│ │ 百度OCR   │   │  讯飞/阿里   │
  └─────────┘   └───────────┘   └──────────────┘

2.3 目录结构

cuoti-bao/
├── backend/                    # Python FastAPI 后端
│   ├── app/
│   │   ├── __init__.py
│   │   ├── main.py             # 应用入口
│   │   ├── config.py           # 配置文件
│   │   ├── database.py         # 数据库连接
│   │   ├── models/             # 数据模型
│   │   │   ├── user.py
│   │   │   ├── chinese.py
│   │   │   ├── english.py
│   │   │   ├── math.py
│   │   │   ├── general.py      # 小四门
│   │   │   └── review.py       # 复习计划
│   │   ├── api/                # API路由
│   │   │   ├── auth.py
│   │   │   ├── chinese.py
│   │   │   ├── english.py
│   │   │   ├── math.py
│   │   │   ├── general.py
│   │   │   ├── ai_chat.py
│   │   │   ├── ocr.py
│   │   │   ├── voice.py
│   │   │   └── stats.py
│   │   ├── services/           # 业务逻辑
│   │   │   ├── ai_service.py
│   │   │   ├── ocr_service.py
│   │   │   ├── voice_service.py
│   │   │   └── review_service.py
│   │   └── schemas/            # Pydantic数据校验
│   ├── requirements.txt
│   └── Dockerfile
│
├── admin/                      # Vue3 管理后台
│   ├── src/
│   │   ├── views/
│   │   ├── components/
│   │   └── api/
│   └── package.json
│
├── mobile/                     # Flutter 移动端
│   ├── lib/
│   │   ├── pages/
│   │   ├── widgets/
│   │   ├── services/
│   │   └── models/
│   └── pubspec.yaml
│
└── deploy/                     # 部署脚本
    ├── docker-compose.yml
    └── nginx.conf

三、数据库设计

3.1 核心数据模型

-- ============================================
-- 用户表
-- ============================================
CREATE TABLE users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    role ENUM('admin', 'student') DEFAULT 'student',
    nickname VARCHAR(50),
    grade VARCHAR(20) DEFAULT '初一',
    avatar_url VARCHAR(500),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- ============================================
-- 学科表
-- ============================================
CREATE TABLE subjects (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,          -- '语文','英语','数学','历史','地理','生物','道法'
    category ENUM('main', 'minor') DEFAULT 'main',  -- 主科/小四门
    icon VARCHAR(50),
    sort_order INT DEFAULT 0
);

-- ============================================
-- 错题/知识点总表(统一入口)
-- ============================================
CREATE TABLE error_entries (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    subject_id INT NOT NULL,
    entry_type VARCHAR(30) NOT NULL,    -- 细分类型,见下方枚举
    title VARCHAR(200),                 -- 标题/摘要
    content TEXT,                       -- 主要内容
    answer TEXT,                        -- 正确答案/解析
    source VARCHAR(50),                 -- 来源:'期中考试','课后练习','课堂听写'
    difficulty TINYINT DEFAULT 3,       -- 1-5难度
    importance TINYINT DEFAULT 3,       -- 1-5重要度
    photo_urls JSON,                    -- 拍照图片URL列表
    ai_analysis TEXT,                   -- AI分析内容
    is_mastered BOOLEAN DEFAULT FALSE,  -- 是否已掌握
    mastered_at DATETIME,
    review_count INT DEFAULT 0,         -- 复习次数
    next_review_at DATETIME,            -- 下次复习时间(艾宾浩斯)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (subject_id) REFERENCES subjects(id),
    INDEX idx_user_subject (user_id, subject_id),
    INDEX idx_next_review (user_id, next_review_at),
    INDEX idx_entry_type (subject_id, entry_type)
);

-- entry_type 枚举说明:
-- 语文: 'pronunciation'(字词读音), 'confusing_words'(混淆字词),
--        'literature'(文学常识), 'classical_chinese'(古文基础), 'reading'(阅读理解)
-- 英语: 'vocabulary'(单词), 'phrase'(短语), 'sentence_pattern'(句型), 'error_question'(错题)
-- 数学: 'error_question'(错题), 'concept'(概念题)
-- 小四门: 'error_question'(错题), 'knowledge_point'(知识点)

-- ============================================
-- 标签表(多维度分类检索)
-- ============================================
CREATE TABLE tags (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    subject_id INT,
    color VARCHAR(20) DEFAULT '#4A90D9',
    FOREIGN KEY (subject_id) REFERENCES subjects(id)
);

CREATE TABLE entry_tags (
    entry_id BIGINT NOT NULL,
    tag_id INT NOT NULL,
    PRIMARY KEY (entry_id, tag_id),
    FOREIGN KEY (entry_id) REFERENCES error_entries(id) ON DELETE CASCADE,
    FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);

-- ============================================
-- AI对话记录表
-- ============================================
CREATE TABLE ai_conversations (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    entry_id BIGINT,                    -- 关联的错题(可为空)
    subject_id INT,
    role ENUM('user', 'assistant') NOT NULL,
    content TEXT NOT NULL,
    tokens_used INT DEFAULT 0,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (entry_id) REFERENCES error_entries(id) ON DELETE SET NULL,
    INDEX idx_user_entry (user_id, entry_id)
);

-- ============================================
-- 复习计划表(艾宾浩斯遗忘曲线)
-- ============================================
CREATE TABLE review_schedules (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    entry_id BIGINT NOT NULL,
    review_stage TINYINT DEFAULT 0,     -- 0-7 对应 8次复习
    scheduled_at DATETIME NOT NULL,     -- 计划复习时间
    completed_at DATETIME,              -- 实际完成时间
    result ENUM('forgot', 'vague', 'remembered'),  -- 复习结果
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (entry_id) REFERENCES error_entries(id) ON DELETE CASCADE,
    INDEX idx_user_schedule (user_id, scheduled_at)
);

-- ============================================
-- 学习统计表(每日汇总)
-- ============================================
CREATE TABLE daily_stats (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    user_id BIGINT NOT NULL,
    stat_date DATE NOT NULL,
    subject_id INT,
    new_entries INT DEFAULT 0,          -- 新增条目数
    reviewed_entries INT DEFAULT 0,     -- 复习条目数
    mastered_entries INT DEFAULT 0,     -- 掌握条目数
    ai_queries INT DEFAULT 0,          -- AI查询次数
    study_minutes INT DEFAULT 0,       -- 学习时长(分钟)
    FOREIGN KEY (user_id) REFERENCES users(id),
    UNIQUE KEY uk_user_date_subject (user_id, stat_date, subject_id)
);

3.2 数据库 ER 关系图

users ──────┬──────────────┐
            │              │
    error_entries ──── entry_tags ──── tags
            │
    ┌───────┼────────┐
    │       │        │
ai_conv  review_schedule  daily_stats

四、功能模块详细设计

4.1 语文模块

4.1.1 字词读音纠错

┌─────────────────────────────────────────────────┐
│  📝 记录页面                                      │
├─────────────────────────────────────────────────┤
│                                                  │
│  错误字词:  [ 膝  盖    ]                        │
│  错误读音:  [ qī gài   ]  🎤 语音输入            │
│  正确读音:  [ xī gài   ]                        │
│  出错场景:  [ 课堂听写 ▼]                        │
│  拍照记录:  [📷 拍照/从相册选择]                   │
│                                                  │
│  ── AI 智能扩展 ──────────────────               │
│  [🤖 点击获取AI讲解]                              │
│                                                  │
│  AI回复示例:                                     │
│  「膝」读 xī,易错读 qī。同类型的还有:             │
│   · 畸形(jī 不读 qí)                             │
│   · 发酵(jiào 不读 xiào)                         │
│   · 粗犷(guǎng 不读 kuàng)                       │
│   记忆技巧:月字旁的字多与身体有关...               │
│                                                  │
│  标签:[易错读音] [月字旁] [+添加标签]              │
│                                                  │
│           [ 保  存 ]                              │
└─────────────────────────────────────────────────┘

4.1.2 混淆字词

┌─────────────────────────────────────────────────┐
│  混淆字词记录                                      │
├─────────────────────────────────────────────────┤
│                                                  │
│  易混词组:  「的 / 地 / 得」                      │
│  造句错误:  "他高兴的跑了" ← 应为"地"              │
│  辨析规则:  [记录区分方法...]                      │
│  拍照记录:  [📷]                                  │
│                                                  │
│  [🤖 AI 辨析扩展]                                 │
│  → AI 生成更多例句、对比表格、记忆口诀              │
│                                                  │
└─────────────────────────────────────────────────┘

4.1.3 文学常识 & 古文基础

┌─────────────────────────────────────────────────┐
│  文学常识 / 古文基础                                │
├─────────────────────────────────────────────────┤
│                                                  │
│  分类选择:[文学常识 ▼] [古文基础 ▼]               │
│                                                  │
│  知识点:  《岳阳楼记》作者及背景                    │
│  内容:    [范文希,字希文,北宋政治家...]           │
│  关联课文:《岳阳楼记》八年级下册                    │
│  拍照:    [📷 拍摄课堂笔记/课本]                   │
│                                                  │
│  [🤖 AI 延伸讲解]                                 │
│  → 作者生平、写作背景、同类作品对比                 │
│                                                  │
└─────────────────────────────────────────────────┘

4.1.4 拍照输入流程

拍照/选图 → OCR识别文字 → 自动填充表单 → 人工校对 → AI分析 → 保存
                ↓
         支持:课本截图、手写笔记、试卷错题

4.2 英语模块

4.2.1 易错单词本

┌─────────────────────────────────────────────────┐
│  英语单词记录                                      │
├─────────────────────────────────────────────────┤
│                                                  │
│  单词:    [ beautiful    ]                       │
│  错误拼写:[ beutiful     ]  🎤 语音输入           │
│  音标:    [ /ˈjuːtɪfl/  ]  ← AI自动补全          │
│  词性:    [ adj.         ]                       │
│  中文释义:[ 美丽的        ]                       │
│  出错场景:[ 单元测试 ▼]                           │
│  拍照:    [📷]                                   │
│                                                  │
│  [🤖 AI 扩展]                                    │
│  → 常见拼写错误模式、同根词、派生词、                │
│    记忆方法、例句、考试频率                         │
│                                                  │
│  ── AI 示例回复 ──                                │
│  「beautiful」常见错误:                           │
│   1. 漏掉 a → beutiful ✗                         │
│   2. 记忆法:beau(美) + ti + ful(充满)            │
│   3. 同根词:beauty, beautifully, beautify        │
│   4. 考频:中考高频词 ⭐⭐⭐⭐⭐                     │
│                                                  │
└─────────────────────────────────────────────────┘

4.2.2 易错短语 & 句型

┌─────────────────────────────────────────────────┐
│  短语/句型记录                                     │
├─────────────────────────────────────────────────┤
│                                                  │
│  类型:[短语 ▼] [句型 ▼]                          │
│                                                  │
│  错误表达:  "I very like English"                 │
│  正确表达:  "I like English very much"            │
│  错误原因:  中式英语,副词位置不对                  │
│  拍照记录:  [📷]                                  │
│                                                  │
│  [🤖 AI 扩展]                                    │
│  → 同类错误句型、正确结构归纳、                     │
│    类似易错短语、考试例题                           │
│                                                  │
└─────────────────────────────────────────────────┘

4.2.3 英语错题集

┌─────────────────────────────────────────────────┐
│  英语错题                                          │
├─────────────────────────────────────────────────┤
│                                                  │
│  [📷 拍照录入整道题]                               │
│                                                  │
│  题目:    [OCR自动识别/手动输入]                   │
│  我的答案:[ B ]                                  │
│  正确答案:[ C ]                                  │
│  知识点:  [ 宾语从句语序 ]                        │
│  拍照解法:[📷]                                   │
│                                                  │
│  [🤖 AI 详细解析]                                 │
│  [🤖 生成同类练习题]                               │
│                                                  │
└─────────────────────────────────────────────────┘

4.2.4 语音识别输入

┌──────────────────────────────────────────────┐
│  语音输入流程                                   │
│                                               │
│  [🎤 按住说话] → 语音转文字 → 填入对应输入框     │
│                                               │
│  支持场景:                                     │
│  · 读出单词,自动识别拼写                        │
│  · 读出句子,自动转写                            │
│  · 听写后语音复查                                │
│                                               │
│  中英文混合识别,自动判断语种                     │
└──────────────────────────────────────────────┘

4.3 数学模块

4.3.1 错题录入与AI解题

┌─────────────────────────────────────────────────┐
│  数学错题                                          │
├─────────────────────────────────────────────────┤
│                                                  │
│  章节:[一元一次方程 ▼]  来源:[月考 ▼]            │
│                                                  │
│  [📷 拍照题目]  →  OCR识别                        │
│                                                  │
│  题目:已知 3x + 5 = 2x - 1,求x的值              │
│                                                  │
│  我的错误解法:                                    │
│  [📷 拍照/手动输入]                               │
│  3x + 5 = 2x - 1                                │
│  3x + 2x = -1 - 5  ← 移项符号错误                │
│  5x = -6                                        │
│  x = -6/5                                       │
│                                                  │
│  正确解法:                                       │
│  [📷 拍照/手动输入]                               │
│                                                  │
│  [🤖 AI 详细讲解]                                │
│                                                  │
│  ── AI 回复 ──                                   │
│  📍 错误分析:移项时符号未变号                      │
│  📍 正确步骤:                                    │
│     3x + 5 = 2x - 1                             │
│     3x - 2x = -1 - 5  ✓                         │
│     x = -6                                      │
│  📍 要点:移项必变号,这是方程的核心规则             │
│  📍 类似练习:                                    │
│     ① 5x - 3 = 3x + 7                           │
│     ② 4x + 2 = 2x - 8                           │
│                                                  │
│  [🤖 再出3道类似题]  [🤖 换个方式讲解]             │
│                                                  │
└─────────────────────────────────────────────────┘

4.4 小四门模块

4.4.1 统一错题录入

┌─────────────────────────────────────────────────┐
│  小四门错题  [历史 ▼] [地理 ▼] [生物 ▼] [道法 ▼]  │
├─────────────────────────────────────────────────┤
│                                                  │
│  [📷 拍照录入]                                    │
│                                                  │
│  题目:[OCR识别/手动输入]                          │
│  我的答案:[ ]                                    │
│  正确答案:[ ]                                    │
│  拍照答案:[📷]                                   │
│                                                  │
│  [🤖 AI 整理标准答案]                             │
│  [🤖 AI 归纳知识点]                               │
│                                                  │
│  ── AI 回复(历史示例)──                          │
│  📍 答案:B. 鸦片战争(1840-1842)                 │
│  📍 知识点:中国近代史开端                          │
│  📍 关联:《南京条约》—中国第一个不平等条约          │
│  📍 记忆:时间轴 1840→鸦片战争→近代史开端           │
│                                                  │
└─────────────────────────────────────────────────┘

4.5 通用能力模块

4.5.1 艾宾浩斯智能复习

复习间隔(艾宾浩斯遗忘曲线):
┌────────────────────────────────────────────┐
│  第1次复习:1天后                             │
│  第2次复习:2天后                             │
│  第3次复习:4天后                             │
│  第4次复习:7天后                             │
│  第5次复习:15天后                            │
│  第6次复习:30天后                            │
│  第7次复习:60天后  (可选)                    │
└────────────────────────────────────────────┘

复习页面:
┌────────────────────────────────────────────┐
│  📅 今日待复习:12条                         │
│                                            │
│  语文(4)  英语(5)  数学(2)  历史(1)          │
│                                            │
│  ┌──────────────────────────┐              │
│  │ 膝盖(qī gài) → xī gài   │              │
│  │                          │              │
│  │  记住了?                 │              │
│  │  [😰 忘了] [😐 模糊] [😊 记住]  │        │
│  └──────────────────────────┘              │
│                                            │
│  记住→进入下一复习阶段                       │
│  忘了→重置到第1阶段重新开始                   │
│  模糊→维持当前阶段                           │
└────────────────────────────────────────────┘

4.5.2 首页仪表盘

┌─────────────────────────────────────────────────┐
│  早上好,同学 👋              📅 2025.05.29       │
├─────────────────────────────────────────────────┤
│                                                  │
│  ┌──── 今日待复习 ────┐  ┌──── 待掌握 ──────┐   │
│  │     12 条          │  │     86 条         │   │
│  └────────────────────┘  └──────────────────┘   │
│                                                  │
│  ── 各科错题统计 ──                               │
│  语文 ████████░░ 45条  [进入]                     │
│  英语 ██████████ 52条  [进入]                     │
│  数学 █████░░░░░ 28条  [进入]                     │
│  历史 ██░░░░░░░░ 12条  [进入]                     │
│  地理 ███░░░░░░░ 15条  [进入]                     │
│  生物 ██░░░░░░░░ 10条  [进入]                     │
│  道法 █░░░░░░░░░  8条  [进入]                     │
│                                                  │
│  ── 本周学习曲线 ──                               │
│  [折线图:新增/复习/掌握趋势]                      │
│                                                  │
│  ── 快捷操作 ──                                  │
│  [📷 拍照录入] [🎤 语音输入] [🤖 AI问答]          │
│                                                  │
└─────────────────────────────────────────────────┘

底部导航:[首页] [录入] [复习] [搜索] [我的]

4.5.3 全局搜索

支持:
· 关键词搜索所有错题/知识点
· 按学科筛选
· 按标签筛选
· 按时间范围筛选
· 按掌握状态筛选
· 按难度/重要度筛选

4.6 后台管理系统

┌─────────────────────────────────────────────────────────────┐
│  错题宝 · 管理后台                                           │
├───────────┬─────────────────────────────────────────────────┤
│  侧边栏    │  内容区域                                        │
│           │                                                 │
│  📊 数据概览│  各科错题统计图表                                 │
│           │  学习时长统计                                     │
│  📚 语文管理│  复习完成率                                      │
│  📖 英语管理│                                                 │
│  📐 数学管理│                                                 │
│  📋 小四门  │                                                 │
│           │  表格化管理所有错题/知识点                          │
│  🏷️ 标签  │  支持增删改查、批量导入                            │
│           │  支持手动补充AI分析内容                             │
│  🤖 AI管理 │                                                 │
│           │  AI接口配置                                        │
│  👤 用户   │  AI用量统计                                       │
│           │                                                 │
│  ⚙️ 系统  │  系统设置、备份、日志                              │
└───────────┴─────────────────────────────────────────────────┘

后台管理功能清单

模块 功能
数据概览 错题总数/各科分布、学习天数、复习完成率、AI使用量、趋势图表
内容管理 各科错题CRUD、批量导入/导出、Excel导入、手动补充解析
标签管理 创建/编辑/删除标签、批量打标签
复习管理 查看复习计划、手动调整复习安排、复习统计
AI配置 API Key设置、Prompt模板管理、用量监控
数据统计 按学科/时间/知识点维度统计分析、薄弱知识点排行
系统管理 用户管理、数据备份/恢复、操作日志

五、AI 集成方案

5.1 AI 服务架构

# app/services/ai_service.py 核心设计

class AIService:
    """
    AI 服务统一入口
    支持多模型切换(通义千问/DeepSeek/其他)
    """
    
    def __init__(self):
        self.client = OpenAI(
            api_key=settings.AI_API_KEY,
            base_url=settings.AI_BASE_URL  # 兼容 OpenAI 接口的任何模型
        )
    
    # ---- 语文相关 ----
    async def analyze_pronunciation(self, word: str, wrong_pinyin: str) -> str:
        """分析读音错误,扩展同类易错字"""
        prompt = f"""你是一位经验丰富的初中语文老师。
学生将「{word}」错误读成了「{wrong_pinyin}」。
请:
1. 给出正确读音
2. 解释为什么容易读错
3. 列出5个同类型的易错读音
4. 提供记忆技巧
5. 用一个包含该字的成语或诗句加深印象"""

    async def analyze_confusing_words(self, words: list, context: str) -> str:
        """分析混淆字词,提供辨析"""

    async def explain_literature(self, topic: str) -> str:
        """文学常识/古文讲解"""

    # ---- 英语相关 ----
    async def analyze_vocabulary(self, word: str, error: str) -> str:
        """分析英语单词错误,扩展记忆"""

    async def analyze_sentence(self, wrong: str, correct: str) -> str:
        """分析句型/短语错误"""

    async def generate_similar_exercises(self, knowledge_point: str, count: int = 3) -> str:
        """根据知识点生成类似练习题"""

    # ---- 数学相关 ----
    async def solve_math_problem(self, problem: str, student_answer: str = None) -> str:
        """数学题详细讲解"""
        prompt = f"""你是一位耐心的初中数学老师。
题目:{problem}
{"学生的错误答案:" + student_answer if student_answer else ""}
请:
1. 分析题目考查的知识点
2. 给出详细的解题步骤
3. 如果学生答错了,指出错误原因
4. 总结解题关键点
5. 列出注意事项和常见陷阱"""

    # ---- 通用 ----
    async def chat(self, messages: list, subject: str = None) -> str:
        """通用对话,可关联具体题目"""

    async def analyze_photo(self, image_base64: str, subject: str) -> dict:
        """图片内容识别与分析(使用视觉模型)"""

5.2 AI 调用流程

用户操作 → 前端请求 → 后端路由 → AI Service → AI API
                                         ↓
                                    记录token用量
                                         ↓
                              结果存入 ai_conversations 表
                                         ↓
                              前端展示 + 可保存为错题笔记

5.3 Prompt 设计策略

# 系统提示词(按学科)

PROMPTS = {
    "语文": """你是一位资深的初中语文教师,善于用生动有趣的方式讲解语文知识。
要求:
- 语言亲切自然,像在跟学生聊天
- 举的例子贴近初中生生活
- 涉及古文时,提供原文+翻译+赏析
- 知识点关联中考考点
- 适当使用口诀帮助记忆""",

    "英语": """You are an experienced middle school English teacher who is bilingual.
要求:
- 用中英结合的方式讲解
- 每个单词给出音标、词性、例句
- 拼写错误要分析错误规律
- 关联中考词汇大纲
- 提供记忆技巧(词根词缀法、联想法等)""",

    "数学": """你是一位逻辑清晰的初中数学老师。
要求:
- 每道题先分析考查的知识点
- 解题步骤要详细,每一步都说明为什么
- 如果学生做错了,先表扬做对的部分,再指出错误
- 最后总结解题方法和易错点
- 适当提供同类练习题""",

    "小四门": """你是一位博学的初中综合学科老师,擅长帮助学生记忆知识点。
要求:
- 答案简明扼要,重点突出
- 帮助构建知识框架和思维导图
- 提供记忆口诀和联想记忆法
- 关联中考常见考法"""
}

5.4 推荐的 AI 模型选择

模型 优势 价格 推荐度
DeepSeek-V3 中文能力强、性价比极高 约1元/百万token ⭐⭐⭐⭐⭐
通义千问-Max 阿里生态、视觉能力强 有免费额度 ⭐⭐⭐⭐
GLM-4-Flash 免费额度大 基本免费 ⭐⭐⭐⭐
文心一言 百度生态、OCR能力强 按量计费 ⭐⭐⭐

建议:主力用 DeepSeek,备用 通义千问。预算控制在每月20-50元以内。


六、API 接口设计

6.1 接口总览

基础路径: /api/v1

认证相关:
  POST   /auth/login              # 登录
  POST   /auth/register           # 注册(后台)
  POST   /auth/refresh            # 刷新token

语文模块:
  GET    /chinese/entries         # 获取列表(支持筛选分页)
  POST   /chinese/entries         # 新增
  PUT    /chinese/entries/{id}    # 修改
  DELETE /chinese/entries/{id}    # 删除
  POST   /chinese/entries/{id}/ai-analyze  # AI分析

英语模块:
  GET    /english/entries         # 获取列表
  POST   /english/entries         # 新增
  PUT    /english/entries/{id}    # 修改
  DELETE /english/entries/{id}    # 删除
  POST   /english/entries/{id}/ai-analyze  # AI分析
  POST   /english/entries/{id}/ai-exercise # AI生成练习

数学模块:
  GET    /math/entries            # 获取列表
  POST   /math/entries            # 新增
  PUT    /math/entries/{id}       # 修改
  DELETE /math/entries/{id}       # 删除
  POST   /math/entries/{id}/ai-solve      # AI解题

小四门:
  GET    /general/entries         # 获取列表(按学科筛选)
  POST   /general/entries         # 新增
  PUT    /general/entries/{id}    # 修改
  DELETE /general/entries/{id}    # 删除
  POST   /general/entries/{id}/ai-organize # AI整理

通用功能:
  POST   /upload/image            # 上传图片
  POST   /ocr/recognize           # OCR识别
  POST   /voice/transcribe        # 语音转文字
  POST   /ai/chat                 # AI通用对话
  GET    /ai/history              # AI对话历史

复习系统:
  GET    /review/today            # 今日待复习
  POST   /review/{id}/complete    # 完成复习
  GET    /review/schedule         # 复习日历

统计分析:
  GET    /stats/overview          # 总览数据
  GET    /stats/trend             # 趋势图表
  GET    /stats/weak-points       # 薄弱知识点
  GET    /stats/subject/{id}      # 各科详细统计

搜索:
  GET    /search?q=&subject=&tag= # 全局搜索

6.2 请求/响应示例

// POST /api/v1/chinese/entries
// 请求
{
    "subject_id": 1,
    "entry_type": "pronunciation",
    "title": "膝盖读音",
    "content": "膝盖",
    "answer": "xī gài(不是qī gài)",
    "source": "课堂听写",
    "difficulty": 3,
    "importance": 4,
    "photo_urls": ["https://oss.xxx.com/img/001.jpg"],
    "tags": ["易错读音", "月字旁"]
}

// 响应
{
    "code": 200,
    "data": {
        "id": 1001,
        "title": "膝盖读音",
        "created_at": "2025-05-29T10:30:00",
        "next_review_at": "2025-05-30T08:00:00"
    }
}

七、开发计划

7.1 分阶段实施(建议 6-8 周完成 MVP)

Phase 1 — 基础框架(第1-2周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ 搭建 FastAPI 后端项目
✦ 数据库设计 + 建表
✦ 用户认证(JWT)
✦ 基础 CRUD 接口(各科错题)
✦ Flutter 项目初始化
✦ 登录页面 + 首页框架

Phase 2 — 核心录入功能(第3-4周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ 各科错题录入页面(语文/英语/数学/小四门)
✦ 图片上传 + OCR识别
✦ 语音输入集成
✦ 标签系统
✦ 后台管理基础页面

Phase 3 — AI 集成(第5-6周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ AI 服务接入(DeepSeek)
✦ 语文AI分析(读音/混淆词/文学常识)
✦ 英语AI扩展(单词/短语/句型)
✦ 数学AI解题
✦ 小四门AI整理
✦ 对话历史记录

Phase 4 — 复习 & 统计(第7周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ 艾宾浩斯复习系统
✦ 复习提醒(本地通知)
✦ 学习统计图表
✦ 全局搜索
✦ 后台管理完善

Phase 5 — 优化上线(第8周)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ UI美化 + 动画
✦ 性能优化
✦ 数据备份方案
✦ 打包部署
✦ 使用培训(教孩子用)

7.2 每日开发建议

如果你每天能投入 2-3小时,按以上节奏可以完成。如果你开发经验不多,建议:

  • 第一个2周只搭后端,用 Postman 测试接口
  • 第3-4周再开始写 App 前端
  • AI部分先用最简单的接入,后续再优化 prompt

八、部署方案

8.1 Docker Compose 一键部署

# docker-compose.yml
version: '3.8'

services:
  # 后端 API
  backend:
    build: ./backend
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=mysql+pymysql://cuoti:password@db:3306/cuoti_bao
      - REDIS_URL=redis://redis:6379/0
      - AI_API_KEY=your-api-key-here
      - AI_BASE_URL=https://api.deepseek.com
      - OSS_ENDPOINT=your-oss-endpoint
    depends_on:
      - db
      - redis
    restart: always

  # MySQL 数据库
  db:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=cuoti_bao
      - MYSQL_USER=cuoti
      - MYSQL_PASSWORD=password
    volumes:
      - mysql_data:/var/lib/mysql
      - ./deploy/init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: always

  # Redis 缓存
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    restart: always

  # Nginx 反向代理
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./deploy/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./admin/dist:/usr/share/nginx/html/admin  # 管理后台静态文件
    depends_on:
      - backend
    restart: always

volumes:
  mysql_data:

8.2 Nginx 配置

# deploy/nginx.conf
server {
    listen 80;
    server_name your-domain.com;

    # 管理后台
    location /admin {
        alias /usr/share/nginx/html/admin;
        try_files $uri $uri/ /admin/index.html;
    }

    # API 代理
    location /api/ {
        proxy_pass http://backend:8000/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # SSE 流式响应支持(AI对话用)
        proxy_buffering off;
        proxy_cache off;
        proxy_read_timeout 120s;
    }

    # 上传文件大小限制
    client_max_body_size 20M;
}

8.3 服务器要求

项目 最低配置 推荐配置
CPU 2核 2核
内存 2GB 4GB
硬盘 40GB SSD 60GB SSD
带宽 3Mbps 5Mbps
系统 Ubuntu 22.04 / CentOS 8 Ubuntu 22.04

九、成本估算

项目 费用 说明
云服务器 已有 你已购买
AI API 20-50元/月 DeepSeek 价格很低
OCR API 0-10元/月 百度有免费额度
语音识别 0-10元/月 阿里云有免费额度
域名(可选) 60元/年 .com 域名
SSL证书 免费 Let’s Encrypt
合计 约20-70元/月 家庭使用非常经济

十、后续可扩展功能

当 MVP 版本运行稳定后,可以逐步添加:

优先级 功能 说明
P1 错题组卷 从错题库随机抽题生成模拟试卷
P1 听写模式 App 念词语/单词,孩子听写,自动批改
P2 学习打卡 每日学习打卡、连续打卡统计、奖励机制
P2 知识图谱 可视化知识点之间的关联
P3 多设备同步 云端同步,换设备不丢数据
P3 家长推送 每日学习报告推送到微信(通过微信模板消息)
P3 课本同步 按人教版教材章节归类知识点