AIDeveloper-PC/gui_ai_developer/models/project.py

72 lines
2.1 KiB
Python

"""
项目模型
"""
from datetime import datetime
from typing import List, Dict, Any
from .requirement import Requirement
from .module import Module
from .document import Document
class Project:
"""项目数据模型"""
def __init__(self, name: str, description: str = "", status: str = "进行中"):
"""
初始化项目
Args:
name: 项目名称
description: 项目描述
status: 项目状态 (进行中/已完成/已暂停)
"""
self.name = name
self.description = description
self.status = status
self.created_at = datetime.now()
self.requirements: List[Requirement] = []
self.modules: List[Module] = []
self.documents: List[Document] = []
self.original_requirement = ""
self.project_type = "Java Spring Boot"
def add_requirement(self, requirement: Requirement):
"""添加需求"""
self.requirements.append(requirement)
def add_module(self, module: Module):
"""添加模块"""
self.modules.append(module)
def add_document(self, document: Document):
"""添加文档"""
self.documents.append(document)
def get_requirement_count(self) -> int:
"""获取需求数量"""
return len(self.requirements)
def get_module_count(self) -> int:
"""获取模块数量"""
return len(self.modules)
def get_document_count(self) -> int:
"""获取文档数量"""
return len(self.documents)
def to_dict(self) -> Dict[str, Any]:
"""转换为字典"""
return {
'name': self.name,
'description': self.description,
'status': self.status,
'created_at': self.created_at.strftime('%Y-%m-%d %H:%M'),
'requirements': [r.to_dict() for r in self.requirements],
'modules': [m.to_dict() for m in self.modules],
'documents': [d.to_dict() for d in self.documents],
'project_type': self.project_type
}
def __str__(self) -> str:
return f"Project: {self.name} ({self.status})"