mirror of
https://github.com/tiennm99/miti99bot.git
synced 2026-04-17 19:22:09 +00:00
chore: add plan and phase reports for D1 + cron rollout
This commit is contained in:
26
plans/reports/fullstack-260415-1052-phase-02-cron-wiring.md
Normal file
26
plans/reports/fullstack-260415-1052-phase-02-cron-wiring.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Phase 02 Report — Cron Wiring
|
||||
|
||||
## Files Modified/Created
|
||||
|
||||
- **Created** `src/modules/validate-cron.js` — validates `{ name, schedule, handler }` entries; 5/6-field cron regex check
|
||||
- **Created** `src/modules/cron-dispatcher.js` — `dispatchScheduled(event, env, ctx, registry)` fan-out with per-handler try/catch
|
||||
- **Modified** `src/modules/registry.js` — added `validateCron` import; cron validation + duplicate-name check in `loadModules`; `CronEntry[]` collection in `buildRegistry`; `registry.crons` exposed in typedef and return value
|
||||
- **Modified** `src/bot.js` — added `getRegistry(env)` export; shares same memoized registry with `fetch` handler
|
||||
- **Modified** `src/index.js` — added `scheduled(event, env, ctx)` export; calls `getRegistry` then `dispatchScheduled`
|
||||
- **Modified** `wrangler.toml` — added `[triggers] crons = []` placeholder with authoring instructions
|
||||
- **Created** `tests/modules/validate-cron.test.js` — 9 tests (valid entry, bad name, bad schedule, bad handler)
|
||||
- **Created** `tests/modules/cron-dispatcher.test.js` — 6 tests (schedule match, no-match, fan-out, error isolation, ctx pass-through, empty registry)
|
||||
- **Modified** `tests/modules/registry.test.js` — added 6 cron collection tests (empty, collect, fan-out, duplicate name, non-array, invalid entry)
|
||||
|
||||
## Tests
|
||||
|
||||
- All 139 tests pass (`14 passed` files)
|
||||
- 0 new lint errors introduced (17 eslint errors are pre-existing: KVNamespace/D1Database/Request undefined types + CRLF line-ending biome format noise from Windows git autocrlf)
|
||||
|
||||
## Deviations
|
||||
|
||||
- `getRegistry(env)` added to `bot.js` rather than importing `buildRegistry` directly in `index.js` — avoids bypassing the Bot init path and ensures single shared memoized registry across `fetch` + `scheduled`.
|
||||
- Test fixture module names use kebab-case (`mod-a`, `mod-b`) to satisfy `createStore`'s `^[a-z0-9_-]+$` constraint (initial camelCase caused 2 failures, fixed immediately).
|
||||
|
||||
**Status:** DONE
|
||||
**Summary:** Cron Triggers wired end-to-end — module contract extended with `crons[]`, dispatcher dispatches per schedule, registry collects + validates, `scheduled()` exported from worker entry. All tests green, no new lint issues.
|
||||
Reference in New Issue
Block a user