Skip to content

Add 14 generator types to meet the 60+ claim documented on the website#47

Merged
MaximumTrainer merged 2 commits intomainfrom
copilot/review-website-functionality-gaps
Apr 7, 2026
Merged

Add 14 generator types to meet the 60+ claim documented on the website#47
MaximumTrainer merged 2 commits intomainfrom
copilot/review-website-functionality-gaps

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 7, 2026

Website and docs claim "60+ Generator Types" but only 47 exist. The other 6 advertised features (Auto PII Detection, Compliance Reports, Job Scheduling, Workspace Inheritance, Webhooks, REST API & CLI) are fully implemented with no gaps.

New generators (47 → 61)

  • Personal: TITLE, JOB_TITLE, NATIONALITY
  • Business: COMPANY_NAME, DEPARTMENT
  • Financial: CURRENCY_CODE
  • Network: DOMAIN_NAME, USER_AGENT
  • Location: LATITUDE, LONGITUDE, TIME_ZONE
  • Data Utilities: BOOLEAN, LOREM, TIMESTAMP

All backed by Datafaker, consistent with existing generator patterns:

GeneratorType.TITLE -> faker.name().prefix()
GeneratorType.JOB_TITLE -> faker.job().title()
GeneratorType.BOOLEAN -> faker.bool().bool()
GeneratorType.TIMESTAMP -> java.sql.Timestamp(faker.date().past(365 * 10, TimeUnit.DAYS).time)

Files touched

  • Backend enum + service: ColumnGenerator.kt, GeneratorService.kt
  • Frontend enum: types/index.ts
  • Tests: EnumAlignmentTest.kt canonical set, GeneratorServiceTest.kt (14 new test cases), ConnectionsView.test.ts count assertion
  • Docs: README.md, guide.html, user-guide.md

Copilot AI linked an issue Apr 7, 2026 that may be closed by this pull request
… claim gap

New generators: TITLE, JOB_TITLE, NATIONALITY, COMPANY_NAME, DEPARTMENT,
CURRENCY_CODE, DOMAIN_NAME, USER_AGENT, LATITUDE, LONGITUDE, TIME_ZONE,
BOOLEAN, LOREM, TIMESTAMP

Updated: backend enum, GeneratorService logic, frontend enum, tests,
README, website guide, and user guide documentation.

Agent-Logs-Url: https://github.com/MaximumTrainer/OpenDataMask/sessions/93036016-950b-41e8-8c56-906e6a23008c

Co-authored-by: MaximumTrainer <1376575+MaximumTrainer@users.noreply.github.com>
Copilot AI changed the title [WIP] Review website functionality gaps and identify issues Add 14 generator types to meet the 60+ claim documented on the website Apr 7, 2026
Copilot AI requested a review from MaximumTrainer April 7, 2026 16:23
@MaximumTrainer MaximumTrainer requested review from Copilot and removed request for MaximumTrainer April 7, 2026 16:27
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands OpenDataMask’s generator catalog so the codebase matches the “60+ generator types” claim by adding 14 new Datafaker-backed generator types across backend, frontend, tests, and docs.

Changes:

  • Added 14 new GeneratorType values (47 → 61) to backend + frontend enums.
  • Implemented generation logic for the new types in GeneratorService and added corresponding unit tests.
  • Updated docs/website and enum-count assertions to reflect 61 generator types.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
README.md Updates the documented generator count and examples.
frontend/src/views/tests/ConnectionsView.test.ts Updates enum-count assertion from 47 to 61.
frontend/src/types/index.ts Adds the 14 new GeneratorType enum members.
docs/website/guide.html Updates generator table to include new generator types/categories.
docs/user-guide.md Adds example rows demonstrating new generator outputs.
backend/src/test/kotlin/com/opendatamask/domain/model/EnumAlignmentTest.kt Updates canonical generator set to include the new types.
backend/src/test/kotlin/com/opendatamask/application/service/GeneratorServiceTest.kt Adds tests covering the 14 new generators’ outputs/types.
backend/src/main/kotlin/com/opendatamask/domain/model/ColumnGenerator.kt Adds the 14 new backend enum values.
backend/src/main/kotlin/com/opendatamask/application/service/GeneratorService.kt Implements generation logic for the new enum values.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +112 to +115
GeneratorType.CURRENCY_CODE -> faker.currency().code()
GeneratorType.DOMAIN_NAME -> faker.internet().domainName()
GeneratorType.USER_AGENT -> faker.internet().userAgent().replace(Regex("\\s+"), " ")
GeneratorType.LATITUDE -> faker.address().latitude()
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

USER_AGENT generation compiles a new Regex("\\s+") on every call via replace(Regex(...)), which can be a hot path when generating large datasets. Consider using a precompiled regex constant (e.g., in a companion object) or an alternative that avoids per-call regex construction.

Copilot uses AI. Check for mistakes.
GeneratorType.TIME_ZONE -> faker.address().timeZone()
GeneratorType.BOOLEAN -> faker.bool().bool()
GeneratorType.LOREM -> faker.lorem().paragraph()
GeneratorType.TIMESTAMP -> java.sql.Timestamp(faker.date().past(365 * 10, java.util.concurrent.TimeUnit.DAYS).time)
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIMESTAMP uses a fully-qualified java.util.concurrent.TimeUnit.DAYS while earlier generators in the same method use the imported TimeUnit.DAYS. For consistency/readability, use the same TimeUnit reference throughout this when block.

Suggested change
GeneratorType.TIMESTAMP -> java.sql.Timestamp(faker.date().past(365 * 10, java.util.concurrent.TimeUnit.DAYS).time)
GeneratorType.TIMESTAMP -> java.sql.Timestamp(faker.date().past(365 * 10, TimeUnit.DAYS).time)

Copilot uses AI. Check for mistakes.
| `JOB_TITLE` | `Senior Software Engineer` |
| `NATIONALITY` | `Canadian` |
| `DOMAIN_NAME` | `example.com` |
| `TIMESTAMP` | `2024-06-15 14:30:00` |
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The TIMESTAMP example (2024-06-15 14:30:00) likely won’t match actual output: java.sql.Timestamp.toString() typically includes fractional seconds (e.g., .0 or milliseconds). Consider updating the example to include fractional seconds or clarifying the displayed format.

Suggested change
| `TIMESTAMP` | `2024-06-15 14:30:00` |
| `TIMESTAMP` | `2024-06-15 14:30:00.0` |

Copilot uses AI. Check for mistakes.
Comment on lines +133 to +134
<tr><td>Personal</td><td>NAME, FIRST_NAME, LAST_NAME, EMAIL, PHONE, BIRTH_DATE, GENDER, TITLE, JOB_TITLE, NATIONALITY</td></tr>
<tr><td>Address</td><td>ADDRESS, STREET_ADDRESS, CITY, STATE, ZIP_CODE, COUNTRY, GPS_COORDINATES, LATITUDE, LONGITUDE, TIME_ZONE</td></tr>
Copy link

Copilot AI Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This row is labeled Address but now includes LATITUDE, LONGITUDE, and TIME_ZONE, which are described as "Location" generators in the PR description. Consider renaming the category (e.g., Location) or splitting into a separate row to keep the table taxonomy consistent.

Copilot uses AI. Check for mistakes.
@MaximumTrainer MaximumTrainer marked this pull request as ready for review April 7, 2026 17:07
@MaximumTrainer MaximumTrainer merged commit fea1acd into main Apr 7, 2026
14 checks passed
@MaximumTrainer MaximumTrainer deleted the copilot/review-website-functionality-gaps branch April 7, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Review website functionality gaps

3 participants