Files
photoassistant/TODO

104 lines
4.5 KiB
Plaintext

## GENERAL
* create a new table file_face_refimg_link:
file_id, face_enc, ref_img (can be null)
* need AI code to:
scan for unknown faces, instead of storing array of all faces in FILE->FACES use table above one row per FILE & FACE with refimg_link as null to start
* when we do ai matching, we find all refimg is null (for a specific file) and match that
* need pa_job_mgr AI jobs to have low-level functions:
FindUnknownFacesInFile()
MatchRefImgWithUnknownFace()
Then create wrapper funcs:
MatchPersonWithFile()
for each ref img for person
MatchRefImgWithUnknownFace()
MatchPersonInDir()
for each file in Dir:
MatchPersonWithFile()
* then in UI:
allow right-click folders in folder view (at least for AI scan) for all files in Dir
allow right-click AI
for all persons
for individuals
(and can be on an individual file or an individual dir, or selected files / selected dir)
* fix up logging in general
* comment your code
* more OO goodness :)
## DB
* Need to think about...
file (image) -> has X faces, Y matches
X == Y (optim: dont scan again)
say X-Y == 1, then to optimise, we need to only check the missing
face... at the moment, the DB structure is not that clever...
(file_refimg_link --> file_refimg_link needs a face_num?)
* Dir can have date in the DB, so we can do Oldest/Newest dirs in Folder view
### BACKEND
* revisit SymlinkName() and make it simpler (see comment in shared.py)
* if you change paths in settings, then re-run Initialisation checks (for symlinks to new path names)
- this actively is crashing, added a file in storage2/ (no symlink), so job mgr crashed, and DB doesnt have the content until you make the symlink (via re-running job mgr)
-- started on some basic optimisations (commit logs every 100 logs, not each log)
- with debugs: import = 04:11, getfiledetails== 0:35:35
- without debugs: import == 04:03, getfiledetails == 0:35:36 -- not a sig diff
- with exifread & debug: import == 04:26
*** Need to use thread-safe sessions per Thread, half-assed version did not work
- would it be quicker/smarter to use md5 hash matching on import (and if
so, not re-do face* ) ???
need a manual button to restart a job in the GUI,
(based on file-level optims, just run the job as new and it will optim over already done parts and continue)
Future:
Admin
-> reset face_flag
AI
-> rescan <dir> for <person> --> can do this on new image only
(optimised to only scan has_unidentified_face)... BUT if you change
thresholds on AI, or we get a new/better one some day, then it can
all images with faces, or if we 'reset face_flag' rescan all images
Admin
-> delete old jobs / auto delete jobs older than ???
-> do I want to have admin roles/users?
### UI
??? ipads can't do selections and contextMenus, do I want to re-factor to cater for this?
file details is sort of crap - only works on import path
- probably better to have a different 'view', e.g. folders/flat/detailed
job management:
joblog needs to show only say 25 log lines (last?) by default and allow see start/end, page by page, and search
clear all jobs (via GUI)
clear old jobs? (via b/end?)
clear FE messages (at least dup ones on File data deletion) -- in backend
need to copy into here the jquery/fa files so we don't need internet to function
- for that matter run lightspeed against all this
timelineview? (I think maybe sunburst for large amounts of files, then maybe something more timeline-series for drilling in?)
(vertical timeline, date has thumbnails (small) horizontally along
a page, etc.?
https://www.highcharts.com/docs/chart-and-series-types/timeline-series
https://www.highcharts.com/demo/sunburst
https://www.highcharts.com/demo/heatmap
https://www.highcharts.com/demo/packed-bubble-split
### AI
* allow for threshold/settings to be tweaked from the GUI
- it would be good to then say, just run the scanner against this image or maybe this DIR, to see how it IDs ppl
### SORTER
* exif processing?
* location stuff - test a new photo from my camera out
-- image is in dir, need to look at exifread output