Platform

DICT AP Report

DICT asks for one row per access point per day with the reason it was offline. The NOC already knows both; this page generates that sheet instead of anyone typing it.

What it is

Every NOC project has DICT AP Report in its menu. Pick a day (it opens on yesterday, Philippine time), and you get one row for every access point on the project: its status at the end of that day, how many hours it was polled offline, and — for an offline AP — the reason in DICT's words, the helpdesk ticket behind it, the next action and its due date. Export XLSX writes the whole day, every AP, in DICT's column order.

Nothing on this page is typed by hand

Status comes from the hourly device polls.
The reason comes from the site's helpdesk ticket, or from one of the fixed rules below.
Every row shows which — the Source column — so a wrong reason is fixed on the ticket, not on the sheet.

Where each column comes from

ColumnSource
Site Code / Site Name / MunicipalityThe site group (groups): its DICT site code, name and locality.
AP Name / AP MACThe device record (devices, type AP). Gateways, routers and switches are not on the sheet.
StatusThe AP's status in the last hourly poll of the day (deviceUptimeHourlyLogs). Vendor statuses are normalised first — Huawei reports codes, not words.
Hours downHow many of the day's hourly polls found the AP offline, out of 24. When the collector missed hours, the Source column says how many went unpolled and when the AP was last polled, and a line above the table says how many APs were short; a missed hour counts as neither up nor down.
Reason OfflineThe cause code on the site's ticket, in DICT's words; or a rule, when there is no ticket. See below.
Ticket No. / Action Taken / ETA / DICT RefThe newest helpdesk ticket on the site that was open at any point that day: its id, next action, next-action due date and DICT reference number.

How the reason is decided

Tickets are raised per site. An offline AP takes its reason from the site's ticket if the site had one that day — still open, or closed on or after the day began. The cause code is translated as follows; a ticket whose cause is still UNK reads Under investigation.

Cause codeReason on the sheet
SCHED-OFFScheduled shutdown (confirmed by site)
NMS-DISCNMS discrepancy — online on provider cloud
PWR-COMCommercial power outage
PWR-SITESite power (UPS / breaker / unplugged)
WX-RAINRain or flooding
WX-STORMTyphoon / severe weather
SAT-OBSStarlink obstruction / rain fade
FIB-CUTFiber or cable cut
CAR-FAULTISP outage
PWR-SOLARSolar power damage
EQP-FAILHardware failure
AP-DOWNAP fault — site online
CFG-CHGConfiguration change
SITE-ACCSite access unavailable
CLI-SIDEClient-side equipment or action
MNT-PLNPlanned maintenance
SELF-RECRecovered on its own

When the site has no ticket covering the day, one of these applies, in this order:

Reason on the sheetWhen
Scheduled off-hoursThe site is on a schedule and was off at the cut-off.
AP fault — site onlineOther APs at the site are up, so this is an AP-level fault; tickets are raised per site.
Site outage — ticket pendingThe whole site was down all day with no ticket on file. This row is the NOC's to-do list.
Under observation (<24 h)The site went down during this day and has no ticket yet — inside the playbook's 24-hour hold.

What the NOC has to do

The report is only as right as the tickets. Before exporting a day, the rows that say Site outage — ticket pending are the to-do list: raise the ticket, give it a real cause code. Rows that say Under investigation have a ticket with UNK — replace it when the cause is known. A site that is off on purpose should carry the Scheduled tag in its settings, so it stops showing as an outage every day.

Closed tickets only count on the day they were closed

A ticket closed last week does not explain an outage today.
If a site drops again it needs a new ticket — the report says “ticket pending” until it has one.

Reading the page

The row of pills above the table is the day's headcount, the way the NOC sites table does it: each pill counts sites first and the AP rows behind them, and clicking one filters the table. Cause code is the sites whose ticket carries a real cause; Under investigation is a ticket still on UNK; Scheduled is off-hours on a SCHEDULED site; No ticket is everything offline with neither — and when it is selected the split underneath (ticket pending, under observation, AP fault on a site that is up) says which of those need a ticket filed. No data andNo site code only appear when there is something in them.

Column headers sort — one click sorts, a second flips it, and the footer offers the way back to site order. The table pages at 10, 25 or 50 rows; the export is never the page on screen, always the whole sheet. Site code and site name stay put while the rest of the table scrolls.

What counts as offline — the threshold

DICT has not yet said whether the sheet is what was down at the end of the day or anything down for more than some number of hours. Until it does, the Offline = control in the toolbar is that decision, and it is applied on the server so the page, the file and the API all mean the same thing:

  • Status at the cut-off (default) — an AP is offline when its last poll of the day was offline, however long it had been down. An AP that dropped for two hours at noon and came back is Online, with its hours down still in the sheet.
  • Down ≥ N h — an AP polled offline for at least N hours that day is on the sheet: Offline if still down at the cut-off, Recovered if back up (its reason comes from the site's ticket, or reads Recovered within the day). Everything shorter is Online — including an outage shorter than N that is still running at the cut-off; it is reported on the day it qualifies, and its Source column says "still down at the cut-off — under the threshold" in the meantime.

On a typical day the difference is not small: on the 458-site project, 347 APs were down at the end of 20 Sep 2026 and another 241 had been down for some hours and recovered. Which of those DICT wants is the question to settle with them.

Exporting for DICT

Export XLSX downloads one sheet named for the date, columns in DICT's order plus Hours Down, Hours Unpolled and Source at the end. TheAll APs / Offline only switch beside it decides what the file holds — every AP for a complete sheet, or just the offline rows — and is independent of the on-screen filter. CSV is the same rows. The column names and reason wording follow DICT's own sheet; when that changes, only the mapping in lib/dict-report-rules.ts changes.