zhangtuo e9d7f8832a Initial commit: clean project structure
- Backend: FastAPI + SQLAlchemy + Celery (Python 3.11+)
- Frontend: Vue 3 + TypeScript + Pinia + Tailwind
- Admin Frontend: separate Vue 3 app for management
- Docker Compose: 9 services orchestration
- Specs: design prototypes, memory system PRD, product roadmap

Cleanup performed:
- Removed temporary debug scripts from backend root
- Removed deprecated admin_app.py (embedded UI)
- Removed duplicate docs from admin-frontend
- Updated .gitignore for Vite cache and egg-info
2026-01-20 18:20:03 +08:00

DreamWeaver

AI 驱动的儿童故事生成应用,面向 3-8 岁儿童提供个性化童话创作。

技术栈

  • 后端FastAPI、SQLAlchemy (async)、PostgreSQLOAuth (GitHub/Google)
  • AI文本生成、图像生成、语音合成可替换适配器
  • 前端Vue 3、TypeScript、Pinia、Vue Router、Vite

仓库结构

backend/
  app/               # 后端代码
  alembic/           # 数据库迁移
  pyproject.toml
  .env.example
frontend/
  src/               # 前端代码
  package.json

快速开始

后端

cd backend
python -m venv .venv
.\.venv\Scripts\activate  # Linux/Mac: source .venv/bin/activate
pip install -e .

cp .env.example .env      # 填写 SECRET_KEY、DATABASE_URL、各 API Key

# 运行数据库迁移(先配置好 DATABASE_URL
alembic upgrade head

# 启动
uvicorn app.main:app --reload --port 8000

前端

cd frontend
npm install
npm run dev

前端常用环境变量(可放 .env.development

  • VITE_API_BASE:后端地址,例如 http://localhost:8000
  • VITE_ADMIN_USER / VITE_ADMIN_PASS:管理后台 Basic Auth 账号(仅后台开启时需要)

访问

供应商路由与管理后台

  • 路由按配置顺序尝试:TEXT_PROVIDERS(默认 text_primary)、IMAGE_PROVIDERS(默认 image_primary)、TTS_PROVIDERS(默认 tts_primary)。失败会自动切换下一个。
  • 管理后台(默认关闭):ENABLE_ADMIN_CONSOLE=true 时启用,接口在 /admin/providersCRUD/admin/providers/reload。鉴权使用 Basic Auth账号密码由 ADMIN_USERNAME/ADMIN_PASSWORD 设置(请覆盖默认值)。
  • 建议后台放在受保护子域并在反代层加 Basic Auth/IP 白名单;生产环境默认关闭。
  • 前端最小管理页:/admin/providers,仅后台开启时可用,使用上面的 Basic Auth 调用。

数据库迁移Alembic

  • 运行迁移:alembic upgrade head
  • 生成新迁移:alembic revision -m "message" --autogenerate 迁移脚本位于 backend/alembic/versions/,包含 providers 表和 stories.mode 字段。

主要 API

方法 路径 说明
GET /auth/github/signin GitHub 登录
GET /auth/google/signin Google 登录
GET /auth/session 当前会话
POST /api/generate 生成/润色故事
POST /api/image/generate/{id} 生成封面图
GET /api/audio/{id} 获取 TTS 音频
GET /api/stories 获取故事列表(分页)
GET /api/stories/{id} 获取故事详情
DELETE /api/stories/{id} 删除故事
GET /admin/providers Provider 列表(需后台开启 + 管理员)

环境变量

常用项(详见 backend/.env.example

  • SECRET_KEY必填JWT 签名密钥
  • DATABASE_URL必填PostgreSQL 连接串
  • OAuthGITHUB_CLIENT_ID/SECRETGOOGLE_CLIENT_ID/SECRET
  • AI KeysTEXT_API_KEYTTS_API_BASETTS_API_KEYIMAGE_API_KEY
  • Provider 列表:TEXT_PROVIDERSIMAGE_PROVIDERSTTS_PROVIDERS
  • 管理后台:ENABLE_ADMIN_CONSOLEADMIN_USERNAMEADMIN_PASSWORD

注意

  • 生产务必使用强随机 SECRET_KEY,并关闭 ENABLE_ADMIN_CONSOLE(或放在受保护子域/内网)。
  • 路由会按配置/DB 顺序尝试供应商并失败切换,请确保各 Key 有效且配额充足。
Description
No description provided
Readme 684 KiB
Languages
Vue 37.7%
Python 37.3%
HTML 18.2%
CSS 3.6%
TypeScript 1.9%
Other 1.3%