mirror of
https://github.com/Sea-Haven-Industries/procurement-ingest.git
synced 2026-10-07 16:08:54 +00:00
A1 — AI-fallback comment_id nondeterminism: parsed comment_time is model output and not stable across Lambda async retries, so on the ai_fallback path the comment_id range-key time segment now derives from the email Date header (deterministic per S3 object) instead of the model's comment_time. The template path is unchanged (its comment_time is a pure function of the raw email). Bedrock invoke pins temperature 0 so retries reproduce the same extraction. Closes the #23 reopening on the AI path. A2 — EMF record now carries the spec-required _aws.Timestamp (epoch ms) so CloudWatch reliably extracts the ParseOutcome datapoint that the fallback-rate alarm depends on. A3 — T1 New Comment capture no longer truncates at the first blank line; multi-paragraph comments are captured through internal blanks and terminate at the next label/separator. 17 golden files regenerated from the real fixtures accordingly. Hardening from the sh-security-review pass on this diff: - _header_date_iso is total: OverflowError/OSError from an extreme Date header fall back to 'nocomment' instead of failing the invocation. - _capture_block trims blanks in O(n) (no pop(0)) — removes a quadratic path on a crafted large blank run. - work_order_id is enforced digits-only on BOTH parse paths before it is used as a DynamoDB key, so prompt-injected AI output cannot forge '#' range-key segments or land on an arbitrary WO.
18 lines
822 B
JSON
18 lines
822 B
JSON
{
|
|
"address": "minim dolore nostrud se\net nostrud laboris\ntempor ut labore n",
|
|
"assigned_to": null,
|
|
"building": "XEV9",
|
|
"comment_text": "lorem lorem lorem enim dolore et consectetur minim elit minim ullamco nisi do sit ad adipiscing minim ul\n\nAll itemized quotes have to include the per line item breakdown for the labor section\n\nLabor Details\nNo. of techs\nNo. of hours\nRate\nTotal\n\nOnce that has been revised from Sea Haven we are good to go with this uplift. Thank you",
|
|
"comment_time": "2026-05-12T13:29:16",
|
|
"commenter": "dolor l",
|
|
"date_reported": null,
|
|
"description": "aliqua adipiscing dolor lore",
|
|
"due_date": null,
|
|
"email_type": "comment",
|
|
"priority": null,
|
|
"scheduled_start": null,
|
|
"severity": null,
|
|
"site_code": "XEV9",
|
|
"status": null,
|
|
"work_order_id": "13996242160"
|
|
}
|