04/23 Enhance app functionalities
This commit is contained in:
@@ -131,9 +131,10 @@ One row per user per site per day (upserted). `user_note` optional.
|
||||
|
||||
### activity_log
|
||||
`action` codes: LOGIN, LOGOUT, SESSION_TIMEOUT, ACCOUNT_LOCKED, CREATE/UPDATE/DELETE_USER,
|
||||
CHANGE_PASSWORD, CHANGE_PASSWORD_FAIL, CREATE/UPDATE/DELETE_WEBSITE, ADD/REMOVE_CREDENTIAL,
|
||||
CREATE/UPDATE/DELETE_SHIFT, CHECK_WEBSITE, UPDATE_NOTE, EXPORT_CSV, EXPORT_EXCEL,
|
||||
EXPORT_SHIFT_PDF, UPDATE_EMAIL_SETTINGS.
|
||||
CHANGE_PASSWORD, CHANGE_PASSWORD_FAIL, RESET_PASSWORD, CREATE/UPDATE/DELETE_WEBSITE,
|
||||
ADD/REMOVE_CREDENTIAL, CREATE/UPDATE/DELETE_SHIFT, CHECK_WEBSITE, UPDATE_NOTE,
|
||||
EXPORT_CSV, EXPORT_EXCEL, EXPORT_SHIFT_PDF, UPDATE_EMAIL_SETTINGS,
|
||||
CREATE/UPDATE/DELETE_AI_CRITERION.
|
||||
|
||||
### shifts
|
||||
`days_of_week` is a digit string using MySQL DAYOFWEEK: 1=Sun 2=Mon 3=Tue 4=Wed 5=Thu 6=Fri 7=Sat.
|
||||
@@ -144,6 +145,30 @@ E.g. "23456" = Mon–Fri. Queried with `LOCATE(DAYOFWEEK(CURDATE()), days_of_wee
|
||||
### login_attempts: username, attempted_at, ip_address (indexed)
|
||||
### website_users (junction): (website_id, user_id) PK — for visibility='assigned'
|
||||
|
||||
### ai_criteria
|
||||
Stores evaluation criteria used by the AI to assess opportunity alignment.
|
||||
| Column | Type | Notes |
|
||||
|---|---|---|
|
||||
| id | INT PK AUTO | |
|
||||
| title | VARCHAR(200) | Short label |
|
||||
| description | TEXT | Full criterion text sent to the AI |
|
||||
| is_active | TINYINT(1) | Inactive criteria excluded from AI prompt |
|
||||
| sort_order | INT | Controls display and prompt ordering |
|
||||
| created_by | INT FK users SET NULL | |
|
||||
|
||||
### ai_analysis_log
|
||||
Persists every AI analysis result for history and audit purposes.
|
||||
| Column | Type | Notes |
|
||||
|---|---|---|
|
||||
| id | INT PK AUTO | |
|
||||
| user_id | INT FK users SET NULL | |
|
||||
| file_names | TEXT | Comma-separated filenames analyzed |
|
||||
| model | VARCHAR(100) | Groq model used |
|
||||
| verdict | ENUM('PURSUE','PASS','UNCLEAR') NULL | NULL when no criteria active |
|
||||
| criteria_snapshot | TEXT NULL | Active criteria text at time of analysis |
|
||||
| summary_text | MEDIUMTEXT | Full AI response |
|
||||
| analyzed_at | DATETIME | |
|
||||
|
||||
---
|
||||
|
||||
## 5. Module Details
|
||||
@@ -224,6 +249,8 @@ Key internals:
|
||||
- "🔑 Show Credentials" / "🔒 Hide Credentials" toggle button
|
||||
- Auto-expands when editing a site that already has saved credentials
|
||||
- "+ Add Credential" auto-expands the section if collapsed
|
||||
- **Bug fixed:** `_on_visibility_change` previously used `before=self.creds_container`
|
||||
which crosses a widget parent boundary causing a TclError; corrected to `before=self._cred_body`
|
||||
|
||||
### views/user_dashboard_view.py
|
||||
Key internals:
|
||||
@@ -330,8 +357,9 @@ Websites and Shifts: is_active=0. Users: hard-delete (admin can deactivate first
|
||||
|
||||
6. Weekly site logic uses YEARWEEK(..., 1) (ISO week, Monday start).
|
||||
|
||||
7. The email scheduler last_sent_date is in-memory — resets on restart.
|
||||
A production deployment should persist it to the DB.
|
||||
7. The email scheduler `last_sent_date` is now persisted to `config.ini`
|
||||
`[email] last_sent_date` (ISO format). A restart after the configured
|
||||
`send_time` will not re-send the report on the same day.
|
||||
|
||||
8. All log messages use ASCII only (hyphens not em-dashes/arrows) to prevent
|
||||
cp1252 UnicodeEncodeError on Windows consoles.
|
||||
|
||||
Reference in New Issue
Block a user