Contact and conversation filters now reject malformed numeric/date custom-attribute values and dangling query operators during validation, returning the existing invalid-filter response instead of failing later while building SQL. ## Closes - [CW-7922](https://linear.app/chatwoot/issue/CW-7922/harden-backend-paths-causing-production-sentry-errors) - [Sentry 7663920842](https://chatwoot-p3.sentry.io/issues/7663920842/) - [Sentry 7663378104](https://chatwoot-p3.sentry.io/issues/7663378104/) ## How to reproduce Submit a custom numeric attribute filter with an empty value, or end a filter payload with a nonblank `query_operator`. These inputs previously reached coercion/query construction and raised production exceptions. ## What changed - Validate numeric and date custom-attribute values before query construction. - Preserve presence operators, which do not require a comparison value. - Reject a query operator on the final filter condition. - Add contact and conversation service regression coverage.