# pic2ppt **Repository Path**: jlyourpapa/pic2ppt ## Basic Information - **Project Name**: pic2ppt - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-21 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pic2Ppt 一个面向家庭和亲子场景的照片转 PPT 故事应用。当前仓库包含两部分: - `app/`:安卓 16 客户端骨架,使用 `Kotlin + Jetpack Compose` - `backend/`:故事任务 API 骨架,使用 `FastAPI` ## 当前进度 第一轮开发已经完成以下基础骨架: - 安卓端创建页、结果卡片、历史页的静态主流程 - 本地 mock 仓库,先用假数据打通交互 - 后端 `story-jobs` 任务接口骨架 - 设计文档和 API 说明文档 第二轮开发继续补了: - 安卓端 `RemoteStoryRepository`,优先请求真实后端,失败时退回 mock - `AppViewModel` 状态管理 - 系统 `Photo Picker` 接口入口 - 后端任务状态推进模拟,便于前端轮询联调 第三轮开发继续补了: - 后端 `POST /v1/uploads` 文件上传接口 - 本地文件落盘到 `backend/data/uploads/` - 安卓端真实 multipart 上传,再用返回的 `asset_id` 创建故事任务 - 自定义 `ViewModelFactory`,让网络仓库能读取系统相册 `Uri` 第四轮开发继续补了: - 后端故事生成器抽象:规则模板和 MiniMax 两种 provider - `GET /v1/story-jobs/{job_id}/draft` 查看结构化故事草稿 - `backend/.env.example` 预留 `MINIMAX_API_KEY`、模型和基地址配置 第五轮开发继续补了: - 后端最小 `.pptx` 渲染器 - `GET /v1/story-jobs/{job_id}/download` 真实文件下载接口 - 任务完成时自动把结构化故事草稿渲染成可下载 PPT - 若任务里带有已上传照片,内容页会优先把真实图片嵌入 PPT 文件 第六轮开发继续补了: - 安卓端把后端 `.pptx` 下载到应用私有目录 - 通过 `FileProvider` 支持系统打开和分享已下载 PPT 第七轮开发继续补了: - 多风格纪念册模板系统,支持 `gentle_family`、`playful_collage`、`editorial_album` - 安卓端创建页新增风格选择,并把 `style_id` 传给后端 - 后端按风格渲染出明显不同的封面、内容页和结尾页 第八轮开发继续补了: - 安卓端风格选择升级为缩略预览卡,不再只是文字标签 ## 目录结构 ```text app/ backend/ docs/ ``` ## 安卓端 当前安卓端是手工脚手架,后续可以直接用 Android Studio 打开项目。 建议环境: - Android Studio 最新稳定版 - JDK 17 - Android SDK 36 当前机器没有安装 Java 和 Gradle,所以这一轮没有执行本地编译验证。 ## 后端 进入 `backend/` 后可按以下方式启动: ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --reload ``` 启动后可访问: - `GET /health` - `POST /v1/uploads` - `POST /v1/story-jobs` - `GET /v1/story-jobs` - `GET /v1/story-jobs/{job_id}` - `GET /v1/story-jobs/{job_id}/draft` - `GET /v1/story-jobs/{job_id}/download` 说明: - 安卓端默认请求 `http://10.0.2.2:8001`,适合 Android Emulator 访问本机后端 - 当前 `GET /v1/story-jobs/{job_id}` 每访问一次都会把任务推进一个阶段,便于前端验证轮询状态 - 若要切到 MiniMax,请在 `backend/.env.example` 的基础上设置环境变量,并将 `STORY_PROVIDER=minimax` - 渲染出的 PPT 文件会保存在 `backend/data/ppt/` ## 下一步建议 - 把安卓端 mock 仓库替换为真实网络层 - 接入系统 Photo Picker 和拖拽排序 - 后端补照片上传与任务状态流转 - 接 AI 识图、故事生成和 `.pptx` 渲染器