... В данной статье приведены примеры технических отчётов, которые сотрудники поддержки делают при решении задач - часто это короткие отчеты для каких-то специфичных кейсов. {info}Такие отчёты создаются при решении кейсов на уровне поддержки SLA4{info} {toc} h2. Примеры h3. Просмотр текущих прав доступа к типам адресных единиц для задачи SUP-632439 Выводит настроенные права доступа к справочнику "Типы адресных единиц" {code} select agp.id, ag.name, ap.codename from auth_permission ap left join AUTH_GROUP_PERMISSIONS as agp on agp.PERMISSION_ID = ap.id left join AUTH_GROUP as ag on ag.id = agp.group_id where ap.codename like 'modelperm_HomeTypeName%' order by agp.id {code} h3. Пояснение структуры хранения данных в справочнике адресов по задаче SUP-594716 # Основные данные (страна, улица, номер дома) хранятся в таблице HOMES # Основная таблица связана с таблицей типы адресных единицы (это строение, дом, микрорайон, улица, область или край и тд), название таблицы - HOME_TYPE_NAME # Еще есть служебное поле с типом записи справочника дома - нужно для верного построения дерева домов, таблица называется HOME_TYPES Ниже сам запрос и пример полученных данных {code:title=Запрос} select first 1 HOMES.ID "ID дома", HOMES.ZIP_CODE "Индекс", HOME_TYPE.NAME "Служебный тип", HOMES.COUNTRY "Страна", REGION_TYPE."FULL" "Тип региона", HOMES.REGION "Регион", CITY_TYPE."FULL" "Тип нас.пункта", HOMES.CITY "Нас. пункт", SETTLEMENT_TYPE."FULL" "Тип поселения", HOMES.SETTLEMENT "Поселение", STREET_TYPE."FULL" "Тип улицы", HOMES.STREET "Улица", S_NUMBER_TYPE."FULL" "Тип строения", HOMES.S_NUMBER "Номер строения", KLADR_ID "ID в ФИАС", UNRESTRICTED_VALUE "Адрес строкой" from HOMES left join HOME_TYPES as HOME_TYPE on HOMES.HOME_TYPES_ID=HOME_TYPE.ID left join HOME_TYPE_NAME as CITY_TYPE on HOMES.CITY_TYPE_ID=CITY_TYPE.ID left join HOME_TYPE_NAME as DISTRICT_TYPE on HOMES.DISTRICT_TYPE_ID=DISTRICT_TYPE.ID left join HOME_TYPE_NAME as REGION_TYPE on HOMES.REGION_TYPE_ID=REGION_TYPE.ID left join HOME_TYPE_NAME as SETTLEMENT_TYPE on HOMES.SETTLEMENT_TYPE_ID=SETTLEMENT_TYPE.ID left join HOME_TYPE_NAME as STREET_TYPE on HOMES.STREET_TYPE_ID=STREET_TYPE.ID left join HOME_TYPE_NAME as S_NUMBER_TYPE on HOMES.S_NUMBER_TYPE_ID=S_NUMBER_TYPE.ID left join HOME_TYPE_NAME as S_LITER_TYPE on HOMES.S_LITER_TYPE_ID=S_LITER_TYPE.ID order by HOMES.ID desc {code} || Пример данных || | ID дома | 2409 | | Индекс | 665831 | | Служебный тип | Строение | | Страна | Россия | | Тип региона | область | | Регион | Иркутская | | Тип нас.пункта | город | | Нас. пункт | Ангарск | | Тип поселения | микрорайон | | Поселение | Байкальск | | Тип улицы | улица | | Улица | Торговая | | Тип строения | дом | | Номер строения | 10 | | ID в ФИАС | 3800000400010560005 | | Адрес строкой | 665831, Иркутская обл, г Ангарск, мкр Байкальск, ул Торговая, д 10 | h3. Дубли реквизитов, задача SUP-645914 Отчёт находит абонентов с дублями [реквизитов|CarbonBilling:Реквизиты]. Абоненту можно добавить несколько экземпляров одного и того же реквизита (например, если нужно добавить несколько телефонов или файлов). Но в некоторых случаях это может создавать проблемы - например, при интеграции с СОРМ. Отчёт покажет какие реквизиты у каких абонентов задублированы. Последнее текстовое поле нужно поправить "под себя" - укажите там IP-адрес Вашего биллинга вместо 10.0.0.1 {code} select * from (select count(*) cnt, ua.name attr_name, av.attribute_id attr_id, av.abonent_id abon_id, a.name abon_name, 'http://10.0.0.1:8082/admin/Abonents/' || av.abonent_id || '/?tab=tab1147' url_to_abon_attrs from ATTRIBUTE_VALUES av join USER_ATTRIBUTES ua on av.attribute_id=ua.attribute_id join abonents a on av.abonent_id=a.id group by 2,3,4,5,6) where cnt>1 order by 4,5,1 desc {code} h3. Учётные записи с логином равным номеру договора другого абонента, задача SUP-650800 При создании абонента, создаётся и учётная запись с логином соответствующим номеру договора, поэтому маловероятно что такой логин будет использоваться у како-то другого абонента. Тем неменее, такую ситуацию можно воспроизвести при интеграции IPTV, когда отдельная услуга создаёт учетную запись, в результате "второму" абоненту не будет добавлена новая учетная запись, а [система мониторинга|http://docs.carbonsoft.ru/51019784#Системамониторинга-checkerrorworker.sh] создаст автозаявку о проблеме. Чтобы проблема не возникала, лучше не создавать ситуацию когда номер договора соответствует логину учетной записи другого абонента. Отчёт позволит найти таких абонентов. {code:title=Отчёт покажет проблемных абонентов}select u.abonent_id, u.login, a.id, a.contract_number from users u join abonents a on u.login=a.contract_number and u.abonent_id<>a.id where a.is_folder=0{code} {code:title=Отчёт покажет количество проблемных абонентов} select count(*) from users u join abonents a on u.login=a.contract_number and u.abonent_id<>a.id where a.is_folder=0{code} h3. Отчет со списком абонентов, подключивших оповещение через Telegram. SUP-651766 {code:title=Номер договора, ФИО, ID}select A.CONTRACT_NUMBER as "Номер договора", A.Name as "ФИО", TLG.ATTRIBUTE_VALUE as "ID Telegram" from ABONENTS A left join ATTRIBUTE_VALUES TLG on TLG.ABONENT_ID=A.ID and TLG.ATTRIBUTE_ID=1014 where A.is_folder=0 and A.deleted=0 and TLG.ATTRIBUTE_VALUE!=0{code} h3. Количество точек подключения по адресам SUP-633846 Отчёт покажет только адреса, на которых есть хотя бы одна точка подключения. {code} select count(*), h.street "Улица", h.s_number "Номер дома", h.id "ID дома" from connection_points cp join homes h on cp.home_id=h.id group by 2,3,4 order by 3,4 {code} h3. Точки подключения по выбранному адресу SUP-633846 Отчёт покажет только точки подключения, в которых выбран коммутатор и порт {code} select cp.id "ID точки п.", case when coalesce(sp.name,'')<>'' then sp.name ||', ' || uf_ip2string(sw.ip) when coalesce(sp.num,-100)<>-100 then sp.num ||', ' || uf_ip2string(sw.ip) else '' end "Коммутатор/порт", cp.socket "Розетка", '(ID ' || h.id ||'), ' || h.street ||', ' || h.s_number ||', ' || cp.flat "Адрес", case when cp.abonent_id is not null then (select a.id || ' ' || a.name from abonents a where a.id=cp.abonent_id) when cp.user_id is not null then (select u.id || ' ' || u.login from users u where u.id=cp.user_id) else 'Свободно' end "Кем занято" from connection_points cp join homes h on cp.home_id=h.id join switch_ports sp on cp.switch_p_id=sp.id join switch sw on sp.switch_id=sw.id where cp.home_id = ':Дом|select[Homes,home_types_id=6]$' order by h.id,cp.flat {code} h3. Проверка дублей портов SUP-633846 Порты заведённые с одним наименованием более одного раза {code} select * from (select count(*) cnt, sp.switch_id, sp.name from switch_ports sp where coalesce(name,'')<>'' group by sp.switch_id, sp.name ) where cnt>1 order by 1 desc {code} h3. Транки операторов SUP-246480 Отчёт покажет настройку транков в услугах операторов для учёта [межоператороского трафика|CarbonBilling:Перерасчет межоператорского трафика]. {code}select distinct a.name "Оператор", coalesce(u.name,'Нет услуги') "Услуга", coalesce(vt.name,'') "Тип трафика", iif(uu.id is not null,voip_operator_match_format,'оттсутствуют') "Транки" from abonents a join users_usluga uu on a.id=uu.abonent_id and voip_operator_match_format<>'' left join usluga u on uu.usluga_id=u.id left join v_type vt on u.voip_v_type_id=vt.id where a.category_id=2 and a.id>2
|