70 lines
2.0 KiB
Python
Executable File
70 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Kanban Task Update Script for Sanguo Quant Workflow
|
|
Usage:
|
|
python kanban_update.py <task_id> <state> <description>
|
|
|
|
Example:
|
|
python kanban_update.py JJC-20260401-007 doing "中书省处理中"
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
from datetime import datetime
|
|
|
|
# 任务跟踪文件位置
|
|
KANBAN_FILE = os.path.join(os.path.dirname(__file__), 'task_tracker.md')
|
|
|
|
def main():
|
|
if len(sys.argv) < 4:
|
|
print("Usage: python kanban_update.py <task_id> <state> <description>")
|
|
print(" state: pending | doing | review | done | blocked")
|
|
print(" description: update description in quotes")
|
|
sys.exit(1)
|
|
|
|
task_id = sys.argv[1]
|
|
state = sys.argv[2]
|
|
description = sys.argv[3]
|
|
|
|
now = datetime.now().strftime("%Y-%m-%d %H:%M GMT+8")
|
|
|
|
# 检查文件是否存在
|
|
if not os.path.exists(KANBAN_FILE):
|
|
# 创建新文件
|
|
with open(KANBAN_FILE, 'w') as f:
|
|
f.write("# 📋 Sanguo Quant Kanban Task Tracker\n\n")
|
|
f.write("| Task ID | State | Last Update | Description |\n")
|
|
f.write("|---------|-------|-------------|-------------|\n")
|
|
|
|
# 读取现有内容
|
|
lines = []
|
|
found = False
|
|
with open(KANBAN_FILE, 'r') as f:
|
|
lines = f.readlines()
|
|
|
|
# 更新或添加任务
|
|
new_lines = []
|
|
for line in lines:
|
|
if line.startswith("|") and task_id in line:
|
|
# 更新现有任务
|
|
new_line = f"| {task_id} | **{state}** | {now} | {description} |\n"
|
|
new_lines.append(new_line)
|
|
found = True
|
|
else:
|
|
new_lines.append(line)
|
|
|
|
if not found:
|
|
# 添加新任务
|
|
if len(new_lines) >= 3:
|
|
new_lines.insert(len(new_lines), f"| {task_id} | **{state}** | {now} | {description} |\n")
|
|
|
|
# 写回文件
|
|
with open(KANBAN_FILE, 'w') as f:
|
|
f.writelines(new_lines)
|
|
|
|
print(f"✅ Kanban updated: {task_id} → {state} @ {now}")
|
|
print(f" Description: {description}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|