Commit Graph

20 Commits

Author SHA1 Message Date
lesingle
bbddb57104 fix(backend): 修复管理员创建系统课程时 isSystem 未持久化的 bug
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 15:05:53 +08:00
lesingle
e700029ee7 fix(backend): 修复课程套餐路径和新增状态变更接口
- AdminCoursePackageController: 路径从 /admin/course-packages 改为 /admin/packages
- AdminCoursePackageController: 分页参数 pageNum → page,新增 submit/review/publish/offline
- CoursePackageService: 新增 submit/review/publish/offline 方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 15:04:43 +08:00
lesingle
01897a7ecc Merge branch 'main' of http://8.148.151.56:3000/tonytech/kindergarten_java 2026-03-03 14:50:42 +08:00
lesingle
18170609d9 fix: 修复前端API路径和后端课程管理接口
- 前端 course.ts: /courses → /admin/courses (匹配Java后端路径)
- 路由守卫: 修复token存在但role缺失时的无限循环404问题
- AdminCourseController: 新增审核相关接口 (submit/withdraw/approve/reject/unpublish/republish/direct-publish)
- AdminCourseController: 课程列表支持status过滤,显示所有状态课程
- CourseService/Impl: 新增提交审核、审批、拒绝等方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 14:49:16 +08:00
71d8819361 fix(frontend): 修复登录响应字段映射,适配 Java 后端平铺结构 2026-03-03 14:24:59 +08:00
30677a7c02 fix(auth): 登录接口同时接受 account 和 username 字段 2026-03-03 14:21:21 +08:00
995e18d399 fix(frontend): 修复本地开发代理指向 Java 后端端口 8080 2026-03-03 14:19:25 +08:00
e9dff31242 feat(backend): 补全所有未提交的 Java 源码文件
新增 44 个此前仅在本地存在、从未提交到 git 的源码文件:
- Controllers: FileUpload, AdminStats, AdminTheme, AdminCoursePackage,
  AdminCourseLesson, AdminResource, AdminOperationLog,
  School(Course/Schedule/Settings/Stats/Export/OperationLog/CoursePackage),
  Teacher(Dashboard/Schedule/SchoolCourse/CourseLesson)
- Entities: CourseLesson, CoursePackage, SchoolCourse, Theme
- Mappers: CourseLesson, CoursePackage, SchoolCourse, Theme
- Services: All 13 service classes
- Config: WebMvcConfig

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 13:51:33 +08:00
3f3ed084f7 docs: 新增开发协作指南(前后端/测试/原型工程师) 2026-03-03 11:43:17 +08:00
076d832a42 chore(api): 将 OpenAPI 规范文件改为 YAML 格式
- api-spec.json → api-spec.yml(内容相同,YAML 更易读)
- api:fetch 脚本自动转换 JSON→YAML 后删除 json 临时文件

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 11:11:53 +08:00
2a394a4882 chore(api): 接入 orval 自动生成 API 客户端
- 新增 orval.config.ts:从 OpenAPI spec 自动生成 TypeScript 代码
- 新增 src/api/request.ts:orval mutator,复用现有 axios 实例
- 新增 src/api/generated/:自动生成的 API 函数和类型定义(106个接口,155个类型)
- 新增 api-spec.json:后端 OpenAPI 规范快照
- package.json 新增脚本:api:fetch / api:gen / api:update

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 11:03:56 +08:00
8b7615bcf1 fix(auth): 修复学校账号登录角色返回错误问题
loginWithRole()中SCHOOL/TEACHER分支改为返回请求中指定的role(school或teacher),
而非硬编码"teacher"。同步修复getCurrentUserInfo()和changePassword()支持"school"角色。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 15:41:58 +08:00
859c71db09 fix(backend): 修复租户创建、接口字段和500错误
Bug 1: 创建租户时同步创建学校登录账号(teachers表)
- TenantCreateRequest支持loginAccount/contactPerson/studentQuota/teacherQuota字段
- TenantServiceImpl.createTenant()后自动插入Teacher记录,包含BCrypt加密密码
- 返回tempPassword字段供前端展示

Bug 2: 修复多个接口500错误
- 新增POST /auth/logout端点(JWT无状态,直接返回成功)
- 新增GET /admin/stats/trend端点(最近6个月统计趋势)
- 完善getStats()返回activeTenantCount/publishedCourseCount/monthlyLessons字段
- 新增AdminSettingsController(GET/PUT /admin/settings)
- 新增租户操作端点:/status、/reset-password、/quota

Bug 3: 统一前后端接口字段名
- Tenant实体用@JsonProperty重命名:code→loginAccount, contactName→contactPerson
  maxStudents→studentQuota, maxTeachers→teacherQuota, expireAt→expireDate
- status字段用UpperCaseSerializer返回大写值(前端期望ACTIVE/SUSPENDED)
- TenantCreateRequest/UpdateRequest用@JsonAlias接受前端字段名
- PageResult用@JsonProperty重命名:list→items, pageNum→page, pages→totalPages
- 所有分页控制器将pageNum参数改为page(与前端对齐)
- 新增TenantService.resetSchoolAccountPassword()方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 15:20:37 +08:00
5e0c87768c chore(frontend): 更新依赖锁文件和组件类型声明
- package-lock.json:本地 npm install 后依赖树更新
- components.d.ts:unplugin-vue-components 自动生成的
  组件类型声明同步更新
2026-02-28 19:33:01 +08:00
0b3998489d feat(deploy): 添加 docker-compose 一键部署配置
定义 backend 和 frontend 两个服务:
- backend 监听 3001 端口,设置 Prisma OpenSSL 3.x 环境变量,
  JWT_SECRET 通过宿主机环境变量注入避免硬编码
- frontend 监听 8080 端口,depends_on backend 保证启动顺序

使用方式:
  JWT_SECRET=your-secret docker-compose up -d
2026-02-28 19:32:54 +08:00
92071e5ba6 feat(frontend): 添加 Docker 部署配置和生产环境变量
- Dockerfile:多阶段构建,node:20-alpine 编译 Vue3,
  nginx:alpine 提供静态资源服务,使用国内 npm 镜像加速
- nginx.conf:配置 Vue Router history 模式(try_files),
  /api/ 和 /uploads/ 反向代理到后端容器
- .env.production:生产环境 API 地址(8.148.151.56:3001)
- .gitignore:放开 .env.production 提交权限(无敏感信息)
2026-02-28 19:32:45 +08:00
3a921250c3 feat(backend): 添加 Docker 部署配置
- Dockerfile:基于 node:20-alpine,包含 TypeScript 编译和
  Prisma Client 生成步骤,对外暴露 3001 端口
- .env.example:提供环境变量模板,团队成员按此创建 .env 文件
  (.env 本身含敏感信息,已加入 .gitignore 不提交)
2026-02-28 19:32:14 +08:00
f056bf72a2 fix(backend): 修复 Prisma 在 Alpine Linux 容器中的 OpenSSL 兼容性问题
在 generator client 中添加 binaryTargets,显式指定
linux-musl-openssl-3.0.x,解决 Alpine Linux 3.18+ 使用
OpenSSL 3.x 时 Prisma 引擎无法加载的问题。
2026-02-28 19:32:03 +08:00
2c67204ef7 添加 dev.db 数据库文件 2026-02-28 17:53:32 +08:00
7f757b6a63 初始提交:幼儿园阅读平台三端代码
- reading-platform-backend:NestJS 后端
- reading-platform-frontend:Vue3 前端
- reading-platform-java:Spring Boot 服务端
2026-02-28 17:51:15 +08:00