upload volledige repo
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# COPY_V1_CONSOLIDATION.md
|
||||
|
||||
## Task lifecycle (copy v1)
|
||||
|
||||
`POST /api/files/copy`:
|
||||
1. Request wordt gevalideerd.
|
||||
2. Bij geldige input wordt direct een task aangemaakt met status `queued`.
|
||||
3. Een achtergrond-runner zet de task op `running` en vult progress (`done_bytes`, `total_bytes`).
|
||||
4. Eindstatus:
|
||||
- `completed` bij succesvolle file copy
|
||||
- `failed` bij runtime I/O fout (`error_code = io_error`)
|
||||
|
||||
## Validatiefouten vs runtime-fouten
|
||||
|
||||
Validatiefouten (voor task-creatie):
|
||||
- `invalid_request`
|
||||
- `path_traversal_detected`
|
||||
- `path_outside_whitelist`
|
||||
- `invalid_root_alias`
|
||||
- `path_not_found`
|
||||
- `type_conflict`
|
||||
- `already_exists`
|
||||
|
||||
Gedrag:
|
||||
- request faalt direct met error response
|
||||
- er wordt geen task aangemaakt
|
||||
|
||||
Runtime-fouten (na task-creatie):
|
||||
- `io_error`
|
||||
|
||||
Gedrag:
|
||||
- request zelf retourneert `202` met `task_id`
|
||||
- task gaat naar `failed`
|
||||
- foutdetails verschijnen via `GET /api/tasks/{task_id}`
|
||||
|
||||
## Copy metadata in v1 (`copy_file(...)`)
|
||||
|
||||
V1 kopieert:
|
||||
- file-inhoud (byte stream)
|
||||
- basic filesystem metadata via `copystat` (mtime/atime/mode waar ondersteund)
|
||||
|
||||
V1 doet niet expliciet:
|
||||
- ownership/ACL normalisatie
|
||||
- extended attributes beleid
|
||||
|
||||
## Destination-semantiek (expliciet)
|
||||
|
||||
`destination` blijft in v1 altijd het volledige doelpad.
|
||||
- Geen impliciete "copy into existing directory" interpretatie.
|
||||
- Als destination al bestaat: `already_exists`.
|
||||
Reference in New Issue
Block a user