You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+10-1Lines changed: 10 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ This project was extracted from an industrial safety-vision workflow. It uses on
15
15
16
16
## Pre-generated showcase
17
17
18
-
No GPU or live command is needed to inspect these results. Analytical report screenshots use committed synthetic fixtures; the grouped-review gallery uses real, user-approved production review samples to show the actual operating experience. Screenshots demonstrate behavior and report structure, not model accuracy claims.
18
+
No GPU or live command is needed to inspect these results. Analytical report screenshots use committed synthetic fixtures; the grouped-review gallery and web-platform captures use real, user-approved production review samples to show the actual operating experience. Screenshots demonstrate behavior and report structure, not model accuracy claims.
19
19
20
20
### Model-free dataset audit
21
21
@@ -84,6 +84,15 @@ See [Grouped Review Application](docs/GROUPED_REVIEW_APP.md) for the queue contr
84
84
85
85
The repository now includes a deployable web platform for teams that outgrow the portable desktop reviewer. A Vue 3 + TypeScript client talks to a Spring Boot 4 REST API backed by MySQL and Flyway. JWT authentication, `ADMIN / REVIEWER / AUDITOR` RBAC, project membership, pessimistic task claiming, renewable leases, optimistic versions and immutable audit events prevent duplicate work and stale decisions. The Python bridge streams the existing `review_queue.csv` into the API in bounded, idempotent batches.
86
86
87
+

<imgsrc="docs/assets/platform-admin-console.png"width="49%"alt="Administrator account and project-member management">
92
+
</p>
93
+
94
+
These are captures of the actual Vue + Spring Boot application running against seeded local collaboration data, not design mockups. The workspace shows a claimed task, real review visual, class confidence, constrained decisions and live project progress; the admin view demonstrates account creation and project membership assignment.

12
+
13
+
<p>
14
+
<imgsrc="assets/platform-login.png"width="49%"alt="Login and role entry">
15
+
<imgsrc="assets/platform-admin-console.png"width="49%"alt="Admin account and membership management">
16
+
</p>
17
+
18
+
The screenshots above were captured from the actual Vue and Spring Boot services with seeded local collaboration records. They demonstrate the real login flow, project progress, atomic task claim, read-only review visual delivery, constrained decisions, account creation and member assignment. They are not UI mockups.
19
+
20
+
以上截图由真实运行的 Vue 与 Spring Boot 服务生成,并加载了本地演示协作记录。截图覆盖登录、项目进度、原子领取任务、只读审核图加载、受约束决策、账号创建和成员分配,不是界面示意图。
@@ -61,7 +74,7 @@ Every task carries JPA `@Version`. The client submits `expectedVersion` with a d
61
74
62
75
`(project_id, candidate_id)` is unique, so importing the same queue again safely skips existing candidates. `review_decisions.task_id` is also unique, so one task cannot obtain two final decisions even if a client retries.
63
76
64
-
## 5. State and data model / 状态与数据模型
77
+
## 6. State and data model / 状态与数据模型
65
78
66
79
```mermaid
67
80
stateDiagram-v2
@@ -75,7 +88,7 @@ stateDiagram-v2
75
88
76
89
Core tables are `app_users`, `review_projects`, `project_members`, `review_tasks`, `review_decisions` and `audit_events`. Flyway owns schema evolution; Hibernate validates rather than mutates the production schema.
77
90
78
-
## 6. Run with Docker Compose / Docker 一键运行
91
+
## 7. Run with Docker Compose / Docker 一键运行
79
92
80
93
```powershell
81
94
cd platform
@@ -90,7 +103,7 @@ docker compose up -d --build
90
103
91
104
Open `http://localhost:8088`. The bootstrap admin is created only when the configured username does not already exist.
92
105
93
-
## 7. Import an existing queue / 导入现有审核队列
106
+
## 8. Import an existing queue / 导入现有审核队列
94
107
95
108
The queue must contain `candidate_id`, `split`, `image_name`, `class_name`, `conf`, `case_code`, `recommended_action` and `visual_file`. `visual_file` must be relative to the mounted review package root.
96
109
@@ -108,7 +121,7 @@ The importer reads one CSV row at a time and uploads at most 500 rows per reques
108
121
109
122
After creating reviewer accounts in the admin drawer, assign each username to the selected project. Reviewers then see only their assigned projects.
110
123
111
-
## 8. Local development / 本地开发
124
+
## 9. Local development / 本地开发
112
125
113
126
```powershell
114
127
# Backend
@@ -124,7 +137,7 @@ npm run dev
124
137
125
138
The Vite development server proxies `/api` to `localhost:8080`. Tests use H2 in MySQL compatibility mode; production uses MySQL and Flyway.
126
139
127
-
## 9. API surface / 主要接口
140
+
## 10. API surface / 主要接口
128
141
129
142
| Method | Path | Meaning |
130
143
|---|---|---|
@@ -138,7 +151,7 @@ The Vite development server proxies `/api` to `localhost:8080`. Tests use H2 in
138
151
| GET |`/api/tasks/{id}/visual`| Read an authorized real review image |
139
152
| GET |`/api/projects/{id}/audit`| Read project audit trail, admin/auditor |
140
153
141
-
## 10. Interview walkthrough / 面试讲解顺序
154
+
## 11. Interview walkthrough / 面试讲解顺序
142
155
143
156
1. Start from the data problem: incomplete labels make true objects become false background supervision.
144
157
2. Explain why offline inference and online review are separated: GPU jobs are expensive and bursty; human review is concurrent and stateful.
@@ -147,6 +160,6 @@ The Vite development server proxies `/api` to `localhost:8080`. Tests use H2 in
147
160
5. Show bounded idempotent import and read-only visual mounts as memory-safety and data-safety decisions.
148
161
6. Close with evidence: production queue scale, real grouped images, automated Java/Python tests and reproducible Docker deployment.
149
162
150
-
## 11. Production hardening / 生产加固
163
+
## 12. Production hardening / 生产加固
151
164
152
165
Before exposing the service beyond a trusted LAN, terminate TLS at a reverse proxy, rotate JWT/database secrets, disable bootstrap admin after first setup, back up MySQL, centralize logs and metrics, and define account disable/password-reset procedures. Docker Compose is an auditable single-host baseline; Kubernetes or managed databases are deployment choices, not prerequisites for the core workflow.
The image above is a capture of the running application with a real review visual and seeded collaboration records, not a mockup. Additional login and administration screenshots are available in [COLLABORATION_PLATFORM.md](../docs/COLLABORATION_PLATFORM.md).
0 commit comments