inou/doc-processor/restore/restore.go

113 lines
6.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
"inou/lib"
"os"
"path/filepath"
)
var mapping = []struct {
uuid string
category string
filename string
}{
{"490e392e-fc3c-4cc0-97fa-fd931c31f385", "documents", "Консультация невролога.pdf"},
{"adbb0873-34d8-401f-ad57-5060702eaf46", "documents", "Елизарова Анастасия, конс.Зельдина.docx"},
{"089d6f7e-fc72-4cb6-b8ea-f7d8915c3623", "labs", "Елизарова.pdf"},
{"344c27bc-c817-42a3-bb7a-179be8f25756", "labs", "21000299-01-r.pdf"},
{"a8e498c2-d2ce-4fef-bf95-bebee003b906", "labs", "21000299-02-r.pdf"},
{"6ec2f836-c3be-4d86-b2d9-8e18c017739b", "labs", "b5e23b01-cbf4-41f1-a1a8-f40029bd9988.pdf"},
{"6c27bc1f-924c-45ba-a68b-f9106978497e", "labs", "b8b4409d-eced-4c3a-8bce-7b0699f20282.pdf"},
{"8b1d9eb0-574a-4e2c-9c78-f326a3c772f0", "labs", "f8c8562b-491b-4daa-be62-bc9b833d9925 2.pdf"},
{"b971ca00-89a1-4b75-ad89-173dcf7bb031", "labs", "8bf6b044-3aac-447b-b4af-9157da366108.pdf"},
{"a5ae147d-5448-40e4-af9f-145dadf88d24", "labs", "0ba90c52-3d20-4827-9c83-4ce5680f3c7b 2.pdf"},
{"22d9bacf-149e-4e86-8f6c-e89f3005a18d", "labs", "99a99e63-15df-4656-bbe9-3b604e4c7eef 2.pdf"},
{"1d378e00-fe81-4f1f-8d34-ed7325e3b059", "labs", "75608b8f-3db5-4aa4-82cf-881d714031d8 3.pdf"},
{"fe198b0d-0dca-4444-ac01-5cdf9a46bc5e", "labs", "53705841-620f-448f-b25c-ac64677595c6 4.pdf"},
{"5e4117df-8cbd-4467-a5b8-e5edb203029f", "labs", "431df34c-9659-4eaf-8f39-cb2f8b71b44a 4.pdf"},
{"52379231-9768-496c-8d1a-dfc4f3ed1787", "labs", "3580f5b6-043f-4ed6-aa83-fa7e65848bba 4.pdf"},
{"b8474ad3-c57a-4216-95ee-64b040fbf1b8", "labs", "2c32fbc4-b443-4288-8e4c-b9d1ec9ec1b1 4.pdf"},
{"2c64995b-cb16-43d8-bd7b-f8e86f644dc4", "labs", "0f5bd510-507e-46e5-a7ac-375f43dbc3b7.pdf"},
{"0a80459b-0e1e-426a-b5c7-24c6d6efa381", "labs", "4a6db55f-bd1c-4a8e-bebc-2c280c07fd41 4.pdf"},
{"5f2fea93-c396-468f-ba43-3f3c0da693fd", "labs", "216d3b71-e1f8-4140-8726-70c14e8d64ed.pdf"},
{"83bbc6eb-2796-405d-a746-f0da7ab63ebe", "labs", "4d28e298-4d18-45f3-926b-30a455ba9663 5.pdf"},
{"f79b5ca0-5737-4090-a5b1-65fae4f0815d", "labs", "d0de9e8b-c673-424e-9753-822b242e939c 4.pdf"},
{"a1634c8f-af38-4bd8-9b4c-290edeabe84c", "labs", "b440562f-7e9a-47f9-b581-988fe809eb0d.pdf"},
{"48620f9e-afe2-48f0-ab40-cd9ae72f5faf", "labs", "38af38ff-5d48-47f5-9a02-4967a6b7ee3b 2.pdf"},
{"8c992e77-a2ce-47d8-b552-990f99fe2f31", "labs", "e34f6aae-ae94-4591-92ed-bf6788754dbb 2.pdf"},
{"ef941365-d42b-4167-a07c-99f048be9386", "labs", "efba7f62-4d87-4d7a-967f-685e1c01ae58 2.pdf"},
{"656fa01b-efa7-4635-aff0-1311fd30a55e", "labs", "fe9ad5fb-b58d-4da0-b01a-f7b5297286cb 3.pdf"},
{"db8fabeb-391d-419d-bbb1-8147844522fb", "labs", "f78b96bc-866d-426e-955c-20616cf7c74d 2.pdf"},
{"47a0687b-7e8a-44c4-bec2-201cda8074f9", "labs", "ac2e5795-eb9b-4578-81eb-e1a6028036e8 4.pdf"},
{"d5ed9a71-607e-46f3-9cdd-4b1c9095a727", "labs", "937e6667-4180-4cb5-a14d-297a30ba2664.pdf"},
{"9b0549e6-9a89-42d5-ae62-70ab8e7d661f", "labs", "0ce67c35-0723-4d82-b2d5-0cd073afe4c6.pdf"},
{"a30ede43-66e4-4a66-9dba-f42e83010a48", "labs", "fbc7bbff-0436-4ed1-8af8-c072f7849c67 2.pdf"},
{"f5f63ed4-4958-486a-bbc4-d3369bed860e", "labs", "175bfe5e-a770-495b-8b65-a8c5a83b43bd 4.pdf"},
{"c6646a1c-7559-424d-8c2f-c105df89a83d", "labs", "401e00ca-c198-4e84-979c-088e5ff932b6 3.pdf"},
{"b75fc2df-0ebc-4d50-aa06-94554dc39e73", "documents", "L9470105.pdf"},
{"a6873d40-3c24-45ff-a3cb-834cfa56b2e7", "labs", "a8ea33ce-1068-4936-b3e4-e4bda6d9858b 3.pdf"},
{"65626c4e-6b25-4da5-83b4-813975555212", "documents", "L11138018 2.pdf"},
{"31eb350c-c31e-464b-b46b-b6b4e853d98d", "labs", "0000300766_00176_136160049_e_a_l___3182626_199 2.pdf"},
{"2415c6da-32a7-4455-a15e-8f3628a17742", "documents", "№13102500 ELIZAROVA A.D. - Протокол МРТ - 02.12.25.pdf"},
{"9552415f-d7d5-4d92-bd3c-e7bdcddcea93", "documents", "№12610214 _ ELIZAROVA A.D. - Протокол МРТ - 22.04.25.pdf"},
{"a7e8c7ba-c8e0-4e70-8a52-0063c5f929a3", "labs", "Елизарова А Д - 8010001827 (БИОХИМИЧЕСКИЕ ИССЛЕДОВАНИЯ).pdf"},
{"487a2528-a2af-4fd7-a5f2-5c5099e4cdf4", "documents", "ELIZAROVA A.D. - Протокол УЗИ - 26.05.21.pdf"},
{"991ec05b-1cdd-4d9e-98b7-a50eb8750cd4", "labs", "Елизарова А Д - 8010001825 (БИОХИМИЧЕСКИЕ ИССЛЕДОВАНИЯ).pdf"},
{"8c54ebbc-91c1-4e1b-aab2-9cd759f6d39a", "documents", "№9481636 _ ELIZAROVA A.D. - Протокол УЗИ (Прочее) - 09.06.21 2.pdf"},
{"6f2b1825-531d-445d-a5d1-28f86bc28e80", "labs", "Елизарова А Д - 8010001821 (Клиника кровь).pdf"},
{"fa0f8533-bdb7-4a17-842b-5976086be1aa", "documents", "№9270099 _ ELIZAROVA A.D. - Протокол УЗИ (Прочее) - 24.03.21.pdf"},
{"b69cc189-8a62-43d7-9d3f-b22b276e24b2", "documents", "ELIZAROVA A.D. - Протокол УЗИ - 17.05.21.pdf"},
{"07d855dc-872b-44d7-ba3c-4dcc51cd886d", "documents", "№9331563 _ ELIZAROVA A.D. - Протокол УЗИ (Прочее) - 14.04.21.pdf"},
{"26944ffe-3f81-4944-963d-62c25c422123", "documents", "ELIZAROVA A.D. - Протокол УЗИ (Прочее) - 29.06.21 2.pdf"},
{"f199af03-7d71-46f4-9d02-0b56977b23f1", "documents", "ELIZAROVA A.D. - Протокол УЗИ 18.08.21 2.pdf"},
{"3bae7c74-0473-4dc2-bef8-924d1ca7ba40", "labs", "Елизарова А Д - 8010001956 (Клиника кровь).pdf"},
{"a572229d-bfbd-4a22-822f-02d57294d6fe", "labs", "Елизарова А Д - 8010001821 (Профили(общая)).pdf"},
{"1ee888a0-3a78-4a53-9f47-2cc27ff60cf4", "documents", "Нейросонография_06.08.2020.pdf"},
{"17db6592-d2b9-41d6-bda0-56480d9752bc", "labs", "ЕЛИЗАРОВА А Д - 7017542950 (Клиника кровь) 2.pdf"},
}
const uploadDir = "/tank/inou/uploads/63d5df76904b1ec5"
const outputDir = "/tmp/anastasiia-restored"
func main() {
if err := lib.CryptoInit("/tank/inou/master.key"); err != nil {
fmt.Fprintf(os.Stderr, "CryptoInit failed: %v\n", err)
os.Exit(1)
}
// Create output directories
for _, cat := range []string{"labs", "documents"} {
if err := os.MkdirAll(filepath.Join(outputDir, cat), 0755); err != nil {
fmt.Fprintf(os.Stderr, "mkdir failed: %v\n", err)
os.Exit(1)
}
}
success := 0
failed := 0
for _, m := range mapping {
srcPath := filepath.Join(uploadDir, m.uuid)
dstPath := filepath.Join(outputDir, m.category, m.filename)
data, err := lib.DecryptFile(srcPath)
if err != nil {
fmt.Fprintf(os.Stderr, "FAILED: %s -> %s: %v\n", m.uuid, m.filename, err)
failed++
continue
}
if err := os.WriteFile(dstPath, data, 0644); err != nil {
fmt.Fprintf(os.Stderr, "FAILED write: %s: %v\n", dstPath, err)
failed++
continue
}
fmt.Printf("OK: %s -> %s/%s\n", m.uuid, m.category, m.filename)
success++
}
fmt.Printf("\nDone: %d success, %d failed\n", success, failed)
}