analyze_project_tasks
Analyze tasks within a project to identify patterns, track progress, and optionally export data to CSV for further review.
Instructions
Phân tích các tasks trong dự án
Args:
project_id: ID của dự án
export_csv: Có xuất file CSV không (default: False)
Returns:
Phân tích tasks dưới dạng dictionary
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ||
| export_csv | No |
Implementation Reference
- wework_mcp_server.py:120-201 (handler)The core handler function for the 'analyze_project_tasks' MCP tool. It is decorated with @mcp.tool() for automatic registration, fetches project details and task analysis from WeWorkClient, processes data with pandas, computes task status statistics, converts to dictionary format, and optionally exports results to CSV.@mcp.tool() def analyze_project_tasks(project_id: str, export_csv: bool = False) -> Dict[str, Any]: """ Phân tích các tasks trong dự án Args: project_id: ID của dự án export_csv: Có xuất file CSV không (default: False) Returns: Phân tích tasks dưới dạng dictionary """ try: if not wework_client: return {'error': 'WeWork client not initialized'} logger.info(f"Analyzing tasks for project ID: {project_id}") # Lấy thông tin dự án project_info = wework_client.get_project_info(project_id) if not project_info: return { 'error': f'Không tìm thấy dự án với ID: {project_id}', 'success': False } # Phân tích tasks df = wework_client.get_project_analysis(project_id) if df.empty: return { 'success': True, 'project_name': project_info['name'], 'project_id': project_id, 'tasks': [], 'summary': { 'total_tasks': 0, 'completed_tasks': 0, 'in_progress_tasks': 0, 'failed_tasks': 0 } } # Tính thống kê status_counts = df['Trạng thái'].value_counts().to_dict() if 'Trạng thái' in df.columns else {} # Chuyển DataFrame thành dictionary tasks_data = df.to_dict(orient='records') # Xuất CSV nếu được yêu cầu csv_filename = None if export_csv: csv_filename = f"{project_info['name']}_tasks_analysis.csv" try: df.to_csv(csv_filename, index=False, encoding='utf-8-sig') logger.info(f"CSV exported to: {csv_filename}") except Exception as csv_error: logger.error(f"Failed to export CSV: {csv_error}") result = { 'success': True, 'project_name': project_info['name'], 'project_id': project_id, 'tasks': tasks_data, 'total_tasks': len(df), 'summary': { 'total_tasks': len(df), 'completed_tasks': status_counts.get('Hoàn thành', 0), 'in_progress_tasks': status_counts.get('Đang thực hiện', 0), 'failed_tasks': status_counts.get('Thất bại', 0), 'status_breakdown': status_counts } } if csv_filename: result['csv_file'] = csv_filename return result except Exception as e: logger.error(f"Error in analyze_project_tasks: {e}") return {'error': str(e), 'success': False}
- wework_mcp_server.py:121-131 (schema)Input schema defined by function parameters with type hints (project_id: str, export_csv: bool = False) and output as Dict[str, Any]. Detailed in the docstring with Args and Returns sections.def analyze_project_tasks(project_id: str, export_csv: bool = False) -> Dict[str, Any]: """ Phân tích các tasks trong dự án Args: project_id: ID của dự án export_csv: Có xuất file CSV không (default: False) Returns: Phân tích tasks dưới dạng dictionary """
- wework_mcp_server.py:120-120 (registration)The @mcp.tool() decorator registers the analyze_project_tasks function as an MCP tool in the FastMCP server.@mcp.tool()
- wework_http_server.py:38-39 (registration)Import of the analyze_project_tasks tool function from the MCP server module for use in the HTTP server endpoints.from wework_mcp_server import ( search_projects, get_project_details, analyze_project_tasks,
- wework_http_server.py:133-133 (helper)Usage of the analyze_project_tasks function within the HTTP server's project analysis endpoint.result = analyze_project_tasks(project_id, export_csv)