## GENERAL * refimgs need to be done via job_mgr: - have local FS chooser of ref img, do html file upload to b/e -> job mgr -> save it to reference_images// - remove refimg menu from top-level -> sub of Person (to view/mangage?) - from person create, allow upload ref img instead of create refimg menu item - make a thumbnail and store in refimg - work out face_recog. encodings store at this point - by default store ref img into above FS location - will require p.tag modification to move FS location - allow to also remove refimg from this view??? (simple X/bin icon overlay on thumb) - remove AI menu from top-level -> make a sub-of Person, and just have Match or AI (Fix BUG-41 and bits of BUG-43 & TODO: many ref imgs on create person should span multiple rows) * with any job, count logs, then commit per 100 log lines of a job (and then ditch the commit in import dir for this) * need AI job to: log amount matched, amount comparing too -> count should actually be total files in 'entries' (as we can select random entries to check) * allow rotate of image (permanently on FS, so its right everywhere) * improve photo browser -> view file, rather than just allowing browser to show image * 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 for --> 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