fischer-agentkit/src/agentkit/server/admin
chiguyong 4f261523c2 fix(review): U3 atomic file writes for YAML + .env + skill config
All config file writes now use the write-temp + fsync + os.replace
pattern (KTD-4) so a crash mid-write leaves the original file intact.

- Add src/agentkit/server/utils/atomic_write.py with write_text_atomic
- settings.py: _write_yaml_config and _write_env_var use atomic write
- skill_service.py: import_skill uses atomic write
- skill_service.py: update_skill_config uses atomic write + fcntl.flock
  around the read-modify-write cycle to serialize concurrent updates
- Add 11 unit tests covering happy path, crash safety, concurrency, errors
2026-06-22 17:03:27 +08:00
..
__init__.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
context.py fix(review): U1 Redis quota enforcement — key construction + fail-closed + degradation recovery + async 2026-06-22 16:22:33 +08:00
department_service.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
filtering.py feat(admin): U1+U2+U4 — schema v3, department service, context filtering 2026-06-21 15:03:27 +08:00
kb_service.py feat(admin): U6 — Skill & KB management endpoints + department binding 2026-06-21 16:19:51 +08:00
llm_config_service.py feat(admin): U5 — LLM config admin endpoints + department quotas 2026-06-21 15:03:38 +08:00
quota_service.py feat(admin): U5 — LLM config admin endpoints + department quotas 2026-06-21 15:03:38 +08:00
skill_service.py fix(review): U3 atomic file writes for YAML + .env + skill config 2026-06-22 17:03:27 +08:00
usage_service.py feat(admin): U7 — usage dashboard + quota enforcement 2026-06-21 17:23:20 +08:00
user_service.py feat(admin): U3 — user CRUD + password reset + multi-department 2026-06-21 13:45:42 +08:00