I feel like it’s good enough to replace created_at if you will only need the timestamp as a default sort or for forensic/recovery usage. If you will be using and regularly displaying the timestamp, I’d probably keep the timestamps columns both for simplicity and performance.
I would very much advise against using the timestamp from the uuidv7 for anything at all except for:
something that necessitates saving every byte, like high volume time series data
you absolutely need to have a well-ordered set of records by when they were created.
It is important to note that “well-ordered” does not mean “objectively true”. For example, two records can be created at the same millisecond, but the system unambiguously sees one as being either before or after the other because everything after the timestamp part sorts unambiguously.
AshDoubleEntry uses a similar thing (ULID, but it will be updated to use uuidv7 in the future), to ensure that there is always one-true-ordering of transfers in a system.
Aside from those cases, add a created_at timestamp
If you use UUIDv7 for timestamps, than consider moving a data from one table to another. You’ll also have to copy a UUID from the past into new place in the table (otherwise you’ll lose inserted_at logic), which break this clustered index feature of the UUIDv7.