feat: 初始提交 v1.2.0 - 钢琴练习方案生成系统

This commit is contained in:
hmo
2026-04-21 20:00:33 +08:00
commit fd593bddf4
44 changed files with 10936 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
# Piano Practice Plan System - Entry Point
import os
import sys
import pathlib
# 修复Windows控制台编码
if sys.platform == "win32":
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
# 修复工作目录 - 确保项目根目录正确
PROJECT_ROOT = pathlib.Path(__file__).resolve().parent
sys.path.insert(0, str(PROJECT_ROOT))
os.chdir(PROJECT_ROOT)
print(f"[INFO] Project root: {PROJECT_ROOT}")
print(f"[INFO] Working directory: {os.getcwd()}")
from app import create_app
app = create_app()
if __name__ == "__main__":
is_prod = os.environ.get("FLASK_ENV") == "production"
print("=" * 50)
print("Piano Practice Plan System")
print("=" * 50)
print("Access: http://127.0.0.1:5001")
print(f"Debug: {not is_prod}")
print("=" * 50)
if is_prod:
print("Using gunicorn")
import gunicorn.app.base
class Application(gunicorn.app.base.Application):
def init(self, parser, opts, args):
self.cfg.set('bind', '0.0.0.0:5001')
self.cfg.set('workers', 1)
self.cfg.set('worker_class', 'sync')
self.cfg.set('timeout', 60)
def load(self):
return app
Application().run()
else:
app.run(host="0.0.0.0", port=5001, debug=True, use_reloader=False)