Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4a3f69a
feat: teams, discussions, projects and knowledge
HuanCheng65 Mar 27, 2025
f31f6f2
feat: enhance task and team management with real name requirements an…
HuanCheng65 Mar 29, 2025
1b49af3
feat(categories): implement category management for spaces
HuanCheng65 Mar 31, 2025
2788355
refactor: streamline form data handling and improve validation logic
HuanCheng65 Apr 1, 2025
4e06358
refactor: simplify SpacesDetail routing and remove unused default route
HuanCheng65 Apr 1, 2025
fb905df
feat(space): improved navigation and organization
HuanCheng65 Apr 1, 2025
27e0925
chore(deps): downgrade vuetify-pro-tiptap
HuanCheng65 Apr 1, 2025
1675b72
fix: add categoryId to TaskFormSubmitData
HuanCheng65 Apr 1, 2025
b90663d
feat(notifications): implement notification system
HuanCheng65 Apr 8, 2025
8476b82
feat(tasks): add participant limit to task form and update pagination…
HuanCheng65 Apr 8, 2025
7112cc4
feat(tasks): enhance task participation eligibility checks
HuanCheng65 Apr 8, 2025
53f6920
refactor(tasks): update participant data structure
HuanCheng65 Apr 8, 2025
46f6e06
feat(tasks): add team locking policy to task form and enhance error h…
HuanCheng65 Apr 10, 2025
d16901e
chore(deps): update vuetify and vite-plugin-vuetify to latest versions
HuanCheng65 Apr 10, 2025
70b9897
chore: update module resolution
HuanCheng65 Apr 10, 2025
fc92725
feat(analytics): add analytics tasks feature with UI integration and …
Nictheboy Jul 13, 2025
10d7288
feat(auth): oauth and new user interface
HuanCheng65 Jul 15, 2025
ce28222
feat(spaces): discussion in space
HuanCheng65 Jul 15, 2025
4ac3e49
feat(spaces): admin management
HuanCheng65 Jul 15, 2025
317659a
feat(tasks): task editing
HuanCheng65 Jul 15, 2025
a9f6f81
Merge pull request #25 from Nictheboy/dev
HuanCheng65 Jul 16, 2025
6bec7f5
feat: integrate ProjectMetis backend and enhance AI assistant UI
xiaoyang060219 Aug 13, 2025
6e68792
feat: integrate ProjectMetis backend and enhance AI assistant UI
xiaoyang060219 Aug 13, 2025
b5d75ae
fix: space analytics frontend issues
andylizf Sep 3, 2025
8cd4009
Enhance analytics UI and fix data display issues
andylizf Sep 7, 2025
3969d35
feat: new layout and ui
HuanCheng65 Sep 7, 2025
f8a5334
Merge pull request #27 from SageSeekerSociety/feature/ai-assistant-in…
HuanCheng65 Sep 7, 2025
60c1411
Merge pull request #26 from SageSeekerSociety/fix/space-analytics-fro…
HuanCheng65 Sep 7, 2025
e35fff6
fix: type issues
HuanCheng65 Sep 7, 2025
75edcf4
Merge branch 'fix/space-analytics-frontend' into dev
andylizf Sep 9, 2025
858bc44
refactor: migrate to string-based keyset paging
HuanCheng65 Oct 14, 2025
2a6ec02
fix: routes navigation
HuanCheng65 Oct 14, 2025
c321ea5
feat(tasks): show task participants instead of submitters
HuanCheng65 Oct 14, 2025
07f31d1
feat(tasks): register start time limit
HuanCheng65 Oct 14, 2025
e066505
feat(assistant): revamp streaming conversation experience
HuanCheng65 Mar 18, 2026
10caf93
feat(tasks): improve task topic filters
HuanCheng65 Mar 18, 2026
b366f4f
refactor(chat): remove unused cursor helpers
HuanCheng65 Mar 18, 2026
114ffea
docs: add space analytics design and plan
HuanCheng65 Mar 18, 2026
55d941c
feat: rebuild space analytics workspace
HuanCheng65 Mar 18, 2026
9e01579
feat: split space member task views
HuanCheng65 Mar 19, 2026
81a0277
feat: 添加PDF上传、赛题预览、一键发布、赛题详情markdown文本展示
xiaoyuer5126 May 1, 2026
fa317ee
fix: 添加PDF解析超时时间
xiaoyuer5126 May 1, 2026
0d8b75b
feat(tasks): add video URL field to task creation, editing and detail…
WangChangxin0809 May 2, 2026
4d26527
Merge pull request #31 from WangChangxin0809/add-pdf-to-task-and-mark…
WangChangxin0809 May 2, 2026
48d0370
docs: add JSDoc comments to PDF publish and markdown rendering modules
WangChangxin0809 May 8, 2026
2d9465e
fix(security): validate videoUrl protocol to prevent XSS injection
WangChangxin0809 May 8, 2026
2c368f5
feat: 在赛题编辑页面新增markdown格式渲染及编辑
xiaoyuer5126 May 12, 2026
45330e4
Merge pull request #33 from SageSeekerSociety/add-pdf-to-task-and-mar…
Nictheboy Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
VITE_API_BASE_URL=http://localhost:7777
VITE_NEW_API_BASE_URL=http://localhost:8080
VITE_NEW_API_BASE_URL=http://localhost:8080
VITE_AI_API_BASE_URL=http://localhost:4000
# PDF 上传/解析请求的超时时间(毫秒),默认 600000(10 分钟)
VITE_PDF_UPLOAD_TIMEOUT_MS=600000
10 changes: 10 additions & 0 deletions dev.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

> frontend@0.0.0 dev /home/andyl/cheese/cheese-frontend
> vite "--" "--port" "3000"

Port 3000 is in use, trying another one...

VITE v6.2.1 ready in 3660 ms

➜ Local: http://localhost:3001/
➜ Network: use --host to expose
165 changes: 165 additions & 0 deletions docs/plans/2026-03-19-space-analytics-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# Space Analytics Workspace Design

## Context

The existing Space analytics page is a single legacy view that still relies on deprecated or changed backend contracts:

- `GET /spaces/{spaceId}/analytics/tasks` still assumes the old aggregate report shape
- `GET /spaces/{spaceId}/publishers/participation` is deprecated
- `GET /spaces/{spaceId}/participants/export` is deprecated

The backend has now split analytics into explicit resources:

- `overview`
- `alerts`
- `publishers`
- `tasks`
- `participants`
- dedicated export endpoints for `publishers`, `tasks`, and `participants`

The frontend needs a full migration to the new contract while improving the visual quality and information architecture for both leadership presentation and operational use.

## Goals

- Replace legacy analytics data usage with the new analytics endpoints and schemas
- Build a cohesive analytics workspace under a single sidebar entry
- Preserve one shared filtering model across all analytics sections
- Make the default landing experience leadership-friendly and presentation-ready
- Keep deeper analysis and exports practical for day-to-day operators

## Information Architecture

Use one sidebar entry, `数据分析`, and split analytics inside the page using a shell layout plus sub-routes.

### Routes

- `/spaces/:spaceId/analytics` -> `Overview`
- `/spaces/:spaceId/analytics/alerts` -> `Alerts`
- `/spaces/:spaceId/analytics/publishers` -> `Publishers`
- `/spaces/:spaceId/analytics/tasks` -> `Tasks`
- `/spaces/:spaceId/analytics/participants` -> `Participants`

This mirrors the mental model used in Task Detail: one feature area, one internal navigation system, separate subviews, shared header, shared state.

## Shared Filtering Model

Maintain one URL-synced filter state for the analytics workspace.

### Defaults

- date range: last `180` days
- `taskApproved=APPROVED`
- `groupBy` auto-derived from range

### Global filters

- `from`
- `to`
- `categoryId`
- `taskApproved`

### Shared by some resources

- `publisherId` for `overview`, `tasks`, `participants`
- `groupBy` for `overview`, `participants`
- `sortBy` and `sortOrder` for `publishers`, `tasks`

### Resource-only filters

- `hasPendingReview` for `tasks`
- `hasPendingApproval` for `tasks`
- `participationApproved` for `participants`
- `completionStatus` for `participants`
- `realName` for `participants`

### Query behavior

- filters sync to URL query parameters
- changing section preserves compatible query state
- each API only receives supported params
- export actions reuse the current effective query state

## Visual Direction

The page should feel like an institutional analytics brief rather than a generic admin dashboard.

### Tone

- refined
- credible
- presentation-ready
- restrained, not flashy

### Style principles

- keep alignment with existing Vuetify-based product styling
- elevate visual hierarchy with layered surfaces, subtle gradients, fine borders, and disciplined spacing
- use a composed hero section and polished statistic cards
- make dense operational pages still feel intentional and readable

## Page Designs

### Overview

The default landing page is leadership-first.

- hero with workspace title, current scope summary, and analytics context
- KPI cards for task, publisher, participant, submission, success, and real-student scale
- trends block emphasizing participation, submissions, and success over time
- governance summary cards from `alerts`
- distributions for category, approval status, and completion status

### Alerts

Focused governance page.

- six alert cards
- threshold explanations as supporting text
- direct jump actions into filtered task views
- no heavy tables

### Publishers

Teacher comparison page.

- table-first layout with compact summary highlight strip
- default sort by `taskCount desc`
- export button on the section header

### Tasks

Operational governance page.

- dense task table with quick filters
- highlights pending approvals, pending reviews, and conversion metrics
- export button on the section header

### Participants

Population and completion analysis page.

- summary metrics for participant and student counts
- distributions for approval, completion, grade, major, class, and real-name status
- trends for joins, submissions, and successes
- export button on the section header with current-scope wording

## Data Loading

- `Overview` loads `overview` first and `alerts` alongside it
- `Alerts`, `Publishers`, `Tasks`, `Participants` load lazily on first entry
- route transitions should not force unrelated resources to reload
- explicit refresh remains available in the workspace header

## Migration Notes

- stop using deprecated `publishers/participation`
- stop using deprecated `participants/export`
- stop assuming the old `analytics/tasks` report shape
- render all percentage fields from backend `0-1` values as formatted percentages in UI
- clearly distinguish `报名主体数` and `真实学生人数`

## Testing Strategy

- add test coverage for shared analytics filter/query mapping utilities
- add test coverage for API param shaping where practical
- run targeted lint/build verification for the changed analytics workspace
Loading
Loading