feat(repo): 全部模块 service 改用 repository(Repository 全面落地)

- 24 个模块 service 从直接 db.query 改为使用各自 repository(get_by_id/filter/create/update)
- 4 个 agent 并行分组转换:system 组、dictionary/configuration/member/region、cms/link/notice、job/log
- 保留合法 db 用法:跨模型查询(user→dept/level/position、ad→adsort、adsort→item/itemcate)、投影查询(role/menu)、按条件删除(set_permission/save_role_menu/add_user_role)、独立会话(record_job_log/record_operation_log)、db.commit(pause/resume)
- 修复 JobLogRepository 软删列 del_flag;修复 ad/notice create 重复传参 bug
- 修复 base_repository.get_by_id/get_by_ids 兼容字符串 ID
- 实测:27 个读接口 + dept/notice/member/level 写操作全通过

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-08-07 11:02:58 +08:00
co-authored by Claude
parent 13853daa4a
commit 969fdbbe7f
18 changed files with 219 additions and 388 deletions
+17 -1
View File
@@ -9,6 +9,22 @@ class JobRepository(BaseRepository[Job]):
job_repo = JobRepository(Job)
class JobLogRepository(BaseRepository[JobLog]):
pass
# JobLog 使用 del_flag 而非 is_delete 作为软删标识
soft_delete_col = "del_flag"
def get_by_id(self, obj_id):
"""覆盖:按 del_flag 过滤。"""
if obj_id is None or obj_id == '':
return None
try:
obj_id = int(obj_id)
except (TypeError, ValueError):
return None
if obj_id <= 0:
return None
return self.db.query(self.model).filter(
self.model.id == obj_id, getattr(self.model, self.soft_delete_col) == 0
).first()
joblog_repo = JobLogRepository(JobLog)