生成资产任务
根据用户描述、Word 文档或 Excel 文件提取关键信息,调用 write 接口写入任务表。执行时必须按固定流程进行。
固定执行流程(必须遵守)
流程 A:从用户描述处理(文本输入)
每次处理「新增/更新资产任务」时,按以下三步执行:
- •
提取关键信息
从用户描述中解析并整理出所有相关字段(见下方「可提取字段」),以结构化形式列出,便于核对。 - •
调用 write 接口
使用src/write_excel.py,将上一步得到的字段按「字段名 值」成对传入,写入任务表。
命令形式(在工程根目录执行):venv/bin/python src/write_excel.py <字段名1> <值1> <字段名2> <值2> ... - •
写入任务表
由 write 接口把数据写入asset_missions/SoFunny3D_<归属项目>_<归属版本>.xlsx,无需再额外操作。
多任务时:对每个任务分别执行「提取 → 调用 write → 写入」;同一描述里包含多条任务时,拆成多条 write 调用。
流程 B:从 Word 文档处理(文档导入)
当用户提供 Word 文档(.docx)时,按以下流程执行:
- •
通过指定工具读取文档
使用src/read_doc_and_write.py读取 Word 文档,提取文档中的所有段落和列表项。 - •
理解上下文,获取关键语义
对文档中的每个任务段落,智能解析并提取以下字段(见下方「字段说明与规则」):- •任务ID:自生成(无需提取)
- •任务名称:必须提供(从文档中提取,括号和逗号后的内容不作为任务名称)
- •创建时间:自生成(无需提取)
- •资源名称:通过理解上下文得出,没有则不填
- •工程分支:通过理解上下文得出,没有则不填
- •设计文档:通过理解上下文得出,没有则不填
- •归属版本:必须提供,没有则默认 v1.0
- •归属业务:通过理解上下文得出,没有则不填
- •归属项目:必须提供,没有则默认「美术资产」
- •资源类型:通过理解上下文得出,没有则不填(潜在资源类型包括:角色、场景、动画、特效、模型等)
- •开发类型:通过理解上下文得出,没有则不填(潜在的开发类型为:内部、外包)
- •开发成本(工时):通过理解上下文得出,没有则不填
- •成本占比(版本):通过理解上下文得出,没有则不填
- •成本占比(提案):通过理解上下文得出,没有则不填
- •
调用指定工具生成任务表格
使用src/read_doc_and_write.py批量处理文档,工具会自动:- •自动识别版本分组:如果文档中包含版本标记(如 "v55 版本"、"v60 版本"),会自动按版本分组任务
- •识别文档中的多个任务(列表格式或段落格式)
- •解析每个任务的字段信息
- •对每个版本分别调用
write_excel_openpyxl写入任务表 - •自动判断是更新还是新建(基于任务名称,存在则更新,不存在则新建)
- •每个版本写入到独立的 Excel 文件:
asset_missions/SoFunny3D_<归属项目>_<版本>.xlsx
命令形式(在工程根目录执行):
cd /Users/zhulei/Projects/tech-doc venv/bin/python src/read_doc_and_write.py <文档路径> --project <归属项目> --version <归属版本>
参数说明:
- •
--project:归属项目(如果文档中没有,必须提供;如果不提供且文档中没有,默认使用「美术资产」) - •
--version:归属版本(如果文档中没有,必须提供;如果不提供且文档中没有,默认使用 v1.0)
流程 C:从 Excel 文件处理(Excel 导入)
当用户提供 Excel 文件(.xlsx)时,按以下流程执行:
- •
通过指定工具读取 Excel 文件
使用src/read_excel_and_write.py读取并处理 Excel 文件,提取表格中的所有行数据。 - •
理解上下文,获取关键语义
对 Excel 表格中的每一行数据,智能解析并提取以下字段(见下方「字段说明与规则」和「Excel 字段映射规则」):- •任务ID:自生成(无需提取)
- •任务名称:必须提供(从 Excel 的"标题"列提取)
- •创建时间:自生成(无需提取)
- •资源名称:从 Excel 中提取,如果没有明确的资源文件字段,则不填(不要从任务名称提取,任务是人类语言描述,但资源名称是一个或多个明确的工程文件,如果没有就是没有)
- •任务开始时间:从 Excel 的"开始时间"列提取(可选)
- •任务结束时间:从 Excel 的"结束时间"列提取(可选)
- •作者:从 Excel 的"执行者"列提取(可选)
- •工程分支:从 Excel 的"主单分支名"列提取
- •设计文档:从 Excel 的"主单需求文档链接"列提取
- •归属版本:必须提供(从 Excel 的"国服版本"列提取版本号,如"V3.1版本(8月29日)" → "v3.1",v3.1 和 V3.1 都可以,建议统一转换为小写)
- •归属业务:可以留空
- •归属项目:必须提供(应该从 Excel 文件名提取,例如"嘎嘎设计_V3.1.xlsx" → 归属项目="嘎嘎设计")
- •资源类型:从 Excel 的"部门"列提取(可以从语义中提取,如"美术-3D特效" → "特效","美术-2D角色" → "角色")
- •开发类型:可以留空
- •开发成本(工时):从 Excel 的"工时"列提取
- •成本占比(版本):可以留空
- •成本占比(提案):可以留空
- •归属提案:可以留空(不能从归属主单判断,但是可以留空)
- •
从 Git 提交记录提取资源名称(可选)
如果任务包含作者(执行者)、任务开始时间、任务结束时间,read_excel_and_write.py会在每个 Git 仓库中查询该作者在时间范围内的提交,并自动提取资源文件、合并到「资源名称」列,同时写入「git 仓库」「git sha」列。- •作者:从 Excel「执行者」列提取,用于 Git 作者匹配(支持中文,自动转拼音)
- •任务开始/结束时间:从 Excel「开始时间」「结束时间」列提取
- •工程仓库:由调用参数指定——见下方「命令形式」的两种用法(单仓库路径 或 TOML + 工程根目录)
多仓库支持:当使用三参数
read_excel_and_write.py <xlsx> <toml> <工程根目录>时,会从 TOML(mgit 风格)解析出多个仓库路径,对每个任务在所有仓库中按同一作者、同一时间范围查询,并将各仓库的资源文件、提交 SHA 合并后写入同一行(资源名称合并去重;git 仓库列格式为「仓库路径1: sha1, sha2; 仓库路径2: sha3」;git sha 列为所有 SHA 的扁平列表)。同一执行者在多仓库有提交时,系统会正确合并结果。功能说明:
- •内部使用
git_commit_query.py的查询逻辑,按作者 + 时间范围查询 - •时间范围按作者日期(author date)过滤,不按提交者日期(committer date)。因此 rebase、cherry-pick 或他人代提交的 commit,只要作者与作者日期落在任务周期内,也会被计入资产
- •自动提取提交中的资源文件(.prefab, .fbx, .png, .mat, .asset, .anim, .shader 等),过滤 .meta
- •支持中文作者名称(自动转拼音匹配)、多种日期格式
- •若某任务缺少作者或时间,跳过该任务的 Git 查询,仅使用 Excel 原有数据
- •
调用指定工具生成任务表格
使用src/read_excel_and_write.py批量处理,工具会自动:- •读取 Excel 文件的所有数据行,从文件名提取归属项目
- •解析每行任务的字段信息(字段映射见下方)
- •若提供仓库信息:对每个任务在所有仓库中按作者+时间范围查 Git,合并资源文件与提交 SHA,写入「资源名称」「git 仓库」「git sha」列
- •对每个任务调用
write_excel_openpyxl,按任务名称判断更新或新建 - •写入到
asset_missions/SoFunny3D_<归属项目>_<归属版本>.xlsx
命令形式(在工程根目录执行):
python src/read_excel_and_write.py <Excel文件路径> [Git仓库路径] # 或(多仓库,推荐): python src/read_excel_and_write.py <Excel文件路径> <toml文件路径> <工程根目录>
参数说明:
- •
Excel文件路径:要处理的开发任务 Excel 路径(必填) - •两参数:
Git仓库路径— 单个 Git 仓库本地路径,用于从该仓库提取资源名称 - •三参数:
toml文件路径— mgit 风格仓库描述(如docs/嘎嘎射击/release_1.55.toml);工程根目录— 主仓库路径,TOML 中的local会与该路径拼接得到各仓库绝对路径。脚本会逐仓库查询 Git 并合并资源名称与提交信息。
使用场景:
- •不使用 Git 查询:只提供 Excel 文件路径
bash
python src/read_excel_and_write.py docs/嘎嘎射击/嘎嘎射击V3.1.xlsx
- •单仓库 + Git 查询:Excel 路径 + 一个仓库路径
bash
python src/read_excel_and_write.py docs/任务列表.xlsx F:/Projects/BiuBiuBiu2-MiniGame2
- •多仓库 + Git 查询(推荐):Excel 路径 + TOML 路径 + 工程根目录
bash
python src/read_excel_and_write.py docs/嘎嘎射击/嘎嘎射击V3.1.xlsx docs/嘎嘎射击/release_1.55.toml F:/Projects/BiuBiuBiu2-MiniGame2
Excel 字段映射规则:
- •Excel "标题" → 资产任务清单 "任务名称"
- •Excel "主单分支名" → 资产任务清单 "工程分支"
- •Excel "主单需求文档链接" → 资产任务清单 "设计文档"
- •Excel "工时" → 资产任务清单 "开发成本(工时)"
- •Excel "国服版本" → 资产任务清单 "归属版本"(需提取版本号,统一转换为小写)
- •Excel "部门" → 资产任务清单 "资源类型"(从语义提取,如"美术-3D特效" → "特效")
- •Excel 文件名 → 资产任务清单 "归属项目"(从文件名提取,如"嘎嘎设计_V3.1.xlsx" → "嘎嘎设计")
- •Excel "开始时间" → 资产任务清单 "任务开始时间"(可选,用于 Git 查询)
- •Excel "结束时间" → 资产任务清单 "任务结束时间"(可选,用于 Git 查询)
- •Excel "执行者" → 资产任务清单 "作者"(可选,用于 Git 查询)
何时使用(触发条件)
只要用户提到以下任一表述,即按此技能的固定流程处理:
- •新建资产任务单
- •建资产任务单、新增资产任务单、开资产任务单
- •建资产任务、新增资产任务、创建资产任务
- •资产任务单、写任务表、写入任务表
- •提取关键信息,调用 write 接口,写入任务表
- •通过 xxx 产生资产任务、通过 xxx 生成资产任务、从 xxx 生成资产任务清单
- •处理 xxx 文件(当 xxx 是 Excel 或 Word 文档时)
其他相关表述(例如:描述某版本要新增任务、某项目要加资源任务、通过某个文件产生资产任务等)也视为触发,同样按「提取关键信息 → 调用 write 接口 → 写入任务表」执行。
字段说明与规则
字段列表
| 字段名 | 说明 | 必填 | 默认值 | 提取方式 |
|---|---|---|---|---|
| 任务ID | 任务唯一标识 | ✅ | 自生成 | 无需提取,由工具自动生成 |
| 任务名称 | 任务名称 | ✅ | - | 必须从文档/描述中提取 |
| 创建时间 | 创建时间戳 | ✅ | 自生成 | 无需提取,由工具自动生成 |
| 资源名称 | 资源文件名,如 xxx.prefab | 选填 | - | 通过理解上下文得出,没有则不填<br>重要:不要从任务名称提取,任务是人类语言描述,但资源名称是一个或多个明确的工程文件,如果没有就是没有<br>可以从 Git 提交记录提取:如果任务包含作者、任务开始时间、任务结束时间等信息,可以使用 git_commit_query.py 查询提交记录并提取资源文件列表 |
| 任务开始时间 | 任务开始日期 | 选填 | - | 从 Excel 的"开始时间"列提取,用于 Git 查询的时间范围 |
| 任务结束时间 | 任务结束日期 | 选填 | - | 从 Excel 的"结束时间"列提取,用于 Git 查询的时间范围 |
| 作者 | 任务执行人/提交人 | 选填 | - | 从 Excel 的"执行者"列提取,用于 Git 查询的作者匹配(支持中文,自动转拼音) |
| 工程分支 | Git 分支名,如 feature-d33 | 选填 | - | 通过理解上下文得出,没有则不填 |
| 设计文档 | 文档链接或路径 | 选填 | - | 通过理解上下文得出,没有则不填 |
| 归属版本 | 版本号,如 v97、v7.5 | ✅ | v1.0 | 必须提供,没有则默认 v1.0<br>注意:v3.1 和 V3.1 都可以,建议统一转换为小写 |
| 归属业务 | 业务线/业务名称 | 选填 | - | 通过理解上下文得出,没有则不填(可以留空) |
| 归属项目 | 项目名称,用于文件命名 | ✅ | 美术资产 | 必须提供,没有则默认「美术资产」<br>从 Excel 文件读取时:应该从文件名提取(如"嘎嘎设计_V3.1.xlsx" → "嘎嘎设计") |
| 资源类型 | 资源类型 | 选填 | - | 通过理解上下文得出,没有则不填<br>潜在类型:角色、场景、动画、特效、模型等<br>从 Excel 文件读取时:可以从语义中提取(如"美术-3D特效" → "特效","美术-2D角色" → "角色") |
| 开发类型 | 开发方式 | 选填 | - | 通过理解上下文得出,没有则不填<br>潜在类型:内部、外包(可以留空) |
| 开发成本(工时) | 人天数 | 选填 | - | 通过理解上下文得出,没有则不填 |
| 成本占比(版本) | 版本内占比 | 选填 | - | 通过理解上下文得出,没有则不填(可以留空) |
| 成本占比(提案) | 提案内占比 | 选填 | - | 通过理解上下文得出,没有则不填(可以留空) |
| 归属提案 | 提案编号,如 2026.03.01.v2 | 选填 | - | 通过理解上下文得出,没有则不填<br>注意:不能从归属主单判断,但是可以留空 |
字段提取规则
- •
任务名称提取:
- •括号内的内容不作为任务名称的一部分,应作为字段信息解析
- •逗号后的内容不作为任务名称的一部分,应作为字段信息解析
- •例如:「美国队长红皮(开发类型属于外包)」→ 任务名称:「美国队长红皮」,开发类型:「外包」
- •
上下文理解:
- •识别自然语言描述中的字段关键词(如「开发类型属于」「分支在」「资源名称是」等)
- •提取对应的值
- •如果无法提取或值为「不知道」「未知」等,则不填
- •
默认值规则:
- •归属版本:如果文档中没有且命令行未指定,默认使用 v1.0
- •归属项目:如果文档中没有且命令行未指定,默认使用「美术资产」
提取后若用户要求「先确认再写入」,则先列出上述字段的取值,待确认后再执行「调用 write 接口」。
调用 write 接口的方式
脚本:src/write_excel.py(代码在 src/ 下)
推荐命令形式(在工程根目录执行):
cd /Users/zhulei/Projects/tech-doc venv/bin/python src/write_excel.py 任务名称 <任务名称> 归属项目 <归属项目> 归属版本 <归属版本> [其他字段名 值 ...]
规则:
- •参数为成对的「字段名 值」,字段名必须与 Excel 表头一致(如「任务名称」「归属项目」「归属版本」「资源名称」「资源类型」「工程分支」等)。
- •必填:
任务名称、归属项目、归属版本。 - •任务ID、创建时间由脚本自动生成,不要传入。
- •每条任务单独调用一次;多条任务则多次调用。
示例(固定流程:提取 → 调用 write → 写入任务表)
示例 1:单任务
用户输入:
「嘎嘎射击 v97 版本要新增一个任务,漂亮妞儿制作,预计会有一个 pretty_girl.prefab 的资源,类型是角色」
Step 1 提取关键信息:
- •任务名称:漂亮妞儿制作
- •归属项目:嘎嘎射击
- •归属版本:v97
- •资源名称:pretty_girl.prefab
- •资源类型:角色
Step 2 & 3 调用 write 接口并写入任务表:
cd /Users/zhulei/Projects/tech-doc venv/bin/python src/write_excel.py 任务名称 漂亮妞儿制作 归属项目 嘎嘎射击 归属版本 v97 资源名称 pretty_girl.prefab 资源类型 角色
示例 2:多任务
用户输入:
「不休的乌拉拉 v7.5,产出的资源包括 小猪.prefab、散去.prefab,任务名称分别是 动物模型制作 和 特效3,都在 feature-d33 分支,归属提案和成本占比都还不知道」
Step 1 提取关键信息:
- •任务1:任务名称=动物模型制作,归属项目=不休的乌拉拉,归属版本=v7.5,资源名称=小猪.prefab,工程分支=feature-d33
- •任务2:任务名称=特效3,归属项目=不休的乌拉拉,归属版本=v7.5,资源名称=散去.prefab,工程分支=feature-d33
- •归属提案、成本占比:未知,不传或留空
Step 2 & 3 对每条任务分别调用 write:
venv/bin/python src/write_excel.py 任务名称 动物模型制作 归属项目 不休的乌拉拉 归属版本 v7.5 资源名称 小猪.prefab 工程分支 feature-d33 venv/bin/python src/write_excel.py 任务名称 特效3 归属项目 不休的乌拉拉 归属版本 v7.5 资源名称 散去.prefab 工程分支 feature-d33
示例 3:仅必填字段
用户输入:
「香肠派对 v51 新增一个任务:道奇挑战者模型制作」
Step 1 提取关键信息:
- •任务名称:道奇挑战者模型制作
- •归属项目:香肠派对
- •归属版本:v51
Step 2 & 3 调用 write:
venv/bin/python src/write_excel.py 任务名称 道奇挑战者模型制作 归属项目 香肠派对 归属版本 v51
示例 4:从 Word 文档批量导入
用户输入:
「帮我处理 docs/《云轩的厨房》v75.docx 文档,项目是云轩的厨房,版本是 v75」
Step 1 通过指定工具读取文档:
cd /Users/zhulei/Projects/tech-doc venv/bin/python src/read_doc_and_write.py "docs/《云轩的厨房》v75.docx" --project "云轩的厨房" --version v75
Step 2 理解上下文,获取关键语义:
工具会自动:
- •读取文档,识别列表项(如
* 英雄萨姆332) - •解析每个任务的字段信息
- •提取任务名称(正确处理括号和逗号)
- •提取其他字段(开发类型、工程分支、资源名称等)
Step 3 调用指定工具生成任务表格:
工具会自动调用 write_excel_openpyxl,判断每个任务是更新还是新建(基于任务名称),并批量写入到 asset_missions/SoFunny3D_云轩的厨房_v75.xlsx。
文档内容示例(单版本):
* 英雄萨姆332 * 美国队长红皮娃娃(开发类型属于外包) * 旧城开发,资源类型属于场景,开发类型属于外包,分支已经在 app-assets 上了 * 洛杉矶实验室,资源类型不知道,资源名称是 lib-03,分支在 ap2 上
处理结果:
- •任务1:英雄萨姆332(无额外字段)
- •任务2:美国队长红皮娃娃,开发类型=外包
- •任务3:旧城开发,资源类型=场景,开发类型=外包,工程分支=app-assets
- •任务4:洛杉矶实验室,工程分支=ap2,资源名称=lib-03(资源类型「不知道」被忽略)
示例 5:多版本自动分组
用户输入:
「帮我处理 docs/美丽新世界.docx 文档,项目是美丽新世界」
文档内容示例(多版本):
v55 版本 开发任务 * 小妞模型制作 * 子俊3 D 打印机,分支在 release 先上,属于内部开发资源 v60 版本 开发任务 * 德刚模型制作,属于角色类型,没有分支,成本是 10 人天 * 小鸟特效
Step 1 通过指定工具读取文档:
cd /Users/zhulei/Projects/tech-doc venv/bin/python src/read_doc_and_write.py "docs/美丽新世界.docx" --project "美丽新世界"
Step 2 & 3 理解上下文并生成任务表格:
工具会自动:
- •识别到 2 个版本组:v55、v60
- •v55 版本:2 个任务 → 写入
asset_missions/SoFunny3D_美丽新世界_v55.xlsx- •小妞模型制作
- •子俊3 D 打印机(开发类型=内部,工程分支=release)
- •v60 版本:2 个任务 → 写入
asset_missions/SoFunny3D_美丽新世界_v60.xlsx- •德刚模型制作(资源类型=角色,开发成本(工时)=10)
- •小鸟特效
示例 6:从 Excel 文件批量导入
用户输入:
「帮我处理 docs/嘎嘎设计_V3.1.xlsx 文件」
Step 1 通过指定工具读取 Excel 文件:
cd /Users/zhulei/Desktop/Projects/asset-mission-by-doc venv/bin/python src/read_excel_and_write.py "docs/嘎嘎设计_V3.1.xlsx"
Step 2 理解上下文,获取关键语义:
工具会自动:
- •从文件名提取归属项目:"嘎嘎设计_V3.1.xlsx" → 归属项目="嘎嘎设计"
- •读取 Excel 表格的所有数据行
- •对每行数据进行字段映射:
- •Excel "标题" → 任务名称
- •Excel "主单分支名" → 工程分支
- •Excel "主单需求文档链接" → 设计文档
- •Excel "工时" → 开发成本(工时)
- •Excel "国服版本" → 归属版本(提取版本号,转换为小写)
- •Excel "部门" → 资源类型(从语义提取)
Excel 数据示例:
| 标题 | 主单分支名 | 工时 | 部门 | 国服版本 |
|---|---|---|---|---|
| 脱战回血功能-资源提交-3D特效 | - | 0.3 | 美术-3D特效 | V3.1版本(8月29日) |
| 玩法模块-新英雄开发-01代号:嘎嘎鸭-2D角色 | feature/v1/new-hero | 2.0 | 美术-2D角色 | V3.1版本(8月29日) |
处理结果:
- •任务1:任务名称="脱战回血功能-资源提交-3D特效",归属项目="嘎嘎设计",归属版本="v3.1",资源类型="特效",开发成本(工时)=0.3
- •任务2:任务名称="玩法模块-新英雄开发-01代号:嘎嘎鸭-2D角色",归属项目="嘎嘎设计",归属版本="v3.1",工程分支="feature/v1/new-hero",资源类型="角色",开发成本(工时)=2.0
Step 3 从 Git 提交记录提取资源名称(可选):
如果 Excel 中包含"执行者"、"开始时间"、"结束时间"列,且用户提供了 Git 仓库路径,系统会自动从 Git 提交记录中提取资源名称。
使用 Git 查询的完整命令:
venv/bin/python src/read_excel_and_write.py "docs/任务列表.xlsx" /Users/zhulei/Desktop/Projects/unity-wx-test
系统会自动:
- •检查每个任务是否包含作者、开始时间、结束时间
- •如果满足条件,调用
git_commit_query.py查询提交记录 - •从提交记录中提取资源文件列表
- •将资源文件列表填充到"资源名称"字段
Step 4 调用指定工具生成任务表格:
工具会自动调用 write_excel_openpyxl,判断每个任务是更新还是新建(基于任务名称),并批量写入到 asset_missions/SoFunny3D_嘎嘎设计_v3.1.xlsx。
示例 7:通过项目版本产生资产任务(实际使用场景)
用户输入:
「通过 嘎嘎射击的 v3.2 产生资产任务」
Step 1 识别文件并读取:
系统会自动识别并查找对应的 Excel 文件:docs/嘎嘎射击_V3.2.xlsx
Step 2 通过指定工具读取 Excel 文件:
不使用 Git 时:
python src/read_excel_and_write.py "docs/嘎嘎射击/嘎嘎射击_V3.2.xlsx"
使用多仓库 Git 查询时(推荐,会填充资源名称、git 仓库、git sha):
python src/read_excel_and_write.py "docs/嘎嘎射击/嘎嘎射击_V3.2.xlsx" "docs/嘎嘎射击/release_1.55.toml" "F:/Projects/BiuBiuBiu2-MiniGame2"
Step 3 理解上下文并生成任务表格:
工具会自动:
- •从文件名提取归属项目:"嘎嘎射击_V3.2.xlsx" → 归属项目="嘎嘎射击"
- •从"国服版本"列提取版本号并转换为小写:V3.2 → v3.2
- •读取所有任务行
- •若提供 TOML + 工程根目录,则在各仓库中按作者+时间查 Git,合并资源名称与提交信息
- •进行字段映射和转换,批量写入到
asset_missions/SoFunny3D_嘎嘎射击_v3.2.xlsx
处理结果:
- •✅ 成功处理 37 个任务
- •输出文件:
asset_missions/SoFunny3D_嘎嘎射击_v3.2.xlsx - •包含多种资源类型:场景、角色、动作、特效、UI 等
注意事项:
- •如果 Excel 中有重复的任务名称,系统会自动更新已有任务(基于任务名称唯一性)
- •所有任务都会自动生成任务ID和创建时间
示例 8:从 Git 提交记录提取资源名称
场景:当任务包含作者、任务开始时间、任务结束时间等信息时,可以从 Git 提交记录中自动提取资源名称。
用户输入:
「处理 Excel 文件,并从 Git 提交记录中提取资源名称,仓库路径是 /Users/zhulei/Desktop/Projects/unity-wx-test」
Excel 数据示例:
| 标题 | 执行者 | 开始时间 | 结束时间 | 工程分支 | 国服版本 |
|---|---|---|---|---|---|
| 角色模型制作 | zhulei | 2025.12.01 | 2025.12.30 | feature-dev | V3.2版本 |
Step 1 通过指定工具读取 Excel 文件并提取资源名称:
cd /Users/zhulei/Desktop/Projects/asset-mission-by-doc venv/bin/python src/read_excel_and_write.py "docs/任务列表.xlsx" /Users/zhulei/Desktop/Projects/unity-wx-test
系统自动处理流程:
- •读取 Excel 文件:提取所有字段,包括作者、开始时间、结束时间
- •检查 Git 查询条件:系统检测到任务包含作者(zhulei)、开始时间(2025.12.01)、结束时间(2025.12.30)
- •调用 Git 查询:系统内部调用
git_commit_query.py的query_commits_by_author()函数- •查询仓库:
/Users/zhulei/Desktop/Projects/unity-wx-test - •作者:
zhulei - •时间范围:
2025.12.01至2025.12.30
- •查询仓库:
- •提取资源文件:从提交记录中提取资源文件列表
- •找到 91 条提交记录
- •提取到资源文件:
Assets/Arts/Dino_Re/Arts/Characters/Avatar/Dino_One.prefab、Assets/Arts/Sausages/Avatar/SausgaeMan_Char.prefab等
- •填充资源名称字段:将资源文件列表(多个文件用逗号分隔)填充到"资源名称"字段
处理结果:
- •任务名称="角色模型制作"
- •作者="zhulei"
- •任务开始时间="2025.12.01"
- •任务结束时间="2025.12.30"
- •工程分支="feature-dev"
- •资源名称="Assets/Arts/Dino_Re/Arts/Characters/Avatar/Dino_One.prefab, Assets/Arts/Sausages/Avatar/SausgaeMan_Char.prefab, ..."(从 Git 提交记录自动提取)
Git 查询功能说明:
- •支持中文作者名称:自动转换为拼音进行匹配(如"王梅林" → "wangmeilin")
- •日期格式兼容:支持
2025.12.01、2025-12-01、2025/12/01等多种格式 - •不区分大小写:作者名称匹配不区分大小写
- •按作者日期过滤:任务时间范围对应 commit 的 author date(作者日期),不是 committer date(提交者日期),避免漏掉他人代提交或合并后日期变化的提交
- •自动过滤:自动过滤
.meta文件,只显示资源文件 - •资源文件类型:支持
.prefab、.fbx、.png、.mat、.asset、.anim、.shader、.hlsl、.unity、.cs等
使用条件:
- •任务必须包含"作者"(执行者)字段
- •任务必须包含"任务开始时间"和"任务结束时间"字段
- •需要提供 Git 仓库的本地路径(用户提供或从配置中获取)
- •工程分支字段可选,但可以提供以更精确地查询特定分支的提交
行为说明
- •
文件与命名
- •输出目录:
asset_missions/ - •文件名:
SoFunny3D_<归属项目>_<归属版本>.xlsx(便于区分 SoFunny3D 项目资产清单) - •同项目+同版本写入同一文件;新项目或新版本会从模板新建文件。
- •输出目录:
- •
自动生成
- •任务ID:按该文件内现有最大 ID 自增。
- •创建时间:仅在新增行时写入,更新已有任务时不改。
- •
唯一性与更新
- •以「任务名称」为唯一标识:存在则更新该行,不存在则新增一行。
脚本与资源路径
- •Write 接口脚本:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/src/write_excel.py - •Word 文档读取脚本:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/src/read_doc_and_write.py - •Excel 文件读取脚本:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/src/read_excel_content.py(查看内容) - •Excel 文件处理脚本:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/src/read_excel_and_write.py - •Git 提交查询脚本:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/src/git_commit_query.py(从 Git 提交记录提取资源文件列表) - •模板文件:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/data_template.xlsx - •输出目录:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/asset_missions/ - •虚拟环境:
/Users/zhulei/Desktop/Projects/asset-mission-by-doc/venv/
Excel 文件格式支持
Excel 字段映射
从 Excel 文件读取时,字段映射规则如下:
| Excel 表格字段 | 资产任务清单字段 | 转换规则 |
|---|---|---|
| 标题 | 任务名称 | 直接使用 |
| 主单分支名 | 工程分支 | 直接使用 |
| 主单需求文档链接 | 设计文档 | 直接使用 |
| 工时 | 开发成本(工时) | 直接使用(单位需确认) |
| 国服版本 | 归属版本 | 提取版本号,统一转换为小写<br>例如:"V3.1版本(8月29日)" → "v3.1" |
| 部门 | 资源类型 | 从语义提取<br>例如:"美术-3D特效" → "特效"<br>"美术-2D角色" → "角色"<br>"美术-3D角色" → "角色"<br>"美术-3D动作" → "动作"<br>"美术-UI" → "UI"<br>其他部门名称也会尝试提取资源类型 |
| 文件名 | 归属项目 | 从文件名提取<br>例如:"嘎嘎设计_V3.1.xlsx" → "嘎嘎设计" |
| (由 Git 填充) | 资源名称 | 当提供仓库参数且任务有作者、开始/结束时间时,从各仓库 Git 提交中提取资源文件列表并合并 |
| (由 Git 填充) | git 仓库 | 格式:仓库路径1: sha1, sha2; 仓库路径2: sha3,便于在对应仓库执行 git show <sha> |
| (由 Git 填充) | git sha | 所有相关提交 SHA 的扁平列表,逗号分隔 |
Excel 文件处理流程
- •读取 Excel 文件:使用
openpyxl读取所有工作表和数据行 - •从文件名提取归属项目:解析文件名,提取项目名称
- •字段映射和转换:按照上述映射规则转换字段
- •从 Git 提交记录提取资源名称(可选):
- •若调用时提供了仓库信息(单仓库路径 或 TOML + 工程根目录),且任务包含作者、任务开始时间、任务结束时间
- •在每个仓库中查询该作者在时间范围内的提交,提取资源文件列表并合并
- •将资源文件列表写入「资源名称」列,并按仓库写入「git 仓库」「git sha」列
- •批量写入:对每行数据调用
write_excel_openpyxl写入任务表(输出文件名为SoFunny3D_<归属项目>_<归属版本>.xlsx)
Word 文档格式支持
支持的文档格式
- •
列表格式(推荐):
code* 英雄萨姆 * 美国队长红皮(开发类型属于外包) * 场景 test03,开发类型属于外包,分支已经在 app-assets 上了
- •
段落格式:
code任务名称:角色制作 归属项目:我的项目 归属版本:v1.0 资源名称:hero.prefab 工程分支:feature-dev
- •
混合格式:文档可以包含标题、段落、列表等多种格式
字段识别模式
工具能够识别以下自然语言模式:
- •「开发类型属于 xxx」→ 开发类型:xxx
- •「属于内部开发资源」或「属于外包开发资源」→ 开发类型:内部/外包
- •「分支在 xxx 上」或「分支已经在 xxx 上了」→ 工程分支:xxx
- •「资源名称是 xxx」→ 资源名称:xxx
- •「属于 xxx 类型」(如「属于角色类型」)→ 资源类型:xxx
- •「类型属于 xxx」→ 资源类型:xxx(排除「开发类型」)
- •「资源类型是 xxx」→ 资源类型:xxx
- •「成本是 xxx 人天」→ 开发成本(工时):xxx
版本自动分组
如果文档中包含版本标记(如 "v55 版本"、"v60 版本"),工具会:
- •自动识别版本标记
- •将后续任务分组到对应版本
- •每个版本的任务写入到独立的 Excel 文件
- •如果文档中没有版本标记,所有任务使用默认版本(命令行指定或 v1.0)
出错时检查
- •是否在项目根目录执行,是否使用
venv/bin/python。 - •必填字段「任务名称」「归属项目」「归属版本」是否都传入。
- •模板文件
data_template.xlsx是否存在。 - •根据终端中
src/write_excel.py的报错信息排查。