咨询交付
本 skill 只在分析已完成并验证、用户明确要求外发或正式结果包时进入 R 正式发布;内部预览、单张表或局部报告仍按 L 处理,不创建完整交付包。
1. 交付前确认
确认以下事项;只有会改变包内容或授权的缺口才询问:
- 收件人、使用目的、合同要求和截止版本;
- 当前已验证的
results/results.yaml,或用户明确指定并确认的外部正式结果; - 主项目的总运行脚本
run_pipeline.R|py,以及最近一次成功运行的自动记录; - 是否授权分享分析数据、派生数据、模型对象或仅分享结果;
- 收件人可用的运行时、软件和文件格式;
- 需要的报告、表、图、代码与复现程度。
没有明确数据分享授权时默认 reference:包内只写输入身份、获取方式、文件哈希值或需要收件人放置的位置,不复制数据。授权 include 时只包含完成目的所需的最小数据,并记录授权依据、脱敏动作和限制。不得凭字段名擅自计算、删除或泛化个人信息。
2. 最小包结构
使用 scripts/consulting_scaffold.R:
create_delivery_pack(
"分析结果包",
language = "R",
data_policy = "reference"
)
基础结构只有:
分析结果包/
├── README.md
├── DELIVERY_CONTENTS.md
├── run_pipeline.R|py
├── code/
├── outputs/
└── run_records/
只有 data_policy="include" 且提供 data_authority 时才创建 data/。报告、表、图或模型对象在真实需要时写入 outputs/ 或按合同增加清晰子目录;不预建空目录,也不强制所有文件编号。
README.md 应让收件人无需了解项目内部流程就能明白交付目的、所需软件、输入数据如何准备、运行步骤、结果位置、核对方法和已知限制。DELIVERY_CONTENTS.md 逐项记录实际输入及其授权、运行环境、代码顺序、输出文件和用途。两份文件可以互相引用,但不能把 README 缩成一句命令,也不能重复整张文件清单。
3. 格式与编号
- 中间格式按实际用途和收件人软件选择:R 内部复现可用 RDS,Python 可用 Parquet、Feather 或项目既有对象格式,跨软件交换可用 CSV/XLSX;保留类型、标签、日期和缺失含义优先。
- 表图只有在报告、论文、演示或合同需要稳定引用时编号;内部输入、脚本、中间对象和数据不为整齐而编号。
- 报告结构和长度由问题复杂度、受众和合同决定。短结论备忘录可以很短;复杂分析才需要完整背景、方法、结果、局限和建议。
- 文件格式优先服从收件人真实软件能力。不得把某一种办公格式或固定页数视为通用质量标准。
4. 生成与复现
- 从主项目实际生成结果的分析脚本和最近一次成功运行的记录整理交付内容;不得只改外发包而不回写主项目。
- 把必要代码整理为包内明确的运行顺序,使用相对路径,不依赖交互环境。
- 根据授权复制完成复现所需的最小输入;数据不随包提供时,在
DELIVERY_CONTENTS.md写明输入文件的身份、哈希值、获取方式和放置位置。 - 生成实际需要的表、图和报告;所有数字按
results/results.yaml中每项结果的固定名称读取。 - 在
09_backup/workbench/中建立独立的交付测试副本,使用收件人现有且版本兼容的 R 或 Python 环境运行run_pipeline.R|py;此阶段不现场安装或升级依赖。 - 核对交付文件、文件可打开性、结果名称、敏感信息、完整日志,以及最近一次自动运行记录是否显示成功。
环境缺失时先按全局依赖分流询问安装;不安装时使用经核验等价实现。不存在等价实现则明确交付限制,不能声称已独立复现。
5. 成品文字
用 academic-humanizer 审校正式报告、README 和说明,并执行其成品视角与真实披露边界;合同交付采用分析责任方视角。
6. 发布判定
正式外发前确认:
- 主项目最近一次自动运行记录显示成功,包内总运行脚本也已在隔离副本中重新运行成功;
- 交付内容清单与实际输入、代码、环境、输出和授权一致;
- 未授权数据、直接标识符、凭证和内部探索结果未进入包;
- 报告、表图与
results/results.yaml或已经确认的外部结果一致; - 当前交付包使用含义明确且长期不变的名称,并且只有一组现行文件;旧包可以从归档中恢复;
epi-project-audit的科学、合规、隐私、追溯和复现 ERROR 为零,限制已明确接受。
结构偏好、文件是否编号或报告长短本身不阻止发布。