72 lines
2.1 KiB
Python
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})"
|