@@ -18,18 +18,16 @@ A modern, streamlined Node.js implementation of the Open Data Certificate questi
1818Survey (Questionnaire Definition)
1919├── Sections (Legal, Technical, etc.)
2020│ └── Elements (Questions & Logic)
21-
22- ResponseSet (User's Questionnaire Attempt)
23- ├── Responses (Individual Answers)
24- └── Achievement Level (0-4)
25-
26- Certificate (Achievement Record)
27- ├── ResponseSet Reference
28- └── Publication Status
2921
3022Dataset (Data Being Certified)
31- ├── Metadata
23+ ├── Metadata (title, URL, etc.)
3224└── Owner Information
25+
26+ Certificate (Questionnaire Attempt + Result)
27+ ├── References: surveyId, datasetId, userId
28+ ├── Responses (Map of question → answer)
29+ ├── Achievement Level (0–4)
30+ └── Publication State (draft, published, archived, superseded)
3331```
3432
3533### Achievement Levels
@@ -155,11 +153,9 @@ The certificate view reads the survey’s `levels` to display the badge and desc
155153│ ├── Survey.js
156154│ ├── User.js
157155│ ├── Dataset.js
158- │ ├── ResponseSet.js
159156│ └── Certificate.js
160157├── controllers/ # Web controllers
161158│ ├── certificates.js
162- │ ├── responseSets.js
163159│ └── surveys.js
164160├── services/ # Business logic
165161│ └── levelCalculationService.js
@@ -191,8 +187,7 @@ The migration script extracts data from the original Ruby MySQL database and tra
1911871 . ** Surveys** : Converts survey definitions to MongoDB format
1921882 . ** Users** : Migrates user accounts and preferences
1931893 . ** Datasets** : Transfers dataset metadata
194- 4 . ** Response Sets** : Converts questionnaire responses to new format
195- 5 . ** Certificates** : Migrates achievement records
190+ 4 . ** Certificates** : Converts questionnaire responses and achievement records
196191
197192### Test Migration Features
198193The migration script includes test mode options to validate the migration process:
@@ -245,15 +240,15 @@ npm run migrate:certificates:full # migrate all datasets with published
245240- ` GET /datasets ` → Browse published datasets (HTML) or JSON list via content negotiation
246241- ` GET /datasets/:id ` → Dataset drill-down (HTML) or JSON via content negotiation
247242- ` GET /datasets/:datasetId/certificates ` → List or redirect to a certificate for dataset
248- - ` GET /datasets/:datasetId/certificates/:responseSetId ` → Render a certificate
243+ - ` GET /datasets/:datasetId/certificates/:certificateId ` → Render a certificate
249244
250245### Authenticated web routes
251246- ` GET /datasets/my ` → “My Datasets” (HTML) or JSON via content negotiation (owner; all for admin)
252247- ` GET /auth/* ` → Auth routes (login, profile, logout)
253248
254249### Legacy route redirects
255250- ` /:locale/datasets/:datasetId/certificates ` → 301 → ` /datasets/:datasetId/certificates `
256- - ` /:locale/datasets/:datasetId/certificates/:responseSetId ` → 301 → ` /datasets/:datasetId/certificates/:responseSetId `
251+ - ` /:locale/datasets/:datasetId/certificates/:certificateId ` → 301 → ` /datasets/:datasetId/certificates/:certificateId `
257252- ` /:locale/datasets/:datasetId/certificate ` → 301 → ` /datasets/:datasetId/certificate `
258253- ` /:locale/datasets/:datasetId/certificate/embed ` → 301 → ` /datasets/:datasetId/certificate/embed `
259254- ` /:locale/datasets/:datasetId/certificate/badge.png ` → 301 → ` /datasets/:datasetId/certificate/badge.png `
0 commit comments