import json import os from datetime import datetime from flask import Flask, request, jsonify, send_from_directory app = Flask(__name__) # 数据存储目录 DATA_DIR = '/home/emily/emily/test_results' os.makedirs(DATA_DIR, exist_ok=True) # 静态文件目录 STATIC_DIR = '/home/emily/emily' @app.route('/') def index(): return send_from_directory(STATIC_DIR, 'holland-test.html') @app.route('/holland-test.html') def holland_test(): return send_from_directory(STATIC_DIR, 'holland-test.html') @app.route('/admin.html') def admin(): return send_from_directory(STATIC_DIR, 'admin.html') # 保存测试结果 @app.route('/api/save-result', methods=['POST']) def save_result(): data = request.json # 生成唯一ID result_id = datetime.now().strftime('%Y%m%d_%H%M%S_%f') # 添加时间戳 data['timestamp'] = datetime.now().isoformat() data['result_id'] = result_id # 保存到文件 filename = f"{DATA_DIR}/{result_id}.json" with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) return jsonify({'success': True, 'result_id': result_id}) # 获取所有测试结果列表 @app.route('/api/results', methods=['GET']) def get_results(): results = [] for filename in sorted(os.listdir(DATA_DIR), reverse=True): if filename.endswith('.json'): filepath = os.path.join(DATA_DIR, filename) with open(filepath, 'r', encoding='utf-8') as f: data = json.load(f) # 只返回摘要信息 results.append({ 'result_id': data.get('result_id'), 'timestamp': data.get('timestamp'), 'holland_code': data.get('holland_code'), 'scores': data.get('scores'), 'ip': request.remote_addr # 记录访问IP用于区分用户 }) return jsonify(results) # 获取单个测试结果详情 @app.route('/api/result/', methods=['GET']) def get_result(result_id): filepath = os.path.join(DATA_DIR, f"{result_id}.json") if os.path.exists(filepath): with open(filepath, 'r', encoding='utf-8') as f: return jsonify(json.load(f)) return jsonify({'error': 'Not found'}), 404 # 统计数据 @app.route('/api/stats', methods=['GET']) def get_stats(): total = len([f for f in os.listdir(DATA_DIR) if f.endswith('.json')]) # 统计各霍兰德代码分布 code_counts = {} for filename in os.listdir(DATA_DIR): if filename.endswith('.json'): filepath = os.path.join(DATA_DIR, filename) with open(filepath, 'r', encoding='utf-8') as f: data = json.load(f) code = data.get('holland_code', 'Unknown') code_counts[code] = code_counts.get(code, 0) + 1 return jsonify({ 'total_tests': total, 'code_distribution': code_counts }) if __name__ == '__main__': app.run(host='127.0.0.1', port=34568, debug=False)