| name | ecm-setup-file-organize |
| description | 资本市场项目文件归位 Skill。基于 ecm-setup-file-classify 输出的分类标签结果,把文件物理归位(默认复制策略)到项目对应 DD 章节目录中,并生成"文件索引表.md"。触发场景:按标签归位文件、把文件搬到对应目录、按分类结果整理文件、生成文件索引表、文件整理入库、根据 classify 结果移动文件等。支持多标签文件复制到多个目录(保证下游 DD skill 都能读到)。
|
| version | 0.1.0 |
| license | MIT |
| module | ecm-setup |
| user_role | 项目组律师 |
| phase | ["启动阶段"] |
| category | ["项目管理","文件处理"] |
| depends_on | {"internal_skills":["ecm-setup-file-classify"]} |
ecm-setup-file-organize
定位与边界
本 skill 负责:
- 读取
ecm-setup-file-classify 的分类结果(或用户粘贴的等价格式)
- 按"标签→目录"映射把文件物理复制(默认)或移动到对应子目录
- 生成
文件索引表.md(按标签索引 + 按文件名索引),作为下游 DD skill 的入口
- 输出归位摘要(统计、多标签文件清单、冲突/异常列表)
本 skill 不负责:
- 读文件内容做分类(由
ecm-setup-file-classify 做)
- 对文件改名、压缩、转格式
- 在
02-99-未分类文件/ 之外的目录做归位
免责声明
本 skill 的归位操作是物理文件操作,可能产生不可逆后果(尤其是 move 策略)。默认使用安全的 copy 策略。律师须在执行前复核分类结果的准确性。完整免责声明见 DISCLAIMER.md。
资深律师执行标准
执行本 skill 时,必须同时遵循 senior-lawyer-execution-standards.md。本 skill 的任何输出不得突破四条底线:事实可追溯、法源可核验、风险可分级、建议可落地;无法核验时必须显式标注。
本 skill 的实务加固点
- 先索引后移动:执行归位前必须生成原路径索引;移动后保留原路径、目标路径、标签和处理时间。
- 冲突不覆盖:同名文件、不同版本、扫描件与可编辑件并存时必须保留全部版本并标注差异,不得覆盖。
- 多标签处理:多标签文件优先放入主目录,同时在索引表中建立交叉引用,避免复制多个副本造成版本失控。
- 缺类提示:核心 DD 目录无文件时必须输出缺失清单,提示后续向客户补充索取。
前置依赖
核心原则
1. 多标签文件 → 默认复制到多个目录,不做"优先级选择"
一份章程既属 entity 也属 charter——默认两份都复制到对应目录。原因:
- 下游 DD skill 是按目录读文件的,漏到哪个都会导致该章尽调的输入丢失
- 磁盘空间成本远低于"尽调漏看关键文件"的业务成本
2. 原始文件保留,不删除
归位是 copy 操作,源目录(通常是 02-99-未分类文件/)的原始文件保留。律师按需自行决定何时清空 02-99(建议归档到 05-底稿和附件/原始文件归档/,而不是删除)。
3. 不改文件名
保持客户原始文件名。名字里的空格、中文、特殊字符都保留——这是律师回溯客户邮件的线索。
输入
- 分类结果(必填):
file-classify 的输出,或等价格式的"文件→标签"映射
- 项目根目录(必填):例如
/Users/xxx/ECM-ABC/
- 归位策略(可选,默认
copy):
copy:多标签复制到多个目录(推荐,默认)
move:多标签只移入第一个匹配目录,原目录清空(不推荐,只在律师明确要求时使用)
symlink:多标签在主目录保留原文件,其他目录创建快捷方式(高级,跨平台不一致,仅在 Unix/macOS 使用)
处理流程
步骤 1:解析分类结果
接受以下三种输入:
- 上一轮对话里刚跑完的
file-classify 输出(直接从上下文读取)
- 用户提供的 Markdown 格式表格("按文件分类"章节那种)
- 简单文本列表(文件名 + 标签,空格或逗号分隔)
不论来源,都转成内部统一的 {相对路径 → 标签列表} 映射。
步骤 2:确认策略
如果用户未指定策略:
- 单标签文件 ≥ 80% → 默认 copy 策略,不追问
- 多标签文件 > 30% → 输出一段提示并让用户确认("本批文件中 xx% 为多标签,默认使用 copy 策略,是否继续?")
如果用户选择 move,额外确认一次("move 策略会导致原目录 02-99-未分类文件 为空,原始文件无备份,确认?")。
步骤 3:执行归位
对每个文件:
- 查表(标签→目录映射)得到目标目录列表
- 对每个目标目录:
- 确认目标目录存在(不存在则报错中止——这通常意味着 project-init 没跑过)
- 检查目标目录下是否已有同名文件(冲突处理见下一节)
- 按策略执行
cp / mv / ln -s
步骤 4:冲突处理
目标目录已有同名文件时:
| 情况 | 默认行为 | 可配置 |
|---|
| 两个文件的 MD5 完全相同 | 跳过(已在目标处) | 强制覆盖也可 |
| 两个文件大小不同或内容不同 | 询问律师:覆盖 / 跳过 / 重命名为 xxx_v2.pdf | 可批量一次性决定 |
| 目标是本 skill 前一轮执行产生的复制品 | 覆盖(假定是重跑) | |
询问律师时批量展示冲突清单,一次性决定——不要一个文件一次确认。
步骤 5:生成索引表
在项目根目录下写入 文件索引表.md(见下方"索引表格式")。
步骤 6:输出归位摘要
# 文件归位摘要
**执行时间**:{YYYY-MM-DD HH:MM}
**项目根目录**:`{绝对路径}`
**策略**:{copy / move / symlink}
## 操作统计
- 总文件数:{N}
- 单标签文件:{A}({A/N}%)
- 多标签文件:{B}({B/N}%)
- 无法归位:{C}(见下方异常)
## 多标签文件清单
| 文件名 | 标签 | 复制到 |
|-------|------|-------|
| 公司章程.pdf | entity, charter | 02-02-主体资格/, 02-10-公司治理/ |
## 冲突处理记录
| 文件名 | 冲突位置 | 处理方式 |
|-------|---------|---------|
| 营业执照.pdf | 02-02-主体资格/ | 覆盖(MD5 相同) |
## 异常
- (无法归位 / 跳过 / 需人工介入的文件清单)
## 下一步
**建议立即调用**:`ecm-dd:dd-approval`(或按 project-init 生成的 roadmap 继续)
文件索引表已生成:`{ROOT}/文件索引表.md`
索引表格式
文件索引表.md 是下游 DD skill 查找输入文件的主入口,格式严格。
# ECM 项目文件索引表
**生成时间**:{YYYY-MM-DD HH:MM}
**项目根目录**:`{绝对路径}`
**本表对应的 classify 结果日期**:{YYYY-MM-DD}
---
## 一、按标签索引
### approval(批准和授权 → 02-01-批准和授权/)
| 文件名 | 所在路径 | 其他标签 | 备注 |
|-------|---------|----------|------|
| 董事会决议 2024-01.pdf | 02-01-批准和授权/ | — | 关于本次发行的决议 |
| 2023 年第一次临时股东会决议.pdf | 02-01-批准和授权/ | shareholders | 同时进入 02-05-股东及实控人/ |
### entity(主体资格 → 02-02-主体资格/)
| 文件名 | 所在路径 | 其他标签 | 备注 |
|-------|---------|----------|------|
| 公司章程.pdf | 02-02-主体资格/ | charter | 同时进入 02-10-公司治理/ |
| 营业执照.pdf | 02-02-主体资格/ | — | |
...(其他标签类似展开,**必须列出全部 19 个标签**,即使某个标签下无文件,标注"(无文件)")
## 二、按文件名索引(A–Z)
| 文件名 | 标签 | 所在路径(首位) |
|-------|------|----------------|
| 2023 年第一次临时股东会决议.pdf | approval, shareholders | 02-01-批准和授权/ |
| 公司章程.pdf | entity, charter | 02-02-主体资格/ |
| 营业执照.pdf | entity | 02-02-主体资格/ |
| ... | ... | ... |
## 三、多标签文件清单
| 文件名 | 全部标签 | 全部目录 |
|-------|--------|---------|
| 公司章程.pdf | entity, charter | 02-02-主体资格/, 02-10-公司治理/ |
| 2023 年第一次临时股东会决议.pdf | approval, shareholders | 02-01-批准和授权/, 02-05-股东及实控人/ |
## 四、类别缺失提示
- `litigation` 下无任何文件——建议向客户补充索取"无诉讼/仲裁/处罚证明"
- `environment` 下无任何文件——如业务涉及生产,建议索取环评批复等
硬性要求
- 目标目录不存在时禁止继续执行——报错并提示律师先跑
ecm-setup-project-init
- 索引表必须生成——即使归位本身失败部分,索引表也要把成功归位的记下来
- 索引表里 19 个标签都要列出,无文件的标签标注"(无文件)",便于下游检查类别缺失
- move 策略需要额外确认——默认执行路径不会走 move
- 冲突解决用批量决策——不要一个文件一个询问
与下游 skill 的接口
- 下游 DD skill(
ecm-dd-*)读文件的入口是 {ROOT}/文件索引表.md + 对应章节目录
- 下游
ecm-dd-data-verify 读文件时也可以通过索引表定位相关文件
- 下游
ecm-draft-report-assembly 会用索引表来回溯"这个结论是基于哪份文件出的"
因此索引表的完整性和准确性是本 skill 最核心的产出——归位操作失败没关系(可以重跑),索引表写错会污染下游所有 skill。
FAQ
Q:如果律师手动移动过一些文件,怎么办?
A:本 skill 仍然按分类结果重新复制。如果目标目录已有同名文件(MD5 相同)会跳过。不会清理律师手动移动产生的额外副本。
Q:索引表能否增量更新?
A:当前版本是全量重写。如果后续有新文件补充,重新跑 file-classify + file-organize,索引表会被覆盖。将来可能加增量模式。
Q:文件内容有中文乱码怎么办?
A:这是编码问题,本 skill 不处理。提示律师先用其他工具转码,再重新跑分类。
Q:能否生成 Excel 版的索引表?
A:当前只生成 Markdown。下游 DD skill 优先读 Markdown。需要 Excel 版可在 report-assembly 阶段基于索引表生成。