Algo for generating a fake, but feasable, dataset
You didn't include any specific request, so here are some general comments.

comments / documentation

You say it's been a while since you wrote it.  When you look at the code now, are there places you ask yourself "why did I do that?" or where it takes time to figure out what is going on?  If so, those are good places to add comments.

Also docstrings could be added to the file and the functions.

random_hour(start, end)

The writeup says it returns a random time between start and end.  However, it actually returns a random timedelta between start and end + 59 minutes.  Also, similar python functions tend to include the start and exclude the end (e.g. randrange), so it would be good to document this.

random_weight(total_working_hours)

dicts() are not guaranteed to be ordered until Python 3.7.  So i==0 may not correspond to in_orc.  It would be better to iterate over the keys and check if the key=='in_orc'.

min_hour is calculated but never used.  I think it is supposed to be area.

module level code

It is common to put the top level code in a function such as main().  And the call main() from code such as

if __name__ == '__main__':
    main()


csv module

The standard library includes the csv module for reading a writting csv and other kinfs of delimited text files.  It takes care of escaping characters or enclosing strings in quotes if needed.

unpacking

Instead of using for i in range(0,6) to iterate over the employees, use something like:

for employee_code, employee_name in employees:
    ...


locals()

The python documentation says the dictionary returned by locals() should NOT be modified.  The changes may not be picked up by the interpreter.

That's enough for now.