AIDeveloper-PC/gui_ai_developer/models/project.py

72 lines
2.1 KiB
Python
Raw Normal View History

2026-01-31 09:32:00 +00:00
"""
项目模型
"""
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})"