Files
nanxunandClaude Fable 5 cd486a36ef feat: UOOC/Zhihuishu dual-platform brushing platform
- ASP.NET Core 9 Web API backend with JWT auth, EF Core MySQL
- Vue 3 + Vite + Pinia + Ant Design Vue frontend
- Multi-platform connection management (UOOC & Zhihuishu)
- Video brushing with AES-CBC encryption for Zhihuishu
- Multi-task queue with cross-platform parallel execution
- Task persistence via MySQL database
- Progress tracking with inline catalog enrichment
- Mobile-responsive UI

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-24 15:31:32 +08:00

3.6 KiB
Raw Permalink Blame History

Uooc Progress Platform

Vue 3 + ASP.NET Core 学习进度平台,现已拆分为两层身份:

  • 系统自身账号:注册、登录、角色、管理员菜单、权限控制
  • 网课平台会话:登录系统后单独绑定 uooc_auth,仅用于读取课程与进度

Features

  • 独立的系统登录页与注册页
  • 左侧后台菜单栏 + 右上角用户头像悬浮菜单
  • 普通用户与管理员分权限菜单
  • MySQL 持久化用户、邀请码、系统设置
  • JWT 系统登录态
  • 单独的网课平台 uooc_auth 绑定页
  • 课程选择、进度聚合和上游异常 mock 回退

Project Structure

  • frontend/: Vue 3 + Vite + Pinia 前端
  • backend/src/UoocProgress.Api/: ASP.NET Core Web API、JWT、EF Core MySQL、静态资源托管

Local Run

1. 准备 MySQL

创建数据库并修改连接串:

CREATE DATABASE uooc_progress_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

默认开发配置位于:

首次启动会自动建表,并按 BootstrapAdmin 创建种子管理员账号。

2. 构建前端

cd C:\Users\nanxun\Documents\uooc\frontend
npm install
npm run build

3. 启动后端

cd C:\Users\nanxun\Documents\uooc
dotnet run --project .\backend\src\UoocProgress.Api\UoocProgress.Api.csproj

打开 http://localhost:5088

4. 分离开发模式

cd C:\Users\nanxun\Documents\uooc\frontend
npm install
npm run dev

cd C:\Users\nanxun\Documents\uooc
dotnet run --project .\backend\src\UoocProgress.Api\UoocProgress.Api.csproj

Vite 会把 /api 代理到 http://localhost:5088

Default Admin

默认管理员配置来自 BootstrapAdmin

  • 用户名:admin
  • 密码:Admin123!

建议启动后立即登录并修改密码。

Backend Endpoints

公开接口:

  • GET /api/public/auth-config

系统认证:

  • POST /api/auth/register
  • POST /api/auth/login
  • GET /api/auth/me
  • POST /api/auth/change-password

平台:

  • GET /api/platforms
  • GET /api/platforms/{platformId}/schemas/login
  • GET /api/platforms/{platformId}/schemas/course-query

平台连接:

  • GET /api/platform-connections
  • POST /api/platform-connections
  • POST /api/platform-connections/{connectionId}/relogin
  • POST /api/platform-connections/{connectionId}/activate
  • DELETE /api/platform-connections/{connectionId}
  • POST /api/platform-connections/{connectionId}/courses/query
  • GET /api/platform-connections/{connectionId}/catalog?courseId=...
  • GET /api/platform-connections/{connectionId}/progress?courseId=...

浏览器挑战:

  • GET /api/platform-challenges/{challengeSessionId}

管理员接口:

  • GET /api/admin/users
  • PATCH /api/admin/users/{id}
  • GET /api/admin/invites
  • POST /api/admin/invites
  • PATCH /api/admin/invites/{id}
  • GET /api/admin/settings
  • PUT /api/admin/settings
  • GET /api/admin/platforms
  • POST /api/admin/platforms
  • GET /api/admin/platforms/{id}
  • PUT /api/admin/platforms/{id}
  • PATCH /api/admin/platforms/{id}/status
  • POST /api/admin/platforms/{id}/clone

Notes

  • 网课平台 uooc_auth 不会写入后端数据库,只保存在当前浏览器本地。
  • 不同系统账号会使用不同的本地缓存命名空间,课程关注和进度快照不会串号。
  • 如果没有真实 uooc_auth,可以在“网课平台连接”页填写 mock-session 体验演示数据。