- Added a new modal for reporting bugs, including fields for describing the issue and attaching files. - Implemented backend API for creating bug reports, including rate limiting and metadata logging. - Introduced a new database table to track bug report submissions for auditing purposes. - Enhanced the frontend to capture screenshots automatically and allow manual file uploads. - Added error handling and user feedback for the bug reporting process. - Updated existing templates and scripts to integrate the new bug reporting functionality.
91 lines
4.0 KiB
PL/PgSQL
91 lines
4.0 KiB
PL/PgSQL
-- Fix malformed caller numbers for Per Krag's Yealink phone.
|
|
--
|
|
-- Run via:
|
|
-- podman exec -i bmc-hub-postgres-prod psql -U bmc_hub -d hubdb_v2 -f /dev/stdin < fix_telefoni_per_krag_numbers.sql
|
|
|
|
BEGIN;
|
|
|
|
-- STEP 1: Fix any remaining numbers that still have the 1857220892 suffix
|
|
-- (threshold lowered from >15 to >10 to catch shorter corrupted numbers)
|
|
UPDATE telefoni_opkald
|
|
SET ekstern_nummer = CASE
|
|
-- Too few remaining digits → NULL
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) <= 3
|
|
THEN NULL
|
|
-- 8 remaining digits = Danish number → +45 prefix
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) = 8
|
|
THEN '+45' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
-- Other length → keep + prefix
|
|
ELSE '+' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
END
|
|
WHERE regexp_replace(ekstern_nummer, '[^0-9]', '', 'g') LIKE '%1857220892'
|
|
AND length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) > 10;
|
|
|
|
-- STEP 2: Fix numbers that were previously half-patched: '+' + exactly 8 digits.
|
|
-- '+[8 digits]' is not valid E.164 (minimum 9 digits needed), so these are
|
|
-- Danish numbers that lost their +45 prefix during the first patch.
|
|
UPDATE telefoni_opkald
|
|
SET ekstern_nummer = '+45' || regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')
|
|
WHERE ekstern_nummer ~ '^\+[0-9]{8}$';
|
|
|
|
-- Verify: show any remaining suspicious numbers for this user
|
|
SELECT id, started_at, ekstern_nummer
|
|
FROM telefoni_opkald t
|
|
JOIN users u ON u.user_id = t.bruger_id
|
|
WHERE u.full_name ILIKE '%per krag%'
|
|
ORDER BY started_at DESC
|
|
LIMIT 20;
|
|
|
|
COMMIT;
|
|
|
|
|
|
-- Preview what will be changed
|
|
SELECT
|
|
id,
|
|
ekstern_nummer AS before,
|
|
CASE
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) < 4
|
|
THEN NULL
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) = 8
|
|
THEN '+45' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
WHEN ekstern_nummer LIKE '+%'
|
|
THEN '+' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
ELSE left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
END AS after
|
|
FROM telefoni_opkald
|
|
WHERE regexp_replace(ekstern_nummer, '[^0-9]', '', 'g') LIKE '%1857220892'
|
|
AND length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) > 15
|
|
ORDER BY started_at DESC;
|
|
|
|
-- Apply the fix
|
|
UPDATE telefoni_opkald
|
|
SET ekstern_nummer = CASE
|
|
-- Strip last 10 digits (the local SIP suffix)
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) < 4
|
|
THEN NULL
|
|
-- 8 remaining digits = Danish number → prefix +45
|
|
WHEN (length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10) = 8
|
|
THEN '+45' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
-- Otherwise keep original + prefix
|
|
WHEN ekstern_nummer LIKE '+%'
|
|
THEN '+' || left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
ELSE left(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g'),
|
|
length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) - 10)
|
|
END
|
|
WHERE regexp_replace(ekstern_nummer, '[^0-9]', '', 'g') LIKE '%1857220892'
|
|
AND length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) > 15;
|
|
|
|
SELECT concat('Retter ', count(*), ' rækker') AS resultat
|
|
FROM telefoni_opkald
|
|
WHERE regexp_replace(ekstern_nummer, '[^0-9]', '', 'g') LIKE '%1857220892'
|
|
AND length(regexp_replace(ekstern_nummer, '[^0-9]', '', 'g')) > 15;
|
|
|
|
COMMIT;
|