Commit Graph

71 Commits

Author SHA1 Message Date
En
b9ed5e17c6 feat: OSS 客户端直传改造(STS Token 签发 + 前端直传 + CORS 自动配置)
后端新增 OssUtils/OssTokenVo/OssCorsInitRunner,通过 STS 临时凭证实现客户端直传 OSS;
前端 upload API 适配直传流程,赛事创建/作品提交/作业/富文本编辑器均已切换;
多环境(dev/test/prod) OSS 配置补全;新增 oss-direct-upload-demo 示例项目及 E2E 测试。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 15:19:43 +08:00
zhonghua
9f036eb81f fix: 成果详情搜索表单绑定 model 以触发查询
Made-with: Cursor
2026-04-08 14:47:19 +08:00
zhonghua
36cd01c585 feat: 作品编号 workNo 生成与回填(公开端/作业/Flyway V8)及评审与前端展示
Made-with: Cursor
2026-04-08 14:44:16 +08:00
zhonghua
430dce1f09 postMessage消息对接优化 2026-04-08 14:09:52 +08:00
En
1eb76979c4 Merge remote-tracking branch 'origin/master_develop' into master_develop 2026-04-08 13:39:03 +08:00
En
fa42eca339 feat: 数据库注释补全、常量枚举重构及多模块优化
- 新增 Flyway V6/V7 迁移脚本,为全部 42 张表、591 个列添加中文注释
- 抽取公共常量类(BaseEntityConstants、CacheConstants、RoleConstants、TenantConstants)
- 新增业务枚举(CommonStatus、RegistrationStatus、WorkStatus 等 11 个)
- 优化赛事/作业/评审/UGC 等模块服务层代码
- 更新乐读派(leai)模块配置与 API 客户端
- 更新 e2e 测试用例及 demo 文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 13:37:14 +08:00
zhonghua
7d7ef9820b fix: 作品分配评委移除后同步数据库并允许清空评委
Made-with: Cursor
2026-04-08 11:30:54 +08:00
zhonghua
180c22fe49 feat: 作品列表终分回算、评审进度详情展示对齐及评委管理优化
Made-with: Cursor
2026-04-08 10:53:50 +08:00
En
9b5c24c49c Merge remote-tracking branch 'origin/master_develop' into master_develop 2026-04-08 09:36:50 +08:00
En
922f650365 feat: 添加乐读派(leai)集成模块及E2E测试基础设施
后端:
- 新增 leai 模块:认证、Webhook、数据同步、定时对账
- 新增 LeaiConfig/RestTemplateConfig/SchedulingConfig 配置
- 新增 FlywayRepairConfig 处理迁移修复
- 新增 V5__leai_integration.sql 迁移脚本
- 扩展所有实体类添加 tenantId 等字段
- 更新 SecurityConfig 放行 leai 公开接口
- 添加 application-test.yml 测试环境配置

前端:
- 添加乐读派认证 API (public.ts)
- 优化 Generating.vue 生成页
- 添加 Playwright E2E 测试配置及依赖
- 添加测试 fixtures、utils、mock-h5.html
- 添加 leai 模块完整 E2E 测试套件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 21:52:32 +08:00
En
9ad9f5b237 fix: 创作页 iframe tab 切换状态保持
使用 v-show 始终挂载方案替代 KeepAlive,解决 iframe 内 H5 状态
在 tab 切换后丢失的问题。Vue KeepAlive 会移动 DOM 导致浏览器
重新加载 iframe 内容,v-show 只切换 CSS display 不移动 DOM。

- PublicLayout 中将 PublicCreate 渲染在 router-view 外部
- v-if 懒挂载(首次访问创建),v-show 控制显隐
- 登出时销毁组件避免数据泄漏
- 添加 RouteMeta keepAlive 类型定义
- 添加 E2E 测试覆盖 5 个 tab 切换场景

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 21:50:08 +08:00
zhonghua
2f84ac16d3 fix:添加评委选择回显 2026-04-07 19:32:44 +08:00
zhonghua
1d43501983 fix:修复评委打分403 2026-04-07 17:48:48 +08:00
zhonghua
170d904081 feat: 作品管理分配状态/评委回显 + 评委管理租户隔离
Changes:
1. ContestWorkServiceImpl: findAll 返回 assignments、_count 数据 + assignStatus 搜索
2. ContestJudgeServiceImpl: 评委列表返回 assignedCount(已分配作品数)
3. JudgesManagementServiceImpl: 评委库租户隔离(查询当前租户+平台评委,创建在当前租户、平台评委只读)
4. judges/Index.vue: 增加"来源"列 + 平台评委操作限制
5. judges-management.ts: 类型增加 isPlatform/tenantId
6. WorksDetail.vue: 小修改

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 17:10:40 +08:00
zhonghua
1c63cb21e5 feat: 活动提交联动作品库+多租户数据对齐
1. P0-12 活动提交联动:替换文件上传为 WorkSelector 作品选择器
   - 前端 ActivityDetail.vue 集成 WorkSelector 组件
   - 后端 submitWork 支持 userWorkId 快照复制(title/description/coverUrl/pages)
   - WorkSelector 支持 redirectUrl 创作后返回活动页

2. 多租户数据对齐:修复公众端报名/作品 tenantId 不一致
   - register() 使用活动的 contestTenants[0] 作为 tenantId
   - submitWork() 使用报名记录的 tenantId
   - 管理端报名/作品统计、列表数据一致

3. 前端报名状态区分:pending/passed/rejected 显示不同按钮
4. submitWork 报名状态检查:区分未报名/审核中/已拒绝提示
5. 活动列表添加 _count(报名数/作品数)用于已交/应交展示
6. 修复 PublicCreationService.submit() title 默认值缺失

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 14:11:59 +08:00
En
3c24cc3102 feat: 添加CLAUDE.md项目指导文件及AI创作客户端更新
添加 CLAUDE.md 用于 Claude Code 项目导航,包含架构说明和开发规范。
更新 AI 创作客户端至 V4.0,新增后端对接示例项目。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 12:11:15 +08:00
zhonghua
1003776dd3 fix:多项前端修复与功能对齐
- 修复评委端进入评审contestId为NaN(record.id→record.contestId)
- 修复评委评审详情403(活动名称改为路由传参,跳过需要contest:read权限的接口)
- 已发布活动隐藏编辑按钮
- 添加评委成功提示去重(移除子组件重复message)
- 用户端活动阶段判断修复(报名与提交重叠时优先显示提交阶段)
- 用户端作品提交支持submitRule(once/resubmit)重新提交
- 后端公共API补充submitRule字段返回
- 报名统计接口增加租户隔离,修复统计与列表数据不一致

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 20:29:28 +08:00
zhonghua
3ef05de193 fix:评委端403修复 2026-04-03 19:10:44 +08:00
zhonghua
d68322f24a fix:修复我的报名列表 2026-04-03 18:47:42 +08:00
zhonghua
ff25e41243 fix:用户端活动报名修复报名按钮 2026-04-03 15:59:54 +08:00
zhonghua
bee5152a2d fix:修复可见范围 2026-04-03 15:35:21 +08:00
zhonghua
b3954ffcf3 fix:活动详情优化 2026-04-03 15:28:15 +08:00
zhonghua
4a70bc7d43 fix:系统国际化支持 2026-04-03 14:55:27 +08:00
zhonghua
78cd956ab5 fix:修复创建活动失败 2026-04-03 13:49:19 +08:00
zhonghua
c5fad30849 fix: 修复用户管理页面所属机构字段显示及列表过滤逻辑
1. 前端所属机构字段改为使用后端返回的平铺 tenantName 字段
   - users.ts: 添加 tenantName, tenantCode, tenantType, tenantIsSuper 平铺字段
   - Index.vue: 表格列和详情 Drawer 使用 record.tenantName/detailData.tenantName

2. 后端修复机构用户 (org) 过滤逻辑
   - SysUserServiceImpl: case "org" 分支增加 getOrgTenantIds() 调用,传递 orgTenantIdsFilter 参数
   - SysUserMapper.xml: 增加 orgTenantIdsFilter 参数处理,使用 IN 查询过滤

3. 后端修复公众 (public) 和评委 (judge) 用户过滤逻辑
   - 数据库中 public 租户的 tenant_type='platform',judge 租户的 tenant_type='other'
   - case "public"/"judge" 改为传递 tenantCodeFilter 参数,按租户 code 过滤
   - SysUserMapper.xml: 增加 tenantCodeFilter 参数处理

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 20:06:09 +08:00
zhonghua
d19d7d9a2c Merge branch 'develop' of http://8.148.151.56:3000/tonytech/library-picturebook-activity into master_develop 2026-04-02 18:49:12 +08:00
zhonghua
dcaa7e1779 调整样式 2026-04-02 18:49:01 +08:00
aid
3c4100c231 feat: 创建租户时自动生成管理员账号、角色和权限
创建租户改为事务化一站式操作:自动复制 gdlib 权限模板 + 补充基础管理权限,
创建 tenant_admin 角色和管理员用户,支持自定义账号密码。
前端表单增加管理员输入区块,成功弹窗展示凭据并支持一键复制。
同步实现 menuIds 菜单分配(消除原 TODO)。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 18:48:34 +08:00
zhonghua
ea65b55332 fix: 补齐作品租户隔离与租户菜单树
- 作品列表/统计补齐 validState 与租户条件,关键字支持报名/队伍信息匹配
- 新增租户菜单树接口与服务实现,结构对齐用户菜单树
- t_biz_contest_work 增加 deleted 字段,补充 flyway 迁移与启动时轻量修复

Made-with: Cursor
2026-04-02 18:30:45 +08:00
zhonghua
483740f10b 调整密码 2026-04-02 15:51:53 +08:00
zhonghua
249e73d252 环境更变 2026-04-02 15:49:40 +08:00
aid
bead1cf4dc 剥离学校端/教师端/学生端/3D建模模块,清理跨模块引用
- 移除 backend: school/ (schools, departments, grades, classes, teachers, students)
- 移除 backend: ai-3d/ (controller, service, providers, utils)
- 移除 frontend: views/school/, views/workbench/ai-3d/, views/model/
- 移除 prisma schema: School, Grade, Department, Class, Teacher, Student, StudentInterestClass, AI3DTask 共8个模型
- 移除 app.module.ts: SchoolModule, AI3DModule 导入
- 移除 router/index.ts: 3D建模4条路由
- 移除 menu.ts: componentMap 中学校/3D映射
- 修复 registrations.service.ts: 教师判断从 Teacher 模型改为角色判断
- 修复 results.service.ts: 移除 student include
- 修复 homework services: 移除 student/class/grade 相关 Prisma 查询
- 保留 students.ts/teachers.ts/ai-3d.ts 最小类型存根供赛事组件引用
- 原始代码备份至 competition-management-system-stripped-modules/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 14:04:40 +08:00
aid
9215465bd5 Day5: 租户端全面优化 + 数据统计看板 + 成果发布完善
租户端基础设施:
- 新增工作台首页(欢迎信息/统计/待办/快捷操作/新手引导)
- 新增机构信息管理页(自助查看编辑机构信息)
- 修复403报错(fetchTenants加超管守卫)
- 修复权限(log:read/notice:update/notice:delete/contest:work:read)
- 修复评审规则组件映射

活动管理全模块优化(机构端视角):
- 活动列表:加统计概览+精简列+筛选自动查询+发布弹窗修复+操作逻辑优化
- 创建/编辑活动:重构布局(去card嵌套+栅格响应式+分区卡片)
- 评委管理:统一主色调+冻结确认+导入导出disabled
- 报名管理:去Tab+统计+审核状态列+批量审核接口
- 报名记录:统计概览+去机构列+撤销审核+返回按钮+去参与方式列
- 作品管理:去Tab+统计+递交进度彩色+筛选修复(assignStatus/submitTime)
- 评审进度:去Tab+统计+实际完成率状态+筛选修复
- 评审规则:表格加评委数/计算方式+描述列修复+删除保护
- 成果发布:去Tab+统计+操作文案优化
- 通知公告:统一主色调+发布确认+操作逻辑+状态筛选+时间范围

成果发布详情功能补全:
- 计算得分/排名/设置奖项三步操作流程
- 排名列(金银铜徽章)+奖项列+奖项筛选
- 自定义奖项(动态添加行替代硬编码一二三等奖)
- 后端AutoSetAwardsDto改为awards数组格式

数据统计看板(新模块):
- 后端analytics module(overview+review两个接口)
- 运营概览:6指标卡片+报名转化漏斗+ECharts月度趋势+活动对比表
- 评审分析:4效率卡片+评委工作量表+ECharts奖项分布饼图
- 菜单注册:数据统计→运营概览+评审分析

Bug修复:
- 超管重置其他租户用户密码报"用户不存在"
- gdlib登录快捷标签密码不一致
- 分配评委去掉评审时间限制

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 20:02:24 +08:00
aid
83f007d20e Day5: 机构管理模块优化 — 隐藏内部租户+后端搜索+快捷操作+新建引导
- 后端过滤系统内部租户(super/public/school等),列表只展示真实机构
- 搜索改为后端分页查询(keyword+tenantType参数),去掉前端过滤
- 表格新增登录地址列,一键复制完整URL
- 新增停用/启用快捷按钮(PATCH /tenants/:id/status)
- 新建机构成功后弹出引导,可直接跳转创建管理员账号
- 修复编辑弹窗因模板访问window导致的渲染崩溃

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:39:14 +08:00
aid
f246b38fc1 Day5: 超管端内容管理模块全面优化 + 广场推荐作品展示
作品审核:
- 批量通过/批量拒绝 + 撤销审核机制
- 默认筛选待审核,表格加描述预览+审核时间列
- 详情Drawer加上一个/下一个导航,审核后自动跳下一个
- 操作日志时间线展示,筛选下拉自动查询

作品管理:
- 修复筛选/排序失效,新增推荐中筛选
- 下架改为弹窗选择原因,取消推荐二次确认
- 详情Drawer补全描述/标签/操作按钮/操作日志
- 统计卡片可点击筛选,下架自动取消推荐

标签管理:
- 按分类分组卡片式展示,分类改为下拉选择
- 新增标签颜色字段(预设色+自定义)
- 上移/下移排序按钮,使用次数可点击跳转作品管理
- 新增/编辑时实时预览用户端标签效果

广场推荐:
- 新增推荐作品列表接口 GET /public/gallery/recommended
- 广场顶部新增「编辑推荐」横向滚动栏

文档更新:内容管理设计文档补充实施记录,UGC开发计划P1-1标记已完成

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:21:21 +08:00
aid
66827c0199 Day5: 公众端响应式修复 + 点赞收藏功能 + 报名作品合并 + 菜单同步
- 公众端桌面端新增顶部导航菜单,修复横屏模式菜单消失问题
- 实现点赞/收藏 toggle API(含批量状态查询、我的收藏列表)
- 作品详情页新增互动栏(点赞/收藏按钮,乐观更新+动效)
- 广场卡片支持点赞交互
- 报名列表合并展示参赛作品,移除独立的「我的作品」页面
- 个人中心新增「我的收藏」入口
- menus.json 与数据库完整同步,更新初始化脚本租户分配逻辑
- Vite 开启局域网访问

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:56:20 +08:00
aid
4466e28b3b 超管端用户管理:「平台」更名为「运营团队」+ 子女信息适配独立账号模型
- 统计卡片和用户类型Tag从「平台」改为「运营团队」,避免命名歧义
- 公众用户详情从旧版Child模型(姓名/年级/学校)改为UserParentChild关系,展示子女独立账号信息
- 后端详情接口和列表_count同步从children切换到parentRelations
- 更新统一用户管理设计文档,补充实施记录

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:03:44 +08:00
aid
418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00
zhangxiaohua
fe91f88350 修复gitignore规则并添加系统日志页面
- 修复.gitignore中logs规则匹配范围过大的问题
- 添加系统日志管理页面

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:56:25 +08:00
zhangxiaohua
f6b292bebf 新增预设评语功能及评审相关优化
- 新增预设评语表(PresetComment)及相关API
- 新增预设评语管理页面
- 优化评审作品弹框,支持预设评语选择
- 优化赛果发布列表页面
- 更新路由和菜单配置

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 14:46:25 +08:00
zhangxiaohua
2981449353 修复评审相关数据显示问题
- 修复作品详情弹框评审记录字段名(score->totalScore, comment->comments)
- 修复评审详情弹框评分字段名(score->totalScore)
- 修复赛果发布详情评委评分不显示问题(添加judgeScore计算)
- 修复赛事列表已递交数统计(添加status in条件和覆盖_count.works)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 14:44:27 +08:00
zhangxiaohua
c1f8ac072a 修复管理端作品详情3D模型预览失败问题
1. 添加 parsedFiles 计算属性正确解析 files 字段(可能是 JSON 字符串)
2. 修改 hasModelFile 和 modelFileUrl 使用解析后的数组
3. 修改跳转方式使用 sessionStorage + router.push(与学生端一致)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:54:25 +08:00
zhangxiaohua
9f22a20a2a 修复作品附件上传和显示功能
1. 后端 DTO 添加 attachments 字段
2. 后端 submit 方法使用事务创建作品和附件记录
3. 前端 SubmitWorkForm 添加 attachments 类型
4. 前端上传时将附件信息单独传递(不再合并到 files 中)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:43:10 +08:00
zhangxiaohua
ac0c38c04a 修复团队赛事相关功能
1. 修复团队成员无法在"我参与的赛事"中看到团队赛事的问题
2. 修复教师作为指导老师无法看到团队赛事的问题
3. 修复上传作品/参赛作品/我的队伍按钮500错误(userId获取方式错误)
4. 修复管理端成员弹框队长名称和成员数显示问题
5. 新增getMyRegistration接口支持团队成员查询报名状态
6. 优化赛事卡片按钮布局

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:27:06 +08:00
zhangxiaohua
0cdc5d1ceb 修改样式 2026-01-19 17:08:25 +08:00
zhangxiaohua
61599117dc 修改并发限制逻辑 2026-01-19 16:33:27 +08:00
zhangxiaohua
7ec72d865a 修改样式 2026-01-19 16:09:22 +08:00
zhangxiaohua
7f8e28a4af 修改图生3D,支持多图上传 2026-01-19 14:10:43 +08:00
zhangxiaohua
a8b9f658a0 修改侧边栏样式 2026-01-19 11:29:37 +08:00
zhangxiaohua
a79b24b463 修改代码,部署测试 2026-01-18 17:58:38 +08:00