manifest.yaml.example 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # ============================================================
  2. # Data Nexus - manifest.yaml 示例
  3. # 将此文件重命名为 manifest.yaml 放到你的 Git 仓库根目录
  4. # Data Nexus 会在每次 push 时自动读取并处理
  5. # ============================================================
  6. # 项目名称(必填)
  7. # 同一个 project_name 的数据会归档在同一个项目下
  8. project_name: what-创作
  9. # 每个 stage 代表数据流水线中的一个环节
  10. stages:
  11. # ---------- 阶段 1:原始数据 ----------
  12. - name: raw
  13. outputs:
  14. # 示例 A:收集目录下的所有文件(默认方式)
  15. - path: data/raw/
  16. pattern: "*"
  17. # ---------- 阶段 2:清洗后数据 ----------
  18. - name: cleaned
  19. outputs:
  20. # 示例 B:收集特定类型文件,并排除临时文件
  21. - path: data/cleaned/
  22. pattern: "*.csv" # 只收集 CSV
  23. exclude: "*.tmp" # 排除 .tmp 结尾的中间文件
  24. # ---------- 阶段 3:多模式匹配与复杂过滤 ----------
  25. - name: output
  26. outputs:
  27. # 示例 C:使用列表指定多个包含模式和多个排除模式
  28. - path: results/
  29. pattern:
  30. - "*.pdf"
  31. - "*.xlsx"
  32. exclude:
  33. - "~*" # 排除 Office 临时锁定文件
  34. - "draft_*" # 排除草稿
  35. # 示例 D:也可以指定单个文件
  36. - path: final_report.docx
  37. # ---------- 阶段 4:带有元数据与 JSON 值提取的数据 ----------
  38. - name: enhanced_data
  39. outputs:
  40. # 示例 E:指定文件为“输入”,并打上标签
  41. - path: data/input/article.md
  42. direction: input # 指定是 input 还是 output
  43. label: 帖子输入 # 指定该数据的业务名称(标签)
  44. # 示例 F:指定文件为“输出”,并且如果是 JSON 文件,可以提取特定 key 的值
  45. # 同时指定深度 directory_depth: 2,这样如果文件在 `data/output/foo/bar.json`
  46. # 它的 group_key 会被设置成 `data/output` 而不是默认的 `data/output/foo`
  47. - path: data/output/
  48. pattern: "*.json"
  49. direction: output
  50. label: 灵感点
  51. extract_json_key: "data.idea_content" # 会解析 JSON 并提取对应 key 的值保存
  52. directory_depth: 2
  53. # ---------- 阶段 5:动态配对输入文件(自动提取) ----------
  54. - name: auto_paired_data
  55. outputs:
  56. # 示例 G:当产生一个结果文件时,根据正则表达式从输出路径中提取变量,
  57. # 主动去 Gogs 拉取与其配对的原始输入文件,并将它们同归到一组中。
  58. - path: aiddit/decode/topic/result/
  59. pattern: "*.json"
  60. direction: output
  61. label: 标准化结果
  62. paired_input:
  63. # 正则表达式,使用命名捕获组如 (?P<name>...) 提取变量
  64. extract_regex: "aiddit/decode/topic/result/(?P<name>[^/]+)/final_normalization/(?P<filename>[^/]+)"
  65. # 使用提取的变量构造对应的 input 路径
  66. path_template: "aigc_data/{name}/{filename}"
  67. direction: input
  68. label: 原始数据
  69. # ============================================================
  70. # 字段说明
  71. # ============================================================
  72. #
  73. # project_name (必填) 项目名称,同名自动归档到同一项目
  74. #
  75. # stages (推荐) 阶段列表,每个阶段包含:
  76. # - name (必填) 阶段名称,如 raw / cleaned / output
  77. # - outputs (必填) 输出规则列表,每条规则包含:
  78. # - path (必填) 文件路径或目录路径
  79. # 以 / 结尾 → 视为目录,收集目录下的文件
  80. # 不以 / 结尾 → 视为单个文件
  81. # - pattern (可选) 文件包含规则,支持通配符或列表
  82. # 示例: "*.csv"
  83. # 示例: ["*.csv", "*.json"]
  84. # - exclude (可选) 文件排除规则,支持通配符或列表
  85. # 示例: "*.tmp"
  86. # 示例: ["*.log", ".DS_Store"]
  87. # - direction (可选) 该文件的流入/流出方向(如 'input', 'output' 等)
  88. # - label (可选) 该文件的业务称呼/标签(如 '帖子输入', '灵感点' 等)
  89. # - extract_json_key (可选) 针对 JSON 文件,配置要提取解析的 json key 路径(支持由于嵌套的 . 分隔,例如 'data.content')。提取的值会被记录在数据库中。
  90. # - directory_depth (可选) 定义这组规则生成的文件关联用的父目录深度(如 1 或 2,用来将不同子目录的关联文件合并到一行展示)。
  91. # - paired_input (可选) 动态输入映射规则,用于输出生成后主动拉取关联的输入。包含:
  92. # - extract_regex: 提取路径变量的正则表达式 (必需使用命名捕获组,如 (?P<var>...))
  93. # - path_template: 组装对应输入文件路径的模板 (如 "aigc_data/{var}/file.json")
  94. # - direction: 配对文件的方向 (通常为 "input")
  95. # - label: 配对文件的业务名称
  96. #
  97. # ============================================================
  98. # 工作流程
  99. # ============================================================
  100. #
  101. # 1. 开发者在仓库根目录放置 manifest.yaml
  102. # 2. 开发者 git push 代码
  103. # 3. Gogs Webhook 触发 → Data Nexus 收到推送通知
  104. # 4. Data Nexus 读取该 commit 的 manifest.yaml
  105. # 5. 根据 stages 配置,自动提取对应的产出文件
  106. # 6. 文件上传到 OSS,元数据记录到数据库
  107. # 7. 通过 Web 页面即可浏览和下载
  108. #
  109. # 注意:如果某次 push 没有改变任何数据文件(仅改了代码),
  110. # Data Nexus 会自动识别并跳过,不会创建空的版本记录。
  111. # ============================================================