80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
"""
|
|
ScriptsManager Metadata:
|
|
@description: Analyzes CSV data and generates statistical reports
|
|
@description_long: docs/data_analyzer.md
|
|
@description_es: Analiza datos CSV y genera reportes estadísticos
|
|
@description_it: Analizza dati CSV e genera report statistici
|
|
@description_fr: Analyse les données CSV et génère des rapports statistiques
|
|
@required_level: user
|
|
@category: analysis
|
|
@tags: csv,statistics,reports
|
|
@parameters: [
|
|
{
|
|
"name": "input_file",
|
|
"type": "file",
|
|
"description": "CSV file to analyze",
|
|
"required": true,
|
|
"accept": ".csv"
|
|
},
|
|
{
|
|
"name": "report_type",
|
|
"type": "select",
|
|
"description": "Type of report to generate",
|
|
"required": true,
|
|
"options": ["summary", "detailed", "charts"]
|
|
}
|
|
]
|
|
@execution_timeout: 300
|
|
@flask_port: 5001
|
|
"""
|
|
|
|
from flask import Flask, render_template, request, jsonify
|
|
import sys
|
|
import os
|
|
import pandas as pd
|
|
import json
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Get parameters from ScriptsManager
|
|
data_dir = sys.argv[1] if len(sys.argv) > 1 else "./data"
|
|
user_level = sys.argv[2] if len(sys.argv) > 2 else "user"
|
|
port = int(sys.argv[3]) if len(sys.argv) > 3 else 5001
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
return render_template(
|
|
"data_analyzer.html", data_dir=data_dir, user_level=user_level
|
|
)
|
|
|
|
|
|
@app.route("/analyze", methods=["POST"])
|
|
def analyze_data():
|
|
try:
|
|
input_file = request.form.get("input_file")
|
|
report_type = request.form.get("report_type")
|
|
|
|
# Simulate data analysis
|
|
result = {
|
|
"status": "success",
|
|
"message": f"Analysis completed for {input_file} with {report_type} report",
|
|
"data": {"rows": 1000, "columns": 15, "report_type": report_type},
|
|
}
|
|
|
|
# Save result to data directory
|
|
result_path = os.path.join(data_dir, "analysis_result.json")
|
|
with open(result_path, "w") as f:
|
|
json.dump(result, f, indent=2)
|
|
|
|
return jsonify(result)
|
|
except Exception as e:
|
|
return jsonify({"status": "error", "message": str(e)}), 500
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(f"Starting Data Analyzer on port {port}")
|
|
print(f"Data directory: {data_dir}")
|
|
print(f"User level: {user_level}")
|
|
app.run(host="0.0.0.0", port=port, debug=True)
|