# ChatGPT 留存率分析：按注册周计算第7天回访，未满观察期的用户单独列出

本包是apizt原创教学材料。目标SaaS未登录、未运行，未发邮件、未修改云端记录。原生文件和结果为作者本地确定性参考，官方截图仅为来源示例。

1. ChatGPT 留存率分析先打开signups.csv与visits.csv：40名用户、110条访问事件。metric-contract.md固定Asia/Shanghai日界线，D0是注册日，第7天只看D7当日。截止时刻是2026-10-17 00:00，不含该时刻之后的事件。 在ChatGPT选择可用的Work文件任务，并上传这两份CSV和固定截止日。

2. 上传后先复述上海日界线与第7天留存定义。先要求复述“完整观察到D7结束才进分母”，再运行。10月10日注册者的D7是10月17日，截止时尚未观察，不能算流失。

3. 让工具把UTC时间转为上海日期，再按user_id与日期去重。打开user-day7-results.csv看34名可观察与6名未满期；同日两次访问只给同一用户一个留存标记。不能直接对110行事件数做百分比。

4. 要求按注册周的周一分组，先显示eligible与retained，再除出率。总体率必须总留存人数除以总可观察人数，不能平均两个队列百分比。本包analysis.py实际运行的结果可独立复算。

5. 要求可下载XLSX、带人数的D7热图、队列对照图和代码，并在文件预览里检查数据。本站retention-analysis.xlsx是本地原生工作簿参考；图里的34人/6人来自实际计算，没有运行ChatGPT或伪造会话。

6. 把U035与U040放进排除名单回读：它们尚未完整观察到D7。再查同日重复事件、23点注册转UTC和周一起点。运行python3 analysis.py会重算CSV；只验证文件可打开远远不够。

7. 下载自己的文件后，与expected-cohorts.csv比较人数。运行python3 verify.py在临时目录复算并检查40人闭合、110条事件、6名排除和原生XLSX完整性。保留自己会话输出与本地参考的不同身份。

## 本地验证

运行 `python3 verify.py`。验证器在临时目录复算教材，不覆盖用户输入。原生PDF结构/页数检查需要pypdf（缺少时运行 `python3 -m pip install pypdf`）；其余脚本使用Python标准库。若本题有单独程序，命令见prompts.md；不含凭据或账号。

## 官方来源

- OpenAI Docs：Use ChatGPT https://learn.chatgpt.com/docs/use-chatgpt
- OpenAI Docs：Work with files https://learn.chatgpt.com/docs/artifacts-viewer
