# ============================================================ # Data Nexus - manifest.yaml 示例 # 将此文件重命名为 manifest.yaml 放到你的 Git 仓库根目录 # Data Nexus 会在每次 push 时自动读取并处理 # ============================================================ # 项目名称(必填) # 同一个 project_name 的数据会归档在同一个项目下 project_name: what-创作 # 每个 stage 代表数据流水线中的一个环节 stages: # ---------- 阶段 1:原始数据 ---------- - name: raw outputs: # 示例 A:收集目录下的所有文件(默认方式) - path: data/raw/ pattern: "*" # ---------- 阶段 2:清洗后数据 ---------- - name: cleaned outputs: # 示例 B:收集特定类型文件,并排除临时文件 - path: data/cleaned/ pattern: "*.csv" # 只收集 CSV exclude: "*.tmp" # 排除 .tmp 结尾的中间文件 # ---------- 阶段 3:多模式匹配与复杂过滤 ---------- - name: output outputs: # 示例 C:使用列表指定多个包含模式和多个排除模式 - path: results/ pattern: - "*.pdf" - "*.xlsx" exclude: - "~*" # 排除 Office 临时锁定文件 - "draft_*" # 排除草稿 # 示例 D:也可以指定单个文件 - path: final_report.docx # ---------- 阶段 4:带有元数据与 JSON 值提取的数据 ---------- - name: enhanced_data outputs: # 示例 E:指定文件为“输入”,并打上标签 - path: data/input/article.md direction: input # 指定是 input 还是 output label: 帖子输入 # 指定该数据的业务名称(标签) # 示例 F:指定文件为“输出”,并且如果是 JSON 文件,可以提取特定 key 的值 # 同时指定深度 directory_depth: 2,这样如果文件在 `data/output/foo/bar.json` # 它的 group_key 会被设置成 `data/output` 而不是默认的 `data/output/foo` - path: data/output/ pattern: "*.json" direction: output label: 灵感点 extract_json_key: "data.idea_content" # 会解析 JSON 并提取对应 key 的值保存 directory_depth: 2 # ---------- 阶段 5:动态配对输入文件(自动提取) ---------- - name: auto_paired_data outputs: # 示例 G:当产生一个结果文件时,根据正则表达式从输出路径中提取变量, # 主动去 Gogs 拉取与其配对的原始输入文件,并将它们同归到一组中。 - path: aiddit/decode/topic/result/ pattern: "*.json" direction: output label: 标准化结果 paired_input: # 正则表达式,使用命名捕获组如 (?P...) 提取变量 extract_regex: "aiddit/decode/topic/result/(?P[^/]+)/final_normalization/(?P[^/]+)" # 使用提取的变量构造对应的 input 路径 path_template: "aigc_data/{name}/{filename}" direction: input label: 原始数据 # ============================================================ # 字段说明 # ============================================================ # # project_name (必填) 项目名称,同名自动归档到同一项目 # # stages (推荐) 阶段列表,每个阶段包含: # - name (必填) 阶段名称,如 raw / cleaned / output # - outputs (必填) 输出规则列表,每条规则包含: # - path (必填) 文件路径或目录路径 # 以 / 结尾 → 视为目录,收集目录下的文件 # 不以 / 结尾 → 视为单个文件 # - pattern (可选) 文件包含规则,支持通配符或列表 # 示例: "*.csv" # 示例: ["*.csv", "*.json"] # - exclude (可选) 文件排除规则,支持通配符或列表 # 示例: "*.tmp" # 示例: ["*.log", ".DS_Store"] # - direction (可选) 该文件的流入/流出方向(如 'input', 'output' 等) # - label (可选) 该文件的业务称呼/标签(如 '帖子输入', '灵感点' 等) # - extract_json_key (可选) 针对 JSON 文件,配置要提取解析的 json key 路径(支持由于嵌套的 . 分隔,例如 'data.content')。提取的值会被记录在数据库中。 # - directory_depth (可选) 定义这组规则生成的文件关联用的父目录深度(如 1 或 2,用来将不同子目录的关联文件合并到一行展示)。 # - paired_input (可选) 动态输入映射规则,用于输出生成后主动拉取关联的输入。包含: # - extract_regex: 提取路径变量的正则表达式 (必需使用命名捕获组,如 (?P...)) # - path_template: 组装对应输入文件路径的模板 (如 "aigc_data/{var}/file.json") # - direction: 配对文件的方向 (通常为 "input") # - label: 配对文件的业务名称 # # ============================================================ # 工作流程 # ============================================================ # # 1. 开发者在仓库根目录放置 manifest.yaml # 2. 开发者 git push 代码 # 3. Gogs Webhook 触发 → Data Nexus 收到推送通知 # 4. Data Nexus 读取该 commit 的 manifest.yaml # 5. 根据 stages 配置,自动提取对应的产出文件 # 6. 文件上传到 OSS,元数据记录到数据库 # 7. 通过 Web 页面即可浏览和下载 # # 注意:如果某次 push 没有改变任何数据文件(仅改了代码), # Data Nexus 会自动识别并跳过,不会创建空的版本记录。 # ============================================================