Task: Appraise currency across all layers and produce evaluation checklist
Table of Contents
This page documents a task in the Commission: currency story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Produce a per-layer appraisal of the currency entity covering every access layer (DB,
domain, table IO, JSON IO, Qt, shell, CLI, HTTP, Wt, manual). For each layer: record what
exists, whether it is working post-NATS, and what is missing or broken. The findings are
distilled into a reusable entity evaluation checklist — a knowledge document listing the
standard criteria at each layer that any ores.refdata entity must satisfy to be considered
fully commissioned.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Commission: currency |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | None. |
| Last touched | 2026-05-29 |
Acceptance
- Each layer assessed: DB, domain, table IO, JSON IO, Qt, shell, CLI, HTTP, Wt, manual.
- Per-layer findings recorded in the
* Resultsection. - A knowledge document
entity_evaluation_checklist.orgexists listing the standard criteria at each layer. - Any gaps or regressions found are filed as captures or noted inline.
- Checklist is referenced from Entity Coverage Matrix.
PRs
| PR | Title |
|---|---|
| #929 | [doc] Appraise currency entity; produce domain entity evaluation checklist |
Review
| # | Comment summary | File | Decision | Notes |
|---|---|---|---|---|
| 1 | Now field should be 'Nothing.' on DONE tasks | task_appraise_currency.org | Fixed in ffc43de33 | |
| 2 | Now field should be 'Nothing.' on DONE tasks | task_verify_sql.org | Fixed in ffc43de33 | |
Result
Checklist document produced: ores.refdata entity evaluation checklist.
Per-layer findings for currency are recorded below. Status key: ✓ = present and working,
~ = present but needs verification post-NATS, ✗ = missing or broken.
DB layer
File: projects/ores.sql/create/refdata/refdata_currencies_create.sql
| Criterion | Status | Notes |
|---|---|---|
| Table exists | ✓ | refdata_currencies |
tenant_id column |
N/A | Currencies are global (no tenant scope) |
version column |
✓ | |
modified_by, performed_by |
✓ | |
change_reason_code, change_commentary |
✓ | |
valid_from / valid_to temporal columns |
✓ | |
| GIST exclusion constraint | ✓ | |
| Natural key unique index | ~ | Verify index on code + valid_from |
| Soft-FKs documented | N/A | No party or workspace scope |
Domain layer
File: projects/ores.refdata.api/include/ores.refdata.api/domain/currency.hpp
| Criterion | Status | Notes |
|---|---|---|
| Domain struct exists | ✓ | 22 fields |
| All DB columns represented | ✓ | |
| Canonical C++ types | ✓ | |
valid_from / valid_to as ptime |
✓ | |
| No logic in struct | ✓ |
Repository layer
Files: ores.refdata.core/include/.../repository/currency_entity.hpp, currency_mapper.hpp, currency_repository.hpp
| Criterion | Status | Notes |
|---|---|---|
| Entity class | ✓ | |
| Mapper class | ✓ | |
| Repository class | ✓ | |
| list, count, save, delete, get | ✓ | |
| get_history | ✓ | |
| list_for_party | N/A | Global entity |
Service layer
File: ores.refdata.core/include/.../service/currency_service.hpp
| Criterion | Status | Notes |
|---|---|---|
| Service class | ✓ | |
| list, count, save, delete, get, get_history | ✓ | |
| list_for_party | N/A | Global entity |
| Authorization checks | ~ | Verify post-NATS |
| NATS event firing on mutation | ~ | Verify post-NATS |
Messaging / JSON IO layer
Files: currency_json.hpp, currency_json_io.hpp
| Criterion | Status | Notes |
|---|---|---|
| JSON struct | ✓ | rfl-based |
| IO handler | ✓ | |
| NATS message types (save, delete, saved, deleted) | ✓ | |
| List / count / get / history NATS types | ✓ | |
| JSON round-trip | ~ | Verify via NATS end-to-end test |
Qt layer
Files: CurrencyMdiWindow, CurrencyController, CurrencyDetailDialog, CurrencyHistoryDialog, ClientCurrencyModel, ImportCurrencyDialog
| Criterion | Status | Notes |
|---|---|---|
| MDI list window | ✓ | |
| Detail dialog | ✓ | |
| History dialog | ✓ | |
| Controller | ✓ | |
| Client model | ✓ | |
| Import dialog | ✓ | Bonus: bulk import |
| List window loads post-NATS | ~ | Needs manual verification |
| Detail dialog edit + save | ~ | Needs manual verification |
| History dialog correct | ~ | Needs manual verification |
| Delete preserves history | ~ | Needs manual verification |
| NATS eventing cross-session | ~ | Needs manual verification |
Shell layer
File: projects/ores.shell/src/app/commands/currencies_commands.cpp
| Criterion | Status | Notes |
|---|---|---|
| Submenu registered | ✓ | |
| list command | ✓ | |
| add command | ✓ | |
| remove command | ✓ | |
| history command | ✓ | |
| Post-NATS verification | ~ | Needs verification |
CLI layer
File: projects/ores.cli/include/ores.cli/config/add_currency_options.hpp
| Criterion | Status | Notes |
|---|---|---|
| Config struct | ~ | Only add options found; list/remove may be missing |
| list subcommand | ~ | Not confirmed; needs investigation |
| add subcommand | ✓ | Options struct exists |
| remove subcommand | ~ | Not confirmed; needs investigation |
| Post-NATS verification | ~ | Needs verification |
Gap: CLI appears to have only add implemented. List and remove subcommands need
confirmation and likely implementation.
HTTP layer
File: projects/ores.http.core/src/routes/risk_routes.cpp
| Criterion | Status | Notes |
|---|---|---|
| GET list route | ✓ | |
| POST save route | ✓ | |
| DELETE batch route | ✓ | |
| GET history route | ✓ | |
| Routes registered | ✓ | |
| Routes tested | ~ | Manual verification needed |
Wt web UI layer
Files: ores.wt.service/include/.../app/currency_list_widget.hpp, currency_dialog.hpp
| Criterion | Status | Notes |
|---|---|---|
| List widget | ✓ | |
| Detail dialog | ✓ | |
| Wired into Wt app | ~ | Verify integration |
| List + edit round-trip | ~ | Needs verification |
Manual
| Criterion | Status | Notes |
|---|---|---|
Entity chapter in doc/manual/user_guide/ |
✗ | Missing; recipes exist in doc/recipes/ but no manual chapter |
| Chapter covers what/why | ✗ | |
| Qt windows documented | ✗ | |
| Shell commands documented | ✗ | |
| CLI commands documented | ✗ | |
| Site builds cleanly with chapter | ✗ |
Gap: Manual chapter is entirely missing. Only recipe stubs exist.
Summary of gaps
- CLI: List and remove subcommands not confirmed; likely need implementation.
- Qt: All windows exist but post-NATS end-to-end verification needed.
- Shell / Service / NATS: Implemented but post-NATS verification needed.
- Manual: Chapter entirely missing — highest priority documentation gap.
- Wt / HTTP: Implemented; verification deferred to backlog (out of sprint scope).