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
903 B
JSON
18 lines
903 B
JSON
{
|
|
"address": "et consectetur minim dolore et nostrud sed incididunt\nconsectetur tempor\nlaboris aliqua adipisc",
|
|
"assigned_to": null,
|
|
"building": "WTX0",
|
|
"comment_text": "nisi do incididunt amet ipsum lorem enim d\n\nPurchase Order: 2D-21144808 NTE for this Purchase Order is $2000 - If the NTE will be exceeded, a quote must be submitted beforehand\n\nPoint(s) Of Contact: Andy Romero 214 - 587-3543\nKim Burris 701-740-9845\nMax Martinez 830-335-7757\nMelissa Medina 361-455-4369\n\nPlease provide the best time for this to be scheduled.",
|
|
"comment_time": "2026-04-30T16:22:51",
|
|
"commenter": "sit eius",
|
|
"date_reported": null,
|
|
"description": "eiusmod veniam elit dolor eiusmod sit ad ad",
|
|
"due_date": null,
|
|
"email_type": "comment",
|
|
"priority": null,
|
|
"scheduled_start": null,
|
|
"severity": null,
|
|
"site_code": "WTX0",
|
|
"status": null,
|
|
"work_order_id": "15379807062"
|
|
}
|