feat(database): 迁移用户关联字段并优化打卡系统

- 修改数据库配置将MYSQL_DB从mys_info_v3改为mys_info_test
- 新增auth_users表wechat_openid字段并建立唯一索引
- 为plan_checkins表添加计划性能索引(idx_plan_period_student)
- 将checkin_records_old表关联方式从student_id改为user_id
- 将plan_checkins表关联方式从student_id改为user_id并更新附件路径
- 移除routes/auth.py中的uuid导入使用安全token生成函数
- 重构routes/checkin.py打卡逻辑去除course_type字段并优化返回结构
- 添加打卡时间限制验证功能防止过期打卡操作
- 实现小组统计功能支持老师查看各组打卡情况
- 更新主页index.html界面适配新的打卡和计划功能
- 调整计划提交时间规则为周五至周四周期
- 添加月度和年度计划提交状态验证机制
This commit is contained in:
王宏豪
2026-09-10 14:11:58 +08:00
parent 1dd4fa3f41
commit cd04c1b5ef
19 changed files with 1457 additions and 407 deletions

View File

@@ -1,15 +1,16 @@
<view class="page">
<block wx:if="{{loading}}">
<view class="hero hero-skeleton"></view>
<view class="grid">
<view class="module module-skeleton" wx:for="{{skeletonItems}}" wx:key="*this">
<view class="sk sk-circle"></view>
<view class="sk sk-line w-70"></view>
<view class="sk sk-line w-40"></view>
</view>
<!-- 已登录:web-view 模式 -->
<block wx:if="{{isLoggedIn}}">
<web-view src="{{webviewUrl}}" wx:if="{{webviewUrl && !webviewError}}" key="{{webviewKey}}" binderror="onWebviewError"></web-view>
<view class="error-page" wx:if="{{webviewError}}">
<view class="error-icon">!</view>
<view class="error-title">页面加载失败</view>
<view class="error-desc">{{errorMsg}}</view>
<view class="error-retry" hover-class="btn-hover" bindtap="onRetry">重新加载</view>
</view>
</block>
<!-- 未登录:原生游客首页 -->
<block wx:else>
<view class="hero">
<view class="hero-chip" wx:if="{{greeting}}">{{greeting}}</view>
@@ -20,11 +21,6 @@
</view>
</view>
<view class="error-bar" wx:if="{{error}}">
<text class="error-text">{{error}}</text>
<view class="error-retry" hover-class="link-hover" bindtap="onRetry">重试</view>
</view>
<view class="grid">
<view
class="module"
@@ -40,7 +36,6 @@
</view>
</view>
<!-- 游客模式:明缘介绍 -->
<view class="intro-section" wx:if="{{introData && introData.sections}}">
<view class="intro-title">{{introData.title}}</view>
<view class="intro-card" wx:for="{{introData.sections}}" wx:key="heading">
@@ -51,7 +46,5 @@
</view>
</view>
</view>
<view class="empty" wx:if="{{modules.length === 0 && !error}}">暂无功能入口</view>
</block>
</view>