| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- package com.giantan.data.dk.controller;
- import com.giantan.ai.common.reponse.R;
- import com.giantan.data.dk.constant.DkConstants;
- import com.giantan.data.dk.dto.GTool;
- import com.giantan.data.dk.service.DkDocsService;
- import com.giantan.data.kvs.kvstore.GBaseKeyValue;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.io.IOException;
- import java.lang.invoke.MethodHandles;
- import java.util.List;
- import java.util.Map;
- // | 上传文件 | `POST` | `/collections/{collId}/mds` |
- //| 上传 ZIP(批量) | `POST` | `/collections/{collId}/docs/batch`(或 `/bulk`) |
- //| 提交新任务 | `POST` | `/collections/{collId}/tasks` |
- //| 获取任务状态 | `GET` | `/collections/{collId}/tasks/{taskId}/status` |
- //| 取消任务 | `DELETE` | `/collections/{collId}/tasks/{taskId}` |
- //| 获取任务详情 | `GET` | `/collections/{collId}/tasks/{taskId}`
- // deleteByName DELETE /collections/{collId}/mds?name=someName
- // 批处理任务的统一提交方式
- // POST /collections/{collId}/tasks
- //Content-Type: application/json
- //
- //{
- // "type": "chunk", // 或 "keywords", "summary"
- // "objectIds": ["md1", "md2"], // 可选:为空则全量
- // "params": {
- // "chunkSize": 500,
- // "language": "zh"
- // }
- //}
- //`/collections/{collId}/docs/actions/keywords`
- // - `POST /collections/{collId}/docs/actions/{action}`:简洁直观,表示“对资源集合执行动作”
- //- 配合 `mdIds` 或标签、筛选条件等参数进行部分操作
- @RestController
- @RequestMapping(DkConstants.API_PREFIX + "/collections/{collId}")
- public class DkDocsController {
- private static final org.slf4j.Logger log
- = org.slf4j.LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- @Autowired
- DkDocsService dkDocsService;
- @PostMapping("/tools")
- public R createEntry(@PathVariable String collId, @RequestBody GTool data) throws Throwable {
- GTool r = dkDocsService.save(collId, data);
- return R.data(r);
- }
- @GetMapping("/tools/all")
- public R<List<GTool>> getAll(@PathVariable String collId) throws Throwable {
- List<GTool> ret = null;
- ret = dkDocsService.findAll(collId);
- return R.data(ret);
- }
- @GetMapping("/tools/{id}")
- public R<?> getById(@PathVariable String collId, @PathVariable String id
- ) throws Throwable {
- GTool ret = dkDocsService.findByIdOrGid(collId, id);
- return R.data(ret);
- }
- @DeleteMapping("/tools/{gid}")
- public R<?> delete(@PathVariable String collId, @PathVariable String gid
- ) throws Throwable {
- int deleted = dkDocsService.deleteByIdOrGid(collId, gid);
- log.info("Delete dk: {}", gid);
- //log.info("taskId = " + taskId);
- return R.data(Map.of("deleted", deleted));
- }
- @PutMapping("/tools/{qid}")
- public R update(@PathVariable String collId, @PathVariable String qid, @RequestBody GTool tool) throws Throwable {
- GTool r = dkDocsService.update(collId, qid, tool);
- return R.data(r);
- }
- @PostMapping("/tools/fulltextSearch")
- public R fulltextSearch(@PathVariable String collId, @RequestBody Map<String, Object> query) throws Throwable {
- List<GBaseKeyValue> rets = dkDocsService.fulltextSearch(collId, query);
- return R.data(rets);
- }
- @PostMapping("/tools/similaritySearch")
- public R similaritySearch(@PathVariable String collId, @RequestBody Map<String, Object> query) throws Throwable {
- List<GBaseKeyValue> rets = dkDocsService.similaritySearch(collId, query);
- return R.data(rets);
- }
- @PostMapping("/tools/hybridSearch")
- public R hybridSearch(@PathVariable String collId, @RequestBody Map<String, Object> query) throws Throwable {
- List<GBaseKeyValue> rets = dkDocsService.hybridSearch(collId, query);
- return R.data(rets);
- }
- @DeleteMapping("/tools/by-name")
- public R<Map<String, Object>> deleteByName(@PathVariable String collId, @RequestParam("name") String name
- ) throws Throwable {
- // 根据 name 删除对应 md
- int deleted = dkDocsService.deleteByName(collId, name);
- return R.data(Map.of("deleted", deleted));
- }
- @DeleteMapping("/tools/all")
- public R<Map<String, Object>> deleteAll(@PathVariable String collId) throws Exception {
- long removed = dkDocsService.deleteAll(collId);
- return R.data(Map.of("deleted", removed));
- }
- // 获取某些字段的所有值
- @PostMapping("/tools/fields")
- public R getAllEntities(@PathVariable String collId, @RequestBody List<String> fields) throws Throwable {
- List<Map<String, Object>> entities = dkDocsService.getAllEntities(collId, fields);
- return R.data(entities);
- }
- ////////////////////
- //GET /collections/demo/paths/get?path=/a/b/c
- //DELETE /collections/demo/paths/delete?path=/a/b/c
- //GET /collections/demo/paths/list?prefix=/a
- //GET /collections/demo/paths/children?path=/a
- //GET /collections/demo/paths/descendants?path=/a
- @GetMapping("/tools/by-path")
- public R getDocsBypPath(@PathVariable String collId, @RequestParam String path) throws Throwable {
- List<GTool> rets = dkDocsService.findByPath(collId, path);
- return R.data(rets);
- }
- @GetMapping("/tools/by-prefix")
- public R getDocsBypPrefix(@PathVariable String collId, @RequestParam String prefix) throws Throwable {
- List<GTool> rets = dkDocsService.findByPrefix(collId, prefix);
- return R.data(rets);
- }
- @DeleteMapping("/tools/by-path")
- public R deletePathAndDescendants(@PathVariable String collId, @RequestParam String path) throws Throwable {
- int rets = dkDocsService.deletePathAndDescendants(collId, path);
- return R.data(rets);
- }
- // 获取记录数
- @GetMapping("/tools/count")
- public R getCount(@PathVariable String collId) {
- long count = dkDocsService.count(collId);
- return R.data(count);
- }
- @GetMapping("/tools")
- public R getDocs(
- @PathVariable String collId,
- @RequestParam(required = false) String path,
- @RequestParam(required = false) String prefix,
- @RequestParam(required = false) String parent) throws Throwable {
- List<GTool> rets = null;
- if (path != null) {
- rets = dkDocsService.findByPath(collId, path);
- } else if (prefix != null) {
- rets = dkDocsService.findByPrefix(collId, prefix);
- } else if (parent != null) {
- rets = dkDocsService.getChildren(collId, parent);
- } else {
- rets = dkDocsService.findAll(collId);
- }
- return R.data(rets);
- }
- @DeleteMapping("/docs")
- public R deleteDocs(
- @PathVariable String collId,
- @RequestParam(required = false) String path,
- @RequestParam(required = false) String prefix,
- @RequestParam(required = false) String subtree) throws Throwable {
- int ret = 0;
- if (path != null) {
- ret = dkDocsService.deleteByPath(collId, path);
- } else if (prefix != null) {
- ret = dkDocsService.deleteByPrefix(collId, prefix);
- } else if (subtree != null) {
- ret = dkDocsService.deletePathAndDescendants(collId, subtree);
- } else {
- throw new IllegalArgumentException("Must provide path or prefix to delete");
- }
- return R.data(ret);
- }
- // @PostMapping("/tools/{docId}/tags/add")
- // public R appendTag(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- // List<String> ret = dkDocsService.appendArrayField(collId, docId, "tags", values);
- // return ResponseEntity.ok(R.data(ret));
- // }
- //
- // @PostMapping("/docs/{docId}/tags/set")
- // public ResponseEntity<R> setTag(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- // List<String> ret = dkDocsService.setArrayField(collId, docId, "tags", values);
- // return ResponseEntity.ok(R.data(ret));
- // }
- //
- // @PostMapping("/docs/{docId}/tags/remove")
- // public ResponseEntity<R> removeTag(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- // List<String> ret = dkDocsService.removeArrayField(collId, docId, "tags", values);
- // return ResponseEntity.ok(R.data(ret));
- // }
- /*
- @PostMapping("/docs/batch")
- public ResponseEntity<R> createBatch(@PathVariable String collId, @RequestBody List<GBaseKeyValue> kvs) throws Throwable {
- List<Integer> ret = dkDocsService.saveAll(collId, kvs);
- return ResponseEntity.ok(R.data(ret));
- }
- @PutMapping("/docs")
- public R update(@PathVariable String collId, @RequestBody GBaseKeyValue kv) throws Throwable {
- GBaseKeyValue updatedKv = dkDocsService.update(collId, kv);
- return R.data(updatedKv);
- }
- //////////////////
- //整体 metadata 管理 /collections/{collId}/docs/{docId}/metadata
- //单个 metadata 字段 /collections/{collId}/docs/{docId}/metadata/{key}
- @PostMapping("/docs/{docId}/rename")
- public R<?> rename(@PathVariable String collId, @PathVariable String docId, @RequestBody Map<String, Object> req
- ) throws Throwable {
- Map<String, Object> r = dkDocsService.rename(collId, docId, req);
- return R.data(r);
- }
- ////////////////
- // 更新属性
- @GetMapping("/docs/{docId}/attributes")
- public R getAttributeByKey(@PathVariable String collId, @PathVariable String docId
- ) throws Throwable {
- Object ret = dkDocsService.getAttributes(collId, docId);
- return R.data(ret);
- }
- @GetMapping("/docs/{docId}/attributes/{key}")
- public R getAttributeByKey(@PathVariable String collId, @PathVariable String docId,
- @PathVariable String key
- ) throws Throwable {
- Object ret = dkDocsService.getAttributeByKey(collId, docId, key);
- return R.data(ret);
- }
- @PatchMapping("/docs/{docId}/attributes")
- public R patchAttributes(@PathVariable String collId, @PathVariable String docId,
- @RequestBody GBaseKeyValue data
- ) throws Throwable {
- Object ret = dkDocsService.patchAttributes(collId, docId, data);
- return R.data(ret);
- }
- @DeleteMapping("/docs/{docId}/attributes/{key}")
- public R deleteAttributeByKey(@PathVariable String collId, @PathVariable String docId,
- @PathVariable String key
- ) throws Throwable {
- Object ret = dkDocsService.deleteAttributeByKey(collId, docId, key);
- return R.data(ret);
- }
- // 移除属性
- @DeleteMapping("/docs/{docId}/attributes")
- public R removeAttribute(@PathVariable String collId, @PathVariable String docId, @RequestBody List<String> keys) throws Throwable {
- GBaseKeyValue updatedKv = dkDocsService.deleteAttributeByKeys(collId, docId, keys);
- return R.data(updatedKv);
- }
- @PutMapping("/docs/{docId}/attributes")
- public R updateAttribute(@PathVariable String collId, @PathVariable Integer docId, @RequestBody Map<String, Object> attributes) throws Throwable {
- GBaseKeyValue updatedKv = dkDocsService.updateAttribute(collId, docId, attributes);
- return R.data(updatedKv);
- }
- @PostMapping("/docs/{docId}/altlabels/add")
- public ResponseEntity<R> appendAltlabels(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- List<String> ret = dkDocsService.appendArrayField(collId, docId, "altlabels", values);
- return ResponseEntity.ok(R.data(ret));
- }
- @PostMapping("/docs/{docId}/altlabels/set")
- public ResponseEntity<R> setAltlabels(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- List<String> ret = dkDocsService.setArrayField(collId, docId, "altlabels", values);
- return ResponseEntity.ok(R.data(ret));
- }
- @PostMapping("/docs/{docId}/altlabels/remove")
- public ResponseEntity<R> removeAltlabels(@PathVariable String collId, @PathVariable int docId, @RequestBody List<String> values) {
- List<String> ret = dkDocsService.removeArrayField(collId, docId, "altlabels", values);
- return ResponseEntity.ok(R.data(ret));
- }
- //////////////
- @DeleteMapping("/docs/indexes")
- public ResponseEntity<R> deleteDocsIndexes(@PathVariable String collId) throws IOException, InterruptedException {
- int r = dkDocsService.deleteAllIndex(collId);
- return ResponseEntity.ok(R.data(r));
- }
- */
- }
|