This guide is tailored to the current BHRA-Importer and CodexCharts structures.
- Source project:
CodexCharts - Target project:
BHRA-Importer - Priority area: BHRA export section (first section of UI)
- Baseline output: HTML
chart-contract/chart-request.schema.jsonchart-contract/chart-request.template.jsonchart-contract/examples/*.jsonsrc/server.tssrc/send-chart-request.ts
src/index.ts(Express bootstrap + root route)views/index.ejs(current UI page)src/db/Database.ts(pool + query transaction helper)src/config.ts(env and path config)sql/chart-procs-and-seed.sql(already chart-related DB seed/procs)
-
Source:
CodexCharts/chart-contract/chart-request.schema.jsonTarget:BHRA-Importer/chart-contract/chart-request.schema.jsonAction: copy and keep schema as primary request contract. -
Source:
CodexCharts/chart-contract/chart-request.template.jsonTarget:BHRA-Importer/chart-contract/chart-request.template.jsonAction: copy and tune defaults for BHRA stored procedures. -
Source:
CodexCharts/chart-contract/examples/*.jsonTarget:BHRA-Importer/chart-contract/examples/*.jsonAction: copy examples, then replace procedure names with BHRA equivalents.
-
Source: logic in
CodexCharts/src/server.ts(/api/stored-proc) Target: add route inBHRA-Importer/src/index.ts(or split into new route module) Action: port only stored-proc endpoint logic, not unrelated test pages. -
Source: helper behavior in
CodexCharts/src/server.tsTarget: new utility inBHRA-Importer/src/utils(recommended: stored-proc helper) Action: migrateparseParams,buildCallSql, and result-set extraction behavior. -
Source: DB pool usage in
CodexCharts/src/server.tsTarget:BHRA-Importer/src/db/Database.tsAction: use BHRA database class as the single execution path.
-
Source:
CodexCharts/src/send-chart-request.tsTarget:BHRA-Importer/src/send-chart-request.ts(orsrc/export/send-chart-request.ts) Action: port validator + request loader + request sender logic. -
Source: schema reference usage in
CodexCharts/src/send-chart-request.tsTarget: BHRA chart-contract path Action: keep relative paths accurate for BHRA root layout. -
Source: output handling in
CodexCharts/src/send-chart-request.tsTarget: BHRA output folder policy (recommended new folder:public/charts/generated) Action: keep HTML-first generation and deterministic file naming.
-
Source: chart trigger ideas from
CodexChartsflow Target:BHRA-Importer/views/index.ejsAction: add first-section UI controls (category, table/query, export type, generate action). -
Source: Express render route patterns in both projects Target:
BHRA-Importer/src/index.tsAction: pass category/query metadata to EJS view and add export endpoints. -
Source: existing chart artifact location in BHRA (
public/charts) Target: keeppublic/chartsand addgeneratedsubfolder if needed Action: continue serving generated files via static middleware already configured.
-
Source: BHRA SQL baseline already present in
BHRA-Importer/sql/chart-procs-and-seed.sqlTarget: same file Action: align request-template defaults to seeded chart metadata (code, proc name, params). -
Source: Codex mapping expectations (
xField,yField,categoryField,valueField) Target: BHRA chart query metadata tables/procs Action: ensure stored-proc outputs include mapped columns used by each chart type.
- Create
chart-contractfolder in BHRA and copy schema/template/examples. - Add
/api/stored-procroute in BHRA using current DB service. - Port request validator/builder CLI.
- Prove one end-to-end line chart HTML export.
- Add UI controls for categorized exports.
- Add remaining chart/export categories incrementally.
- BHRA already has chart outputs in
public/chartsincluding.htmland.png; migration baseline should keep HTML default and treat PNG as optional legacy. - BHRA already contains chart-focused SQL definitions, which reduces migration risk for data-source setup.
- BHRA app currently runs a file-watch import workflow through
WatchController; keep export/chart routes isolated so import processing behavior is unaffected.
-
Risk: route-level coupling between importer watcher flow and new export flow. Control: isolate export routes/services and avoid modifying watcher internals initially.
-
Risk: mismatch between stored-proc result columns and mapping fields. Control: add pre-render mapped-field validation and explicit error messages.
-
Risk: output sprawl in
public/charts. Control: introduce deterministic generated naming and optional subfolder partitioning. -
Risk: scope creep into non-HTML outputs during baseline migration. Control: freeze first release on HTML output parity.
- BHRA user can choose category/table/export mode from the first UI section.
- Request validates against schema before execution.
- Stored procedure runs and correct result set is selected.
- HTML output file is generated and directly viewable.
- Validation and runtime errors are user-readable.
- Existing BHRA import watcher behavior remains intact.
- Add CSV/XLSX export parity from contract mode where required.
- Add result history listing and retention policy for generated chart files.
- Optionally reintroduce PNG/SVG/PDF rendering behind explicit output mode.