manifest.yaml.example 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. - path: data/output/
  46. pattern: "*.json"
  47. direction: output
  48. label: 灵感点
  49. extract_json_key: "data.idea_content" # 会解析 JSON 并提取对应 key 的值保存
  50. # ---------- 阶段 5:动态配对输入文件(自动提取) ----------
  51. - name: auto_paired_data
  52. outputs:
  53. # 示例 G:当产生一个结果文件时,根据正则表达式从输出路径中提取变量,
  54. # 主动去 Gogs 拉取与其配对的原始输入文件,并将它们同归到一组中。
  55. - path: aiddit/decode/topic/result/
  56. pattern: "*.json"
  57. direction: output
  58. label: 标准化结果
  59. paired_input:
  60. # 正则表达式,使用命名捕获组如 (?P<name>...) 提取变量
  61. extract_regex: "aiddit/decode/topic/result/(?P<name>[^/]+)/final_normalization/(?P<filename>[^/]+)"
  62. # 使用提取的变量构造对应的 input 路径
  63. path_template: "aigc_data/{name}/{filename}"
  64. direction: input
  65. label: 原始数据
  66. # ============================================================
  67. # 字段说明
  68. # ============================================================
  69. #
  70. # project_name (必填) 项目名称,同名自动归档到同一项目
  71. #
  72. # stages (推荐) 阶段列表,每个阶段包含:
  73. # - name (必填) 阶段名称,如 raw / cleaned / output
  74. # - outputs (必填) 输出规则列表,每条规则包含:
  75. # - path (必填) 文件路径或目录路径
  76. # 以 / 结尾 → 视为目录,收集目录下的文件
  77. # 不以 / 结尾 → 视为单个文件
  78. # - pattern (可选) 文件包含规则,支持通配符或列表
  79. # 示例: "*.csv"
  80. # 示例: ["*.csv", "*.json"]
  81. # - exclude (可选) 文件排除规则,支持通配符或列表
  82. # 示例: "*.tmp"
  83. # 示例: ["*.log", ".DS_Store"]
  84. # - direction (可选) 该文件的流入/流出方向(如 'input', 'output' 等)
  85. # - label (可选) 该文件的业务称呼/标签(如 '帖子输入', '灵感点' 等)
  86. # - extract_json_key (可选) 针对 JSON 文件,配置要提取解析的 json key 路径(支持由于嵌套的 . 分隔,例如 'data.content')。提取的值会被记录在数据库中。
  87. # - paired_input (可选) 动态输入映射规则,用于输出生成后主动拉取关联的输入。包含:
  88. # - extract_regex: 提取路径变量的正则表达式 (必需使用命名捕获组,如 (?P<var>...))
  89. # - path_template: 组装对应输入文件路径的模板 (如 "aigc_data/{var}/file.json")
  90. # - direction: 配对文件的方向 (通常为 "input")
  91. # - label: 配对文件的业务名称
  92. #
  93. # ============================================================
  94. # 工作流程
  95. # ============================================================
  96. #
  97. # 1. 开发者在仓库根目录放置 manifest.yaml
  98. # 2. 开发者 git push 代码
  99. # 3. Gogs Webhook 触发 → Data Nexus 收到推送通知
  100. # 4. Data Nexus 读取该 commit 的 manifest.yaml
  101. # 5. 根据 stages 配置,自动提取对应的产出文件
  102. # 6. 文件上传到 OSS,元数据记录到数据库
  103. # 7. 通过 Web 页面即可浏览和下载
  104. #
  105. # 注意:如果某次 push 没有改变任何数据文件(仅改了代码),
  106. # Data Nexus 会自动识别并跳过,不会创建空的版本记录。
  107. # ============================================================