feat: add forum seed categories, improve page layouts and navigation

- Seed default forum categories (announcements, learning, feedback) on startup
- Update forum pages with improved category/post/reply UI
- Refine navbar, mobile nav, and home page content layout
- Improve analytics, course-content, knowledge, profile, settings, spatial pages

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 10:02:30 +08:00
parent 45e3da82e1
commit 50faf7ad4e
13 changed files with 592 additions and 389 deletions
+36
View File
@@ -56,6 +56,36 @@ def startup_knowledge_base():
except Exception as e:
print(f"启动知识库文件监控服务失败: {str(e)}")
def seed_forum_categories():
"""初始化论坛默认分类"""
from src.core.database import get_db
from src.models.forum import ForumCategory
DEFAULT_CATEGORIES = [
{"slug": "announcements", "name": "课程公告", "description": "课程通知、作业安排与重要信息"},
{"slug": "course-learning", "name": "学习讨论", "description": "交流学习心得,讨论课程内容与难点"},
{"slug": "system-feedback", "name": "使用反馈", "description": "分享系统使用经验,提出改进建议"},
]
db = next(get_db())
try:
existing_count = db.query(ForumCategory).count()
if existing_count > 0:
print(f"论坛分类已存在({existing_count} 个),跳过初始化")
return
for cat_data in DEFAULT_CATEGORIES:
category = ForumCategory(**cat_data)
db.add(category)
db.commit()
print(f"已创建 {len(DEFAULT_CATEGORIES)} 个论坛分类")
except Exception as e:
db.rollback()
print(f"初始化论坛分类失败: {e}")
finally:
db.close()
# 应用启动事件
@app.on_event("startup")
async def startup_event():
@@ -97,6 +127,12 @@ async def startup_event():
startup_knowledge_base()
except Exception as e:
print(f"启动知识库服务失败: {e}", file=sys.stderr)
# 初始化论坛分类
try:
seed_forum_categories()
except Exception as e:
print(f"初始化论坛分类失败: {e}", file=sys.stderr)
sys.stderr.flush()
print("应用启动事件完成", file=sys.stderr)