Files
ss-tools/backend/tests
busya a4db469077 fix(translate): typed temporal transfer, language arbitration, MERGE key
- sql_generator: normalize ISO/epoch values only against a resolved target type
  (Nullable/LowCardinality unwrapped); untyped epoch-looking strings are preserved and
  unparseable temporal values raise instead of coercing. Removes the heuristic that
  wrote sentinel dates (2106-02-07 = UInt32 max) into business date columns.
- sql_generator: ClickHouse string-literal escaping — backslash, quote and control
  characters escaped; ANSI '' doubling alone silently rewrote paths and tabs on insert.
- service_target_schema: one fetch_target_column_types resolver for both direct_db and
  SQL Lab insert paths (300s cache) plus a single column-catalog SQL builder; EXPLORE
  trace when the catalog is unreachable/empty instead of a silent untyped fallback.
- _lang_detect: script-conflict downgrade no longer depends on the target language list;
  letterless text becomes und; short/number-heavy Cyrillic cannot survive as a Latin
  language; sanitize_detected_language validates the LLM arbitration answer by script.
- _batch_proc/_utils: und rows actually reach LLM arbitration (same-language, cache and
  preview short-circuits blocked) and trust a cache entry only when its stored source
  language is confirmed; detector version bumped to invalidate the v2 cache.
- _key_mapping: single source->target key mapping; MERGE with target_language_column
  absent from target_key_cols rejected in preflight before any fetch/LLM; lang_code is a
  target-only discriminator (no fictitious source key). Removes 5 divergent copies.
- frontend: global run indicator elapsed timer (1s tick, server started_at, cleanup)
  reusing formatDuration; MERGE-key inline validation with en/ru i18n keys; UX contract
  and decision-memory updates.
- tests: real ClickHouse testcontainers coverage on dm.debt_comment_translations
  (Date32/DateTime transfer, epoch/millis/sentinel/boundaries, NULL semantics, text
  escaping round-trip, MERGE language discriminator, chunked batch, production
  projection); unit coverage for typed normalization, escaping, key mapping and the
  arbitration cache. Existing integration module had a stale untyped-epoch expectation.
2026-09-22 11:36:44 +03:00
..