mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-10-13 08:50:22 +08:00
* fix(agent): PUT no longer erases the avatar, and driver errors stay server-side Two defects in the custom-agent API, both of which surface as a successful or misleading response. 1. A config-only PUT wiped the avatar. UpdateAgentRequest.Avatar was a plain string, so "field omitted" and "explicit clear" were indistinguishable, and UpdateAgent assigned it unconditionally. Any caller that updated only the config — which is what an edit form or an SDK client does when it sends the config it changed — silently zeroed the avatar and still received 200. Avatar now travels as *string end to end: nil keeps the stored value, a pointer to "" is an explicit clear. The service takes it as a separate argument because *types.CustomAgent cannot express the difference. 2. Raw repository/driver errors reached the client. The fallback branches forwarded err.Error() verbatim, so a postgres message — for example "ERROR: value too long for type character varying(64) (SQLSTATE 22001)" — was returned in the API response. That leaks schema details and tells the caller nothing actionable. Each fallback now returns a fixed message naming the operation; the full error is still logged immediately above, so nothing is lost for diagnosis. The same oversized-avatar case is now rejected earlier, by ValidateAvatar, as a 400 that names the varchar(64) limit instead of a 500 produced by the database. Typed sentinels and *errors.AppError keep their existing behaviour — only the untyped fallbacks changed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(agent): complete avatar preservation and regression coverage --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: wizardchen <wizardchen@tencent.com>