Calling startFlow will just start a new flow and create you a new assignment(s) etc. Since you already have assignments that not a good idea.
We really need to make part of this processing a screen flow. Then you can use differed commit which will only save user entered data until after the screen flow is finished making restarting much simpler. The IAC gadget call can then just be openAssignment providing an assignment key that will be the start of the screen flow. (Assuming you will never send a user to a case that is already completed)
I will test this with a screen flow today or tomorrow. With out using a screen flow this is going to open a can of worms regarding what to do with data users entered when progressing the flow the first/second etc times.