feat: T4b/T4c wave 8 - weather history, phenology, honey chain, Telegram base
- Weather history from Open-Meteo behind an adapter: worker loop phenology-weather with backoff, Retry-After, User-Agent, chunked writes and forecast-to-archive correction - Phenology: growing degree sum per DWD, phase from reports, GTS and calendar, calibration from previous years, daily job step, SeasonService reads the stored state - Honey chain: prefill for extractions and batches (proposals only), plausibility and withdrawal warnings, Extraction lock, chain events and batch.created webhook from HoneyBatchRecorded - Telegram base: schema, NotificationDelivery outbox, hardened bot client, startup check without crash, no-network-outside-loops guard - ARCHITECTURE.md: sections 11.11-11.13, assumptions 42-46, env table Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
22382d53a2
commit
1971b2d9c4
90 files changed
+8431
-155
No files matched your search
@@ -11,6 +11,7 @@ interface HoneyBatchBody {
|
||||
batchNumber: string;
|
||||
measurements: { id: string }[];
|
||||
storageContainerId: string | null;
|
||||
warnings: { code: string }[];
|
||||
}
|
||||
|
||||
interface RelocationBody {
|
||||
@@ -163,6 +164,8 @@ describe('Honey batches (e2e)', () => {
|
||||
const honeyBatch = response.body as HoneyBatchBody;
|
||||
honeyBatchId = honeyBatch.id;
|
||||
expect(honeyBatch.batchNumber).toEqual(expect.stringContaining('HC-'));
|
||||
// The answer carries the warnings; nothing to warn about here.
|
||||
expect(honeyBatch.warnings).toEqual([]);
|
||||
});
|
||||
|
||||
it('adds a water content measurement to the batch', async () => {
|
||||
|
||||
Reference in new issue
Block a user