增加了提issue的功能

Signed-off-by: Chen Xiao <abigwc@gmail.com>
This commit is contained in:
Chen Xiao
2026-05-12 08:59:02 +08:00
parent 08a05b088a
commit 45e18b4d47
6118 changed files with 512373 additions and 4 deletions
+84
View File
@@ -0,0 +1,84 @@
import json
import time
from datetime import datetime
from pathlib import Path
# Issue 数据存储在独立的 JSON 文件中
ISSUES_PATH = Path(__file__).parent / "issues.json"
def load_issues():
"""加载所有 Issue 数据"""
if ISSUES_PATH.exists():
try:
with open(ISSUES_PATH, "r", encoding="utf-8") as f:
return json.load(f)
except Exception:
return []
return []
def save_issues(issues: list):
"""保存 Issue 数据到文件"""
with open(ISSUES_PATH, "w", encoding="utf-8") as f:
json.dump(issues, f, indent=2, ensure_ascii=False)
def create_issue(user_id: int, username: str, title: str, issue_type: str, description: str, markdown_sample: str = ""):
"""创建一条新 Issue"""
issues = load_issues()
new_issue = {
"id": int(time.time() * 1000),
"user_id": user_id,
"username": username,
"title": title,
"type": issue_type,
"description": description,
"markdown_sample": markdown_sample,
"status": "open",
"created_at": datetime.now().isoformat(),
"replies": []
}
# 插入到最前面(最新的在前)
issues.insert(0, new_issue)
save_issues(issues)
return new_issue
def get_all_issues():
"""获取所有 Issue(管理员用)"""
return load_issues()
def get_user_issues(user_id: int):
"""获取某用户提交的所有 Issue"""
issues = load_issues()
return [i for i in issues if i.get("user_id") == user_id]
def get_issue_by_id(issue_id: int):
"""根据 ID 获取单条 Issue"""
for i in load_issues():
if i.get("id") == issue_id:
return i
return None
def add_reply(issue_id: int, author: str, content: str):
"""给指定 Issue 添加一条回复"""
issues = load_issues()
for i in issues:
if i.get("id") == issue_id:
reply = {
"id": int(time.time() * 1000),
"author": author,
"content": content,
"created_at": datetime.now().isoformat()
}
i["replies"].append(reply)
save_issues(issues)
return reply
return None
def update_issue_status(issue_id: int, status: str):
"""更新 Issue 的状态(open / in_progress / closed"""
issues = load_issues()
for i in issues:
if i.get("id") == issue_id:
i["status"] = status
save_issues(issues)
return i
return None