Files
WebChecker/USER_MANUAL.md
T
2026-04-24 07:15:48 -04:00

689 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Website Checker — User Manual
**Version 1.0** | For all users
---
## Table of Contents
1. [Getting Started](#1-getting-started)
2. [Logging In](#2-logging-in)
3. [My Shift — The Daily Checklist](#3-my-shift--the-daily-checklist)
4. [Checking Off a Website](#4-checking-off-a-website)
5. [Site Health Indicator](#5-site-health-indicator)
6. [Viewing Credentials](#6-viewing-credentials)
7. [Shift Reminder Notifications](#7-shift-reminder-notifications)
8. [AI Document Summary](#8-ai-document-summary)
9. [Evaluation Criteria](#9-evaluation-criteria)
10. [Analysis History](#10-analysis-history)
11. [Change Password](#11-change-password)
12. [Admin — Dashboard](#12-admin--dashboard)
13. [Admin — Website Management](#13-admin--website-management)
14. [Admin — User Management](#14-admin--user-management)
15. [Admin — Shift Management](#15-admin--shift-management)
16. [Admin — Reports](#16-admin--reports)
17. [Admin — Activity Log](#17-admin--activity-log)
18. [Admin — Email Report Settings](#18-admin--email-report-settings)
19. [Admin — AI Summary Settings](#19-admin--ai-summary-settings)
20. [Session Timeout](#20-session-timeout)
21. [Keyboard Shortcuts](#21-keyboard-shortcuts)
22. [Troubleshooting](#22-troubleshooting)
---
## 1. Getting Started
Website Checker is a desktop application that helps your team systematically
verify that assigned websites are operational each shift. Every team member
logs in, checks each site, and marks it complete. Administrators can see
team-wide progress in real time, run reports, and receive automated daily emails.
**Who sees what:**
| Feature | Regular User | Administrator |
|---|---|---|
| My Shift checklist | ✔ | ✔ |
| AI Document Summary | ✔ | ✔ |
| Change Password | ✔ | ✔ |
| Dashboard & Reports | — | ✔ |
| Manage Websites / Users / Shifts | — | ✔ |
| Email Settings & Activity Log | — | ✔ |
| AI API key & model selection | — | ✔ |
| Add/Edit Evaluation Criteria | — | ✔ |
---
## 2. Logging In
1. Launch the application by running `app.py` (or the desktop shortcut).
2. Enter your **Username** and **Password**.
3. Press **Enter** or click **Sign In**.
**If your account is locked:** After 5 failed attempts your account is locked
for 15 minutes. The login screen shows a countdown timer. Wait for it to reach
zero and try again with the correct password.
**If you forget your password:** Contact your administrator. They can reset it
from the User Management panel.
---
## 3. My Shift — The Daily Checklist
After logging in, regular users land on the **My Shift** panel. This shows all
websites you are expected to check during your current shift today.
### Layout
```
┌─────────────────────────────────────────────────────┐
│ My Shift [ Search... ] [All ▾] [✓ Select All Unchecked] │
├──────────────────────────────────────────────────────┤
│ ● [✓] Portal ↗ Open 🔑 Credentials │
│ https://portal.gov Shift: Morning │
│ Note: Check dashboard for alerts [Edit] │
├──────────────────────────────────────────────────────┤
│ ● [ ] Vendor Hub ↗ Open 🔑 Credentials │
│ https://vendor.example.com Shift: Morning │
├──────────────────────────────────────────────────────┤
│ Progress: ████████░░ 1 / 2 checked (50%) │
└─────────────────────────────────────────────────────┘
```
### Elements
- **Colour dot** — health status of the site (see §5)
- **Checkbox** — tick to mark the site as checked for today
- **Site name / URL** — click either to open the site in your browser
- **🔑 Credentials** — appears only if credentials are stored; click to view
- **Note field** — free-text area to leave a per-site note for the shift
- **Progress bar** — shows how many sites you have checked vs total
### Filtering and search
- **Search box** — type any part of a site name or URL to filter the list
- **Dropdown filter** — choose All, Checked, or Unchecked
- **✓ Select All Unchecked** — ticks all currently visible unchecked sites at once
---
## 4. Checking Off a Website
1. Open the website (click the name or URL).
2. Verify the site is operational.
3. Tick the **checkbox** on the site card, or press **Space** when the card is focused.
4. The checkbox turns green and the progress bar advances.
To **uncheck** a site, tick the checkbox again. You can re-check as many times
as needed throughout the shift.
**Weekly sites** appear only once per week. Once checked, they disappear from
your list until the following Monday.
---
## 5. Site Health Indicator
The coloured dot next to each site name is automatically refreshed in the
background when you open the checklist.
| Colour | Meaning |
|---|---|
| 🟢 Green | Site is reachable and responding quickly (under 3 seconds) |
| 🟡 Amber | Site is reachable but slow (over 3 seconds), OR responding with a 4xx access restriction |
| 🔴 Red | Site is unreachable — network error or server failure |
**Amber (restricted)** means the server responded — it is online — but rejected
the automated probe request. This is normal for sites that block automated checks.
Open the site manually to verify it is actually working.
Hover over the dot to see the tooltip with exact response time and status.
---
## 6. Viewing Credentials
If your administrator has stored login credentials for a site, a **🔑 Credentials**
button appears on that site's card.
1. Click **🔑 Credentials**.
2. A popup appears showing all stored credential sets for that site.
3. Click **📋** next to the username to copy it to the clipboard (flashes "Copied!" for 2 seconds).
4. Click **📋** next to the password to copy it (also clears the clipboard automatically after 15 seconds).
5. Click **👁** to reveal the password on screen.
The popup closes when you click outside it or press Escape.
---
## 7. Shift Reminder Notifications
If you have unchecked sites when your shift is about to end, the app sends a
desktop notification listing all unchecked sites together.
- The reminder fires **15 minutes before your shift end time** by default.
- One notification covers all unchecked sites in the shift — you will not receive
a separate popup per site.
- Example: *"3 sites unchecked: Portal, Vendor Hub, SAM.gov. Shift ends at 17:00 (15 min remaining)."*
If the desktop notification system is unavailable, an in-app toast message appears
in the bottom-right corner instead.
---
## 8. AI Document Summary
The **🤖 AI Summary** panel lets you upload government solicitation documents
and receive an AI-generated extraction of key procurement fields, plus an
alignment recommendation based on your company's evaluation criteria.
### Uploading documents
1. Click ** Add Files** in the left pane.
2. Select one or more files. Supported formats:
- PDF (`.pdf`)
- Word documents (`.docx`, `.doc`)
- Excel spreadsheets (`.xlsx`, `.xls`)
- Text files (`.txt`, `.md`, `.csv`)
3. The file list shows each file name and size.
4. To remove a file, right-click it and choose **Remove selected**, or use **✕ Clear All**.
### Running the analysis
1. Click **✨ Analyze with AI**.
2. The status bar shows progress as each file is read and the AI processes them.
3. Results appear in the right pane when complete.
### What the AI extracts
For each document, the AI identifies and labels:
| Field | Example |
|---|---|
| Solicitation Number | W912DR-25-R-0042 |
| Solicitation Type | RFP, RFQ, IFB |
| Set-Aside | Small Business, 8(a), N/A |
| Description / Scope of Work | Summary of required services |
| Work Site / Location | Full address of performance site |
| Pre-Proposal Conference | Date, time, address, mandatory or optional |
| Point of Contact (POC) | Name, phone, email |
| Total Square Footage | If applicable |
| Driving Distance & Travel Time | From office to conference/site (AI estimate) |
| Last Day to Submit Questions | Date |
| Due Date & Time | Submission deadline |
| Other Notable Requirements | Bonding, insurance, certifications |
After the per-document breakdown, the AI produces an **Overall Summary** with:
- **A. Scope of Work** — what is being requested and key performance requirements
- **B. Contract Period** — base period, option years, anticipated start date
- **C. Proposal Submission Requirements** — documents, formatting, evaluation criteria
- **D. Key Deadlines & Action Items** — all critical dates in chronological order
### Saving and copying results
- **📋 Copy** — copies the full output text to the clipboard
- **💾 Save as TXT** — saves the output to a text file you choose
- **🗑 Clear** — resets the output panel
---
## 9. Evaluation Criteria
When your administrator has configured evaluation criteria, the AI automatically
assesses the solicitation against each one and issues a recommendation.
### The criteria panel
The **📋 Evaluation Criteria** panel sits below the page header and is collapsible.
It shows all currently configured criteria with their title, description, sort order,
and active status.
Criteria marked **✔ Active** are included in every AI analysis you run.
Criteria marked **✘ Inactive** are shown for reference but not sent to the AI.
### The alignment verdict
When active criteria exist, the analysis output includes a colour-coded banner:
| Banner | Meaning |
|---|---|
| ✅ Green — PURSUE | The opportunity strongly aligns with your criteria |
| 🚫 Red — PASS | The opportunity fails one or more key criteria |
| ⚠️ Amber — UNCLEAR | Insufficient information in the documents to decide |
Below the banner, the AI lists each criterion and explains whether the solicitation
**MEETS**, **DOES NOT MEET**, or **PARTIALLY MEETS** it, citing specific details
from the documents. It ends with a 2-3 sentence executive summary.
### For administrators — managing criteria
Click ** Add Criterion** in the criteria panel header to open the Add Criterion dialog.
| Field | Description |
|---|---|
| Title * | Short name shown in the treeview (e.g. "Geographic Range") |
| Description * | Full criterion text sent to the AI — be specific |
| Sort Order | Lower numbers appear first |
| Active | Uncheck to exclude from AI analysis without deleting |
**Tips for writing effective criteria:**
- Be specific and measurable: *"Work site must be within 50 miles of Falls Church, VA"*
is better than *"Site must be nearby."*
- One criterion per idea — don't combine multiple requirements in one description.
- The description has a **500-character soft limit**. Longer descriptions consume
token budget that would otherwise go to the document content.
To **edit** a criterion, select it in the list and click **✎ Edit**, or double-click the row.
To **delete** a criterion, select it and click **✕ Delete**. You will be asked to confirm.
---
## 10. Analysis History
Every analysis you run is automatically saved. Click the **🕑 History** tab to review past results.
### History tab features
- **Treeview** — shows Date/Time, Files analyzed, Model used, and Verdict for each analysis.
Administrators see all users' analyses; regular users see only their own.
- **Verdict filter** — radio buttons let you filter by All / PURSUE / PASS / UNCLEAR / No verdict.
- **Detail strip** — selecting a row shows the criteria snapshot and other metadata at the bottom.
- **↻ Refresh** — reloads the history from the database.
- **🔍 View Result** — loads the full AI output for the selected analysis back into the
Analyze tab output panel, including the verdict banner. You can then copy or save it.
- **Double-click** on any row does the same as View Result.
The History tab refreshes automatically whenever you switch to it.
---
## 11. Change Password
All users can change their own password at any time.
1. Click **Change Password** in the sidebar.
2. Enter your **Current Password**.
3. Enter and confirm your **New Password**.
4. Click **Change Password**.
Password requirements:
- At least 8 characters
- At least one uppercase letter
- At least one digit (09)
- At least one special character (`!@#$%^&*` etc.)
A strength indicator shows how strong the new password is as you type.
---
## 12. Admin — Dashboard
The Dashboard is the administrator's home screen. It refreshes automatically every 60 seconds.
### KPI cards (top row)
| Card | Description |
|---|---|
| Active Users | Number of users with active accounts |
| Sites Checked Today | Total site checks recorded today across all users |
| Team Completion | Percentage of expected checks completed today |
| Unchecked Sites | Number of sites not yet checked today |
### Per-user progress table
Shows each active user with their checked count, total expected sites today, and
completion percentage. Completion is colour-coded:
- 🟢 Green — 100% complete
- 🟡 Amber — partially complete
- 🔴 Red — not started
Users with no shifts scheduled today are excluded from the table automatically.
---
## 13. Admin — Website Management
Navigate to **Websites** in the sidebar.
### Adding a website
1. Click ** Add Website**.
2. Fill in the required fields:
| Field | Description |
|---|---|
| Name * | Display name shown on user dashboards |
| URL * | Full web address (https:// will be added if omitted) |
| Check Type | Daily (shown every shift day) or Weekly (once per week) |
| Visibility | All Users or Assigned Only |
| Note | Optional note shown on the user's site card |
3. If **Assigned Only** is selected, a user assignment panel appears — tick the users who should see this site.
4. Optionally expand **🔑 Credentials** to add login credentials for the site.
5. Click **Save**.
### Credentials
Each website can have multiple credential sets (e.g. Admin login, Read-only login).
Each set has a **Label**, **Username**, and **Password**.
Passwords are stored encrypted and are only revealed when the user clicks 👁 in the credentials popup.
### Editing a website
Select a website in the list and click **✎ Edit**, or double-click the row.
All fields can be changed, including credentials.
### Deactivating / deleting a website
- **Deactivate** (recommended): Uncheck **Active** in the edit dialog. The site is hidden from
users but historical check records are preserved.
- **Delete**: Select and click **✕ Delete**. This is permanent.
---
## 14. Admin — User Management
Navigate to **Users** in the sidebar.
### Adding a user
1. Click ** Add User**.
2. Fill in Username, Full Name, Role (Admin or User), and Password.
3. Click **Save**.
### Editing a user
Select a user and click **✎ Edit** or double-click. You can change their name,
role, active status, and set a new password.
### Resetting a password
1. Select a user and click **🔑 Reset Password**.
2. Confirm the prompt.
3. A secure dialog appears with a randomly generated 16-character temporary password.
4. Click **📋 Copy** to copy it to the clipboard (the clipboard is wiped after 30 seconds).
5. Share the temporary password with the user securely (e.g. by phone).
6. The dialog auto-closes after 120 seconds.
7. The user should change this password immediately after logging in.
**Notes:**
- You cannot reset your own password here — use Change Password in the sidebar.
- The last active administrator account cannot be deleted.
### Deactivating vs deleting
- **Deactivate** (is_active = off): The user cannot log in but their records are preserved.
- **Delete**: Permanent. Use deactivate first if you want to keep audit history.
---
## 15. Admin — Shift Management
Navigate to **Shifts** in the sidebar.
### What is a shift?
A shift defines which websites a group of users should check, on which days of the week,
and during which time window. A user can belong to multiple shifts.
### Adding a shift
1. Click ** New Shift**.
2. Fill in:
| Field | Description |
|---|---|
| Shift Name | e.g. "Morning Team", "Weekend Check" |
| Days of Week | Tick each day this shift runs |
| Start Time | When the shift begins (HH:MM) |
| End Time | When the shift ends — used for reminder notifications |
| Note | Optional internal note |
3. On the **Users** tab, tick the users assigned to this shift.
4. On the **Websites** tab, tick the websites this shift should check (drag to reorder).
5. Click **Save**.
### Show inactive shifts
By default, deactivated shifts are hidden. Tick **Show inactive** in the toolbar
to display them (shown in grey).
### Exporting shifts to PDF
Click **⬇ Export PDF** to generate a printable PDF showing all active shifts,
their assigned users, and their website lists.
---
## 16. Admin — Reports
Navigate to **Reports** in the sidebar. There are four tabs.
### Shift Detail
Shows every check-in for a specific user and date range.
Select a user, set a date range, and click **Generate**.
Export to CSV or Excel with the export buttons.
### Unchecked Sites
Shows websites that were NOT checked on a given date, scoped to each user's actual shift.
If no date is selected, defaults to today.
Filter by a specific user or view all users.
### Summary
Shows per-user per-day statistics: sites checked, total expected, and completion percentage.
Total is based on that user's actual shift assignment for that day — not a global site count.
### Completion Chart
A bar chart showing today's completion percentage per user.
Bars are colour-coded: green ≥ 100%, amber ≥ 50%, red < 50%.
---
## 17. Admin — Activity Log
Navigate to **Activity Log** in the sidebar.
The log shows every significant action taken in the system, including:
logins, logouts, session timeouts, account lockouts, all create/edit/delete operations,
password changes and resets, website checks, exports, email setting changes,
and AI criterion changes.
Each entry shows: timestamp, acting user, action type, affected record, and detail notes.
Use the search bar to filter by username, action type, or any text in the detail field.
Use the date range pickers to narrow the time window.
---
## 18. Admin — Email Report Settings
Open **Settings** (gear icon in sidebar) → **Email Report Settings**, or click the
email icon if visible.
### Configuration fields
| Field | Description |
|---|---|
| Enable daily emails | Master on/off switch |
| SMTP Host | Your mail server address |
| Security | STARTTLS (port 587), SSL/TLS (port 465), or None (port 25) |
| SMTP Port | Auto-filled when Security mode is selected; can be changed manually |
| SMTP Username | Usually your full email address |
| SMTP Password | For Gmail, use an App Password — not your Gmail password |
| Recipients | Comma-separated email addresses to receive the report |
| Send Time | HH:MM (24-hour) — the time the report is sent each day |
### Testing the connection
**🔌 Test Connection** runs a step-by-step diagnostic:
1. **DNS** — can the server name be resolved?
2. **TCP** — can a connection be made to the port?
3. **TLS** — does the TLS/security handshake succeed?
4. **Auth** — are the username and password accepted?
The status line reports exactly which step failed and what to check.
**📧 Send Test Email** sends a real test message to the configured recipients.
Use this to confirm full end-to-end delivery after the connection test passes.
### Common setups
**Office 365 / Exchange Online:**
- Security: STARTTLS
- Port: 587
- Username: full email address
- Password: your Microsoft account password or app password
**Gmail (Google Workspace):**
- Security: SSL / TLS
- Port: 465
- Username: full Gmail address
- Password: App Password (not your Gmail password)
→ Enable 2-Step Verification → myaccount.google.com/apppasswords
**Internal relay:**
- Security: None
- Port: 25
- Username/Password: may not be required
### What the daily report contains
The report email lists every active user who had shifts today, showing:
- Number of sites checked
- Total sites expected for their shift
- Completion percentage (colour-coded)
Users with no shift scheduled today are excluded, with a footnote showing the count.
---
## 19. Admin — AI Summary Settings
### Setting up the API key
1. Get a free API key at **https://console.groq.com** (no credit card required).
2. Open **🤖 AI Summary** in the sidebar.
3. Enter the API key in the **Groq API Key** field.
4. Select a model (see below).
5. Click **💾 Save Settings**.
The API key is stored encrypted on your machine and is never shared with other users.
### Available models
| Model | Best for |
|---|---|
| llama-3.3-70b-versatile | Best overall quality — recommended default |
| llama-3.1-8b-instant | Faster responses, slightly lower quality |
| gemma2-9b-it | Good alternative for shorter documents |
| mixtral-8x7b-32768 | Large context window for very long documents |
### Managing evaluation criteria
See §9 above for full details on adding, editing, and deleting criteria.
**Key points for admins:**
- Criteria are shared — all users' analyses use the same active criteria.
- Deactivating a criterion (unchecking Active) removes it from future AI prompts
without deleting it — useful for temporarily suspending a criterion.
- The full description text is saved in the audit log each time a criterion is updated,
so you can always reconstruct what the AI was evaluating against at any historical date.
---
## 20. Session Timeout
The application automatically signs you out after **30 minutes of inactivity**
(no mouse movement, key presses, or clicks).
One minute before timeout, a warning dialog appears. Click **Stay Signed In** to
reset the timer. If you don't respond, you are signed out and must log in again.
Any unsaved work is lost.
---
## 21. Keyboard Shortcuts
Available on the My Shift dashboard:
| Shortcut | Action |
|---|---|
| `Ctrl+F` | Focus the search box |
| `Ctrl+A` | Select all unchecked sites |
| `Ctrl+Enter` | Mark selected site as checked |
| `Space` | Toggle checkbox on focused site card |
| `Escape` | Clear search / deselect |
---
## 22. Troubleshooting
### I can't log in
- Check Caps Lock — passwords are case-sensitive.
- After 5 failed attempts, your account is locked for 15 minutes.
Wait for the countdown to finish and try again.
- Contact your administrator if you need a password reset.
### My shift shows no sites
- You may not be assigned to any active shift scheduled for today.
- Contact your administrator to verify your shift assignment and the days-of-week setting.
### The health dot is always red for a site
- The site may block automated probes (returns 4xx — shown as amber, not red).
- A red dot means a network error — the server is not responding at all.
- Check your internet connection. If other sites are green, the specific site may be down.
### The AI analysis fails with "401"
- Your Groq API key is invalid or expired.
- Log in to https://console.groq.com, generate a new key, and update it in AI Summary settings.
### The AI analysis says "No readable text found"
- The PDF may be a scanned image rather than a text-based PDF.
- Try using a version of the document that is copy-pasteable, or a Word/Excel version.
### Email test fails at Step 3 (TLS)
- You are using the wrong security mode for your mail server.
- Try switching from STARTTLS to SSL/TLS (port 465) or vice versa.
- Contact your IT department to confirm the correct SMTP settings.
### Email test fails at Step 4 (Auth)
- For Gmail/Google Workspace: you must use an **App Password**, not your regular password.
Go to myaccount.google.com/apppasswords to create one.
- For Office 365: your account may require Modern Authentication or an app password.
Contact your IT department.
### I can't see the Evaluation Criteria panel
- The panel is present for all users but may be collapsed. Click **▼ Expand** to open it.
### My analysis history is empty
- History is only saved for analyses run after the feature was deployed.
Earlier analyses are not retroactively added.
- Check that you are on the 🕑 History tab (not the ✨ Analyze tab).
- Click **↻ Refresh** to reload from the database.
### The app freezes during AI analysis
- The AI call runs in a background thread — the UI should remain responsive.
- If the app appears frozen, wait up to 60 seconds. Long documents take time to process.
- If it remains unresponsive, close and reopen the application. The analysis may have failed silently — check `app.log`.
---
*For technical issues not covered here, ask your system administrator to check `app.log`
in the application directory for detailed error messages.*