mirror of
https://github.com/This-weiyuqing/mi-fitness-health.git
synced 2026-10-18 03:03:49 +08:00
保存 NAS 健康系统 UI7 代码与本机维护基线
This commit is contained in:
1 parent
1767b4921a
commit
8546ba23ff
80 files changed
+4984
-381
No files matched your search
@@ -0,0 +1,52 @@
|
||||
"""仅本机浏览器性能复现,固定合成30天记录,无真实账号或云端请求。"""
|
||||
import logging
|
||||
import sys
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
sys.path.insert(0, str(ROOT / 'work/mi-fitness-mcp-cn/src'))
|
||||
from flask import jsonify, request, send_file
|
||||
from mi_fitness_mcp.web import create_app
|
||||
|
||||
logging.getLogger('werkzeug').disabled = True
|
||||
app = create_app(backend_url='http://127.0.0.1:1')
|
||||
start = datetime(2026, 9, 18, tzinfo=timezone(timedelta(hours=8)))
|
||||
def samples(count, field, value):
|
||||
return [{'timestamp': (start + timedelta(seconds=i*30*86400/count)).isoformat(), field: value} for i in range(count)]
|
||||
fixtures = {
|
||||
'summary': [{'date': (start+timedelta(days=i)).date().isoformat(), 'steps': 6000+i, 'active_kcal': 500+i, 'distance_m': 4000+i} for i in range(30)],
|
||||
'heart-rate': samples(19, 'bpm', 62),
|
||||
'sleep': [{'end_at': (start+timedelta(days=i,hours=8)).isoformat(), 'duration_minutes': 450} for i in range(30)],
|
||||
'spo2': samples(2000, 'spo2_pct', 97),
|
||||
'stress': samples(3000, 'stress_score', 30),
|
||||
}
|
||||
|
||||
@app.before_request
|
||||
def local_fixture():
|
||||
if request.path == '/api/proxy_status':
|
||||
return jsonify({'backend_reachable': True, 'backend_latency_ms': 1})
|
||||
if request.path.startswith('/proxy/api/'):
|
||||
rows = fixtures.get(request.path.rsplit('/',1)[-1], [])
|
||||
sd, ed = request.args.get('start_date'), request.args.get('end_date')
|
||||
if sd and ed:
|
||||
rows = [row for row in rows if sd <= (row.get('date') or row.get('end_at') or row.get('timestamp'))[:10] <= ed]
|
||||
return jsonify({'status':'ok','count':len(rows),'data':rows})
|
||||
|
||||
@app.route('/benchmark/before.js')
|
||||
def baseline_script():
|
||||
return send_file(ROOT/'work/perf-validation/app.before.js', mimetype='application/javascript')
|
||||
|
||||
@app.route('/benchmark/before.css')
|
||||
def baseline_styles():
|
||||
return send_file(ROOT/'work/perf-validation/style.before.css', mimetype='text/css')
|
||||
|
||||
@app.after_request
|
||||
def baseline_version(response):
|
||||
if response.mimetype == 'text/html' and request.args.get('version') == 'before':
|
||||
import re
|
||||
text = re.sub(r'/static/js/app\.js\?v=[^"\s]+', '/benchmark/before.js', response.get_data(as_text=True))
|
||||
response.set_data(re.sub(r'/static/css/style\.css(?:\?v=[^"\s]+)?', '/benchmark/before.css', text))
|
||||
return response
|
||||
|
||||
app.run(host='127.0.0.1', port=18363, debug=False, use_reloader=False)
|
||||
Reference in new issue
Block a user