Repository navigation
Catch up scheduled jobs, fix the monthly payment and send codes with more errors - #30
Merged
Merged
Conversation
- Move 25 items that will not be fixed now to the known-issues section of the git-ignored archive TODO, with their text and priority, and leave a pointer to it in TODO.md - Drop the money audit trail and the Node check from SESSION's next steps, since both moved out - Record the decision as ADR-045 The owner accepts these issues for now; TODO.md should only list what is going to be worked on, while the archive keeps them under watch.
- Pass the keys of the validated body as changedFields: the controller compared the whole row, so created_at, updated_at and updated_by were always logged. - Compare normalised values in logGroupUpdated: a DATE column arrives as a Date and the body as 'YYYY-MM-DD', null and undefined are the same, and a DECIMAL arrives as a string. Editing only the amount left 7 history rows. - Add regression tests for each case.
- Use the six values of parking_spots.spot_type: the old type listed values the DB never stores, so it protected nothing. - Replace the mismatch warning in the parking doc with the sync rule. - Drop the item from the TODO list.
- Replace the fixed Spanish texts in auth-controllers.ts and user-controllers.ts with ERROR_CODES, so the frontend shows them in the page language. - Stop returning the raw MySQL message on a duplicate user: it now answers AUTH_USER_ALREADY_EXISTS. - Add AUTH_USER_ALREADY_EXISTS, AUTH_INVALID_ROLE, AUTH_NEW_PASSWORD_SAME_AS_CURRENT and AUTH_RESET_PASSWORD_ERROR, with their es/en texts and a test. - List the existing user codes in TRANSLATED: their texts were already there but never used. - Drop auth from the untranslated errors item in the TODO list.
- Answer with ERROR_CODES in authenticateToken, roleCheck, demoRestriction, rateLimiter, imageUpload and checklistParams, so the frontend shows these errors in the page language. - Collapse the role-specific 403 texts of roleCheck into FORBIDDEN: the UI already hides what a role cannot use, so the detail is rarely seen. - Keep demo: true on the demo block: apiClient uses it for its notice. - Drop the message option of the rate limiters that set their own handler: express-rate-limit only reads it in the default handler. - Add the 17 new codes with their es/en texts and adapt the tests that checked the old texts. - Drop middlewares from the untranslated errors item in the TODO list.
- Run on every start the jobs whose period is due and not done (notifications, checklist reset and purge, batch payment): Render's free plan sleeps the backend, and a week of logs showed no job ever ran. - Record the last period of each job in cron_job_runs and claim it with a locking UPDATE, so the start-up catch-up and node-cron never run a period twice; a failed or abandoned run is retried on the next start. - Keep the batch payment due for the previous month's period until day 10, so a month the backend slept through is still paid. - Add the inactive system-cron user: the payment signed with it and failed on the users foreign key, so it never paid an invoice. - Pay the batch in one transaction, locking the selected invoices, so no invoice ends up paid without its history. - Record the decision as ADR-046 and the migration in INDEX.md (Aiven pending), and merge the two cron items of the TODO list.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
bpstack
added a commit
that referenced
this pull request
Oct 14, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
cron_job_runskeeps each period to one run, shared by preview and production.system-cron, which did not exist, so it never paid an invoice. Adds the inactive user and pays in one transaction with the history rows. Migration20261014_cron_catch_up.sqlis already applied on local and Aiven.code, so the frontend shows them in the page language; the duplicate-user 409 no longer leaks the raw MySQL message.SpotTypematches thespot_typeENUM.Checked
pnpm verifyin backend and frontend; backend tests without a database, as CI runs them.system-cron;AUTH_USER_NOT_FOUNDandFORBIDDENcodes; editing a group amount adds one history row.