| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # ============================================================
- # 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<name>...) 提取变量
- extract_regex: "aiddit/decode/topic/result/(?P<name>[^/]+)/final_normalization/(?P<filename>[^/]+)"
- # 使用提取的变量构造对应的 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<var>...))
- # - 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 会自动识别并跳过,不会创建空的版本记录。
- # ============================================================
|