User Tools

Site Tools


takeoutphotosanitizer:uncertain_reclassificatio_workflow_guide

This is an old revision of the document!


_Uncertain Reclassification Workflow Guide

Generated on: 2026-02-23 04:00:02


Overview

This document describes a safe and extensible workflow for reclassifying files from the _Uncertain folder without modifying original SHA-256 hashes.

Core principles:

  • SHA-256 original file list remains untouched
  • Files are never edited (no EXIF rewrite, no re-save)
  • Reclassification is handled via external override records
  • Design ed to support future expansion (albums, people, places)

Step 0 -- Create Operational Folders

Create:

PhotoVault\
  _ops\
  _ops\reclass\
  _ops\note

s\

_ops\reclass{=tex}
PhotoVault_ops\notes{=tex}\

These folders store operational metadata only.


Step 1 -- Export _Uncertain List

$unc = "PhotoVault\Media\_Uncertain"
Get-ChildItem $unc -File -Recurse |
Select-Object FullName, Name, Length, LastWriteTime |
Export-Csv "PhotoVault\_ops\reclass\uncertain_review.csv" -NoTypeInformation -Encoding UTF8

Step 2 -- Manual Review

Open uncertain_review.csv in Excel.

Add two columns:

  • year_final
  • note

Fill only confident cases.

Save as:

PhotoVault_ops\reclass{=tex}\uncertain{=tex}_review_done.csv


Step 3 -- Create Year Override File

$in  = "PhotoVault\_ops\reclass\uncertain_review_done.csv"
$out = "PhotoVault\_ops\reclass\year_override.tsv"
 
Import-Csv $in | Where-Object { $_.year_final -match '^\d{4}$' } |
ForEach-Object {
    $h = (Get-FileHash $_.FullName -Algorithm SHA256).Hash
    "{0}`t{1}`t{2}`t{3}" -f $h, $_.year_final, (Get-Date -Format "yyyy-MM-dd"), ($_.note -replace "`t"," ")
} | Set-Content $out -Encoding UTF8

Format:

sha256<TAB>{=html}year_final<TAB>{=html}date<TAB>{=html}note


Step 4 -- Move Files to Year Folder

$in  = "PhotoVault\_ops\reclass\uncertain_review_done.csv"
$rootMedia = "PhotoVault\Media"
$log = "PhotoVault\_ops\reclass\move_log.tsv"
 
Import-Csv $in | Where-Object { $_.year_final -match '^\d{4}$' } |
ForEach-Object {
 
    $src = $_.FullName
    $yy  = $_.year_final
    $dstDir = Join-Path $rootMedia $yy
    if (!(Test-Path $dstDir)) { New-Item -ItemType Directory -Path $dstDir | Out-Null }
 
    $dst = Join-Path $dstDir $_.Name
 
    if (Test-Path $dst) {
        $h8 = (Get-FileHash $src -Algorithm SHA256).Hash.Substring(0,8)
        $dst = Join-Path $dstDir ("{0}_{1}" -f $h8, $_.Name)
    }
 
    Move-Item -LiteralPath $src -Destination $dst
 
    "{0}`t{1}`t{2}`t{3}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $src, $dst, "moved" |
      Add-Content $log -Encoding UTF8
}

Optional -- Future Annotation File

Create:

PhotoVault_ops\notes{=tex}\annotations{=tex}.tsv

Format:

sha256<TAB>{=html}key<TAB>{=html}value<TAB>{=html}date

Example:

AAA… place Jeju Seongsan 2026-02-23 AAA… people Mom;Dad 2026-02-23

This allows future expansion to albums, people, places without changing the core index.


Operating Loop

  1. Review _Uncertain
  2. Fill year_final
  3. Generate year_override.tsv
  4. Move files
  5. Repeat until _Uncertain shrinks

Design Philosophy

  • Files are immutable objects
  • SHA-256 is permanent identity
  • Reclassification is metadata
  • Albums and annotations are relationship layers

End of document.

takeoutphotosanitizer/uncertain_reclassificatio_workflow_guide.1771820647.txt.gz · Last modified: by hyjeong