User Tools

Site Tools


takeoutphotosanitizer:uncertain_reclassificatio_workflow_guide

This is an old revision of the document!


<!DOCTYPE makrdown>

# \_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 - Designed to support future expansion (albums, people, places)


# Step 0 – Create Operational Folders

Create:

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

These folders store operational metadata only.


# Step 1 – Export \_Uncertain List

``` powershell $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

``` powershell $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

``` powershell $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.1771820366.txt.gz · Last modified: by hyjeong