1.3 KiB
1.3 KiB
ADDED Requirements
Requirement: Fingerprint on scans
The tag page SHALL compute a lightweight browser fingerprint (UA, language, timezone, screen, platform hash) and include it with every scan POST and finder-contact POST. The scan SHALL store it in scans.fingerprint.
Scenario: Scan carries fingerprint
- WHEN the tag page scripts a scan POST
- THEN the request includes a fingerprint and the scan row stores it
Requirement: 24-hour per-device alert block
When a scan arrives with a fingerprint that was seen on an earlier scan within the last 24 hours, the system SHALL record the scan but SHALL NOT send an alert.
Scenario: Same device within 24 h
- WHEN a scan arrives with a fingerprint matching a scan from under 24 h ago
- THEN the scan is recorded with
alert_sent = falseand no SMS is sent
Scenario: Fresh device
- WHEN a scan arrives with a fingerprint not seen in the last 24 h
- THEN normal alert rules apply (an alert is sent if the throttle conditions permit)
Requirement: Contact path coverage
The finder-contact submission SHALL also be subject to the fingerprint block when a fingerprint is provided.
Scenario: Contact from a blocked device
- WHEN a contact submission carries a fingerprint seen within 24 h
- THEN the number is stored but no owner SMS is sent