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
845 B
JSON
18 lines
845 B
JSON
{
|
|
"address": "exercitation sed dolor lorem lorem do sit eiusmod sit\nipsum lorem lorem lor\nconsectetur",
|
|
"assigned_to": null,
|
|
"building": "WEE1",
|
|
"comment_text": "ad ullamco nisi nisi enim exercit\n\nWEE1 - Please confirm once the tech arrives on site for expected ETA above. Following tech\u2019s departure, please update this ticket to confirm if the tech was able to complete the work the same day, or if additional repairs are needed so that we may follow up accordingly. Thank you.",
|
|
"comment_time": "2026-06-29T03:44:30",
|
|
"commenter": "eiusmod",
|
|
"date_reported": null,
|
|
"description": "do incididunt amet ad dolore consectetur m",
|
|
"due_date": null,
|
|
"email_type": "comment",
|
|
"priority": null,
|
|
"scheduled_start": null,
|
|
"severity": null,
|
|
"site_code": "WEE1",
|
|
"status": null,
|
|
"work_order_id": "11649444950"
|
|
}
|