# FlowHearth｜客户与项目运营平台教学提示词

项目页：https://xichugeek.com/projects/flowhearth/#prompts
源码：https://github.com/xichugeek/FlowHearth/tree/v1.0.2

以下是依据 FlowHearth v1.0.2 源码与文档整理的教学示例，不是原始历史会话。逐组复制到 Codex，按自己的项目需求修改。

先把 Codex 工作目录设为自己的学习项目目录。推荐克隆 v1.0.2，从检查和运行已有源码开始；从空目录起步时，每组只完成一个小范围，再实际验证。

推荐顺序：P01 → P02 → P03 → P04 → P05 → P06 → P07。需要自行上线时，再执行 P08；公开 Demo 只供浏览，写入练习使用自己的隔离环境。

只使用虚构客户与金额。自行保管数据库凭据和密钥；经营财务用于业务运营跟踪，不代替会计、税务或法定财务系统。

## P01｜先确定项目边界与开发路线

把大需求拆成可以逐步验证的任务，先读源码，不让 AI 一次重写整套系统。

```text
我想学习用 Codex 开发客户与项目运营平台，参考 FlowHearth v1.0.2。

先检查当前工作目录：如果已经有源码，读取 README、架构、数据库和开发文档，列出当前实现与待验证内容；如果是空目录，先给出最小实现方案，暂不创建大批代码。

范围包括客户、联系人、跟进、商机、项目、设备、服务和经营财务。采用 .NET 10 / ASP.NET Core、Vue 3 / TypeScript、MySQL 的模块化单体。不要添加微服务、消息队列、Redis 或 Kubernetes。

先说明客户→商机→项目，以及项目→采购→到货→应付→付款之间的关系。经营财务不等于会计 ERP，本轮不做总账、税务、工资或实时工业控制。

把后续工作拆成每次能运行和检查的小步骤。每步列出目标、输入、修改范围、运行命令和验收条件。输出一份当前能力清单与分步计划；存在不确定事实时，指出需要查看的文件或实际测试。
```

## P02｜在隔离环境运行现有源码

核对工具版本、私有配置、迁移和本地登录，让后续练习有真实可运行的起点。

```text
请在当前学习目录运行 FlowHearth v1.0.2，先读取 README、docs/development.md、DEMO_SEED_GUIDE.md 和 DEPLOYMENT_V1.0.2.md，按实际文档操作。

核对 .NET SDK 10、Node.js 22、npm 和 MySQL 是否可用，记录真实版本。数据库只能使用绑定回环地址、非 3306 端口的全新隔离实例，库名使用 flowhearth_demo_ 前缀；先核对数据库身份，不能连接生产库或覆盖已有数据。

迁移账户与应用运行账户分开配置。连接字符串和本地管理员密码通过 user-secrets 或受控环境提供，不写入 Git、公开日志或截图。按文档执行迁移、校验和本地管理员引导；需要虚构示例时再使用显式 Demo Seed，并验证重复初始化不会修改已有记录。

分别启动 API 和 Vue 前端，真实访问登录页、工作台、客户和项目页面。验收时报告工具版本、监听地址、迁移结果、页面状态和错误；不要仅因服务启动就宣称功能完成。不能自动清库、删除卷或修改全局开发环境。
```

## P03｜验证客户、商机与项目关联

沿同一组虚构业务记录核对来源、金额、成交条件和重复转换。

```text
请检查 FlowHearth 的客户→商机→项目流程。已有完整源码时先定位当前页面、API、业务服务和对应测试，不重新生成已有模块；空目录学习时只实现这个最小闭环。

客户需要联系人和跟进记录，商机记录需求、金额和阶段，项目保留客户与来源商机。成交转项目必须检查赢单状态和乐观版本，使用事务；同一商机已经转换过时返回已有项目，避免重复创建。

只在自己的隔离数据库中使用虚构客户测试。核对客户、商机与项目的 ID、关联、金额和状态；分别检查正常转换、条件不满足、版本过期和重复转换。公开只读 Demo 只能浏览，不用于写入测试。

验收要包含真实页面操作与数据库/API 结果，说明每个失败场景是否返回明确错误、是否没有留下半条数据。发现缺陷时先列出具体复现步骤，再做最小修复和针对性回归；不要修改不相关模块。
```

## P04｜验证采购与分批到货

区分采购承诺、实际到货和付款，用数量与状态规则检查完整链路。

```text
请检查项目采购与分批到货流程，先读取 docs/finance-module.md 和当前采购、收货代码。使用虚构供应商和项目，在自己的隔离数据库练习。

采购单明细包含数量和单价，金额由服务端计算，草稿通过明确操作变为已下单。到货记录是实物事实，不代表已付款；应付、付款与到货不能混为同一件事。

用一张采购 4 套的单据，先到 3 套、剩余 1 套，再补齐最后 1 套，核对累计到货、剩余数量和派生状态。检查超量到货、重复或外来明细、过期版本是否被拒绝。

收货应在事务内锁定相关单据和明细，保留实际收货记录与审计；已收货明细的身份、单位和价格不能随意改变，订购数量不能减到已收数量以下。不添加当前版本没有的退货或库存扣减功能。

验收报告真实执行的输入、响应、累计数量、状态和审计结果。失败请求不能留下部分写入；补充必要的业务测试，保留已有历史记录。
```

## P05｜检查收付款、核销与汇总

验证金额来自真实明细，核销不能超出余额，取消记录保留审计。

```text
请检查 FlowHearth 的应收、收款、核销，以及应付、付款、核销流程，按 docs/finance-module.md 的现有规则验证。只操作自己的隔离虚构数据。

金额使用 MySQL DECIMAL 与 .NET decimal，不使用 float/double。客户、项目和供应商汇总应由有效明细聚合，不能存放可随意编辑的收款或应付总数。

检查一笔收款分配到多张应收单，以及一张应收单被多笔收款分配；供应商侧也检查对应付款与应付。核销金额必须为正，不能超过来源未分配余额或目标未结余额，往来单位和项目关系必须匹配。余额检查、核销写入与审计必须同一事务提交或回滚。

验证正常分配、超额、往来单位不一致、并发冲突和取消核销。取消后保留历史与审计，但不继续影响有效汇总；不通过直接删除记录修正余额。

验收输出真实输入、明细余额、汇总计算和失败后的数据库状态。把经营财务说明为业务跟踪，不宣称完成专业会计、税务或银行对账。
```

## P06｜验证登录、权限与安全边界

从真实请求检查 Cookie、CSRF、RBAC 和审计，不能只看按钮是否隐藏。

```text
请检查当前 FlowHearth 登录与模块权限，先定位 Cookie 认证、CSRF、RBAC、登录锁定、securityVersion 和审计实现。不要把模块权限描述为当前没有的多租户或所有者隔离。

在自己的隔离环境准备最小权限测试账号，凭据保持私有。实际检查未登录访问、登录成功/失败、缺少 CSRF 的写请求、只有查看权限的账号尝试写入，以及权限或密码变化后的旧会话。

验证服务端是否拒绝越权；不能只用前端隐藏按钮作为权限证明。检查 HTTPS 部署下 Cookie 的 Secure、HttpOnly 属性和适当的 SameSite 策略，记录安全响应头和有效审计，不输出 Cookie 内容或真实连接字符串。

公开 Demo 必须只读，禁止新增、修改、删除、上传和账号管理。对公开环境仅执行已授权的只读检查，写入测试在隔离环境完成。

逐项报告实际请求方法、状态码与预期结果。发现缺口时只修复具体边界，回归已有登录、权限与业务测试，不关闭安全功能来绕过失败。
```

## P07｜完成真实测试与界面回归

区分普通测试通过和真实 MySQL 场景执行，并检查桌面与手机的实际行为。

```text
请按当前 README 执行 FlowHearth 构建与测试，保留真实输出。先核对源码标签、提交与工作树状态，不为凑通过数量删除测试或吞掉错误。

后端依次执行 restore、format 检查、Release build 和 test；前端在 web/flowhearth-web 执行 npm ci、lint、typecheck、test:run 和 build。

真实 MySQL 集成测试必须使用专用隔离测试库，通过 FLOWHEARTH_TEST_MYSQL 配置，按文档准备迁移与测试管理员。未配置数据库时提前返回的用例，不能称为数据库验证通过；检查 TRX、实际数据库活动与业务断言，不把旧版本测试数量当成本次结果。

浏览器检查 1440px 桌面与 390px 手机：客户、项目、采购与经营财务页面、导航、搜索、详情和错误反馈。使用虚构数据，核对页面展示与真实接口统计，没有横向溢出或被遮挡的主要操作。

输出本次工具版本、测试数量、失败/跳过数、数据库场景是否执行、浏览器结果、实际截图及未解决问题。每个结论都要有对应运行证据，不能以构建成功代替功能验收。
```

## P08｜制定自己的发布、备份与恢复步骤

把本地验收结果变成可检查的发布计划，保留版本、数据和回滚边界。

```text
我要把已在本地验收的 FlowHearth 部署到自己的服务器。先读取 DEPLOYMENT_V1.0.2.md、docs/deployment.md 和当前部署模板，检查目标环境并输出具体计划；当前提示词只授权准备和检查，实际服务器写入待我确认目标与发布计划。

仓库路线使用 Nginx、systemd 与仅监听回环地址的 Kestrel；如果我选择 Docker，需要明确独立 Compose、私有数据库网络、持久化数据/密钥/附件、资源与日志上限，不能把网站的 Docker 示例冒充仓库现成方案。不要自动更换技术栈或部署方式。

固定干净源码提交，在构建机生成不可变发布包与 manifest，核对版本和 SHA256。发布前备份并验证数据库、配置、uploads 和 Data Protection 密钥；准备隔离恢复测试及明确回滚命令。数据库运行与迁移账户分开，秘密保存在私有文件，MySQL 不开放公网。

按实际数据库状态执行迁移检查和校验，不改写已发布迁移。发布后验证健康检查、HTTPS、登录、权限、主要业务只读页面和有上限的运行日志。应用版本回滚不等于数据库恢复，不能自动覆盖数据库或删除卷。

输出依次可执行的准备、部署、验收与恢复步骤，标明哪些已实际验证、哪些仍待执行；未完成真实恢复测试时不要宣称灾备完成。
```
