# 西楚记账｜Episode 006 视频配套提示词

项目页：https://xichugeek.com/projects/xichu-finance/#prompts
源码：https://github.com/xichugeek/XichuFinance

这是根据本项目开发过程整理的教学示例。逐组复制到 Codex，按自己的需求修改。
先把 Codex 工作目录设为自己的项目文件夹。已有完整源码先检查并运行；空目录则逐步创建。
先完成本地版：P01 → P02 → P06 → P07。
需要云端账本时，再加入 P03、P04 和 P05；部署步骤见项目页 Deployment Guide。
建议先使用示例账目练习，自己的签名密钥要妥善保管、备份。

## P01｜检查开发环境

先知道电脑缺什么，再开始开发。

```text
请先检查当前项目的 Android 开发环境，列出已安装、缺失和版本冲突的工具。

1. 确认当前目录是我的项目文件夹。如果已有源码，检查 Git 版本与工作区；如果是空目录，说明尚未创建 Android 工程。
2. 检查 Git、Android Studio、Gradle Wrapper、JDK、Android SDK、Build Tools、依赖下载和模拟器。
3. 西楚记账实际使用过的组合是 JDK 21、SDK/Build Tools 36.1、AGP 9.1.1、Gradle 9.3.1。先以当前工程配置为准，不自动升级。说明 compileSdk 与 minSdk 的区别。
4. 本次先检查，不安装软件、不修改系统、不写业务代码。缺少工具时，告诉我具体安装位置和下一步。

请给出实际检查结果、命令和退出码。没有运行的检查明确标为未验证。
```

## P02｜做出本地最小记账 App

先完成能保存数据的本地版，不必先买服务器。

```text
请在我的项目里完成一个 Kotlin + Jetpack Compose + Room 的最小记账 App。

如果我已克隆西楚记账源码，先检查并运行已有功能，再列出需要调整的地方；如果是空目录，就分步骤创建工程。保留已有改动。

本次功能：
- 账户和分类管理。
- 新增、编辑、删除收入与支出。
- 用 Room 保存账目，关闭 App 再打开后数据仍在。
- 显示与实际账目一致的收支和余额。金额用整数分保存，避免浮点计算误差。
- 使用明确的示例账目。先不做服务器、云登录或外部 AI。

请实际构建并运行适用测试。在我的模拟器上安装启动，检查新增、编辑、删除、统计和关闭重开。分别告诉我构建、测试、安装和业务检查的结果；失败先修复再继续。
```

## P03｜在本机运行后台

需要云端账本时，先把后台在自己的电脑上跑通。

```text
请为我的记账项目建立或检查 FastAPI + PostgreSQL + Docker 后台，先在本机运行。

先检查已有代码和 Docker Client/Server，复用当前项目配置。只使用本项目的测试容器、网络和专用数据库，不删除已有数据卷。API 先仅供本机访问，数据库不公开到公网。

请实际检查：health、数据库迁移、示例用户注册和登录、账户、分类、收入支出接口、不同用户的数据隔离以及金额计算。只使用示例账目，不连接作者的在线服务或生产数据库。

需要本地私密配置时，先告诉我文件位置和用途；凭据不要写进源码或公开输出。环境缺失时说明缺项，不把配置文件存在当作服务已经运行。

请列出实际启动命令、检查结果和失败原因。本次不部署云服务器。
```

## P04｜让安卓 App 连接自己的后台

检查登录、刷新、错误提示和缓存。

```text
请让我的 Android App 连接已经在本机运行的测试 API。先检查现有实现，再做必要修改。

1. 区分 Android 模拟器和真实手机访问电脑服务时的地址；正式 Release 保留 HTTPS 要求，Debug 按现有开发配置运行。
2. 登录和加载时显示等待状态，失败时给出可理解的提示。
3. 用示例用户创建账户和账单，刷新后确认 App 与后台数据一致。
4. 断网时可以读取已同步的缓存，云端写入明确提示需要联网。
5. 切换测试用户或服务地址时检查缓存隔离，避免显示另一个用户的数据。

只连接我的测试 API，不使用作者的账户、会话或在线账本。不要输出登录 token。

请实际构建、运行适用测试，并在我的测试设备上核对以上流程。说明每项实际结果；配置了 URL 不代表登录和业务流程都通过。
```

## P05｜一次增加一个功能

把需求说清楚，每项完成后再继续下一项。

```text
请先让我从 CSV 导入、统计分析、分类建议、账单查询中选择一个具体功能，再检查已有实现并完成这一项。不要一次改完全部功能。

根据所选功能写清楚输入、预期结果和验收方法：
- CSV：先按项目支持的标准 UTF-8 格式处理；预览不写入交易，确认后才导入，并检查重复与错误格式。银行或支付平台原始导出先转换格式。
- 统计：按指定月份核对收入、支出和分类汇总，结果要与示例账目一致。
- 分类：按用户规则、共享关键词、默认分类的顺序处理，检查命中、回退和用户隔离。
- 账单查询：按项目已有的有限中文意图查询数据库并生成回答；不把它改写成任意聊天或理财建议。当前外部 AI Provider 未启用。

只使用示例数据。请实际构建、运行适用测试，列出输入、期望与实际结果。发现问题先修复，通过后再讨论下一项功能。
```

## P06｜复现问题、修复并回归

告诉 Codex 现象和期待结果，让它用实际检查闭环。

```text
请检查我的记账工程，实际运行 Build、Lint 和适用单元测试，再验证模拟器里的主要使用流程。发现失败后，先复现，再修复，最后回归。

每个问题请记录：当前版本、前置条件、复现步骤、实际现象、我期待的结果。不要为了演示而破坏已经正常的功能。

重点检查空账户场景：是否有创建入口、创建后能否自动选中、创建或取消后金额/描述/日期/类型是否保留、有效账户和分类就绪后能否保存。

请将构建成功、测试通过、安装成功和业务检查分别报告。测试数量只统计当前版本的同一轮结果，不把不同阶段的数量相加。保留实际命令、退出码和报告位置。

只用示例账目。修复后重新走完整用户路径；没有运行的项目明确写未验证。
```

## P07｜生成自己的签名 APK

拿到可安装的正式包，并检查签名、安装和数据保留。

```text
请为我的 Android 项目生成正式签名的 Release APK，并验证安装与主要功能。

先检查适用测试和 Lint，以及 package、versionName、versionCode、正式 API 配置和 HTTPS 要求。告诉我需要准备哪些签名配置，再使用我自己的签名密钥；不要读取或复用作者的私钥。

签名文件放在仓库外，由签名工具使用，密钥和密码不要写入源码或公开输出。提醒我妥善备份：后续更新继续使用同一份签名。缺少配置时说明缺项，不用 Debug 包代替正式包。

请实际执行 Release 构建与签名，核对 APK 文件名、大小、SHA256、包名、版本、minSdk 和公开签名信息。然后在我的 Android 模拟器上安装启动，新增示例账目，关闭重开并确认数据保留；云端检查只连接我自己的测试服务。

自己签名的包不能直接覆盖作者签名的 App。模拟器通过后，我还需要在自己的手机上检查安装与运行。请分别报告构建、签名、安装和业务结果。本次只生成本地 APK，不上传 GitHub 或应用商店。
```
