const psqlDB = require("../psql.service");

class FaceService{

    async getSameReportList(feat68,limit){
        limit = limit || 10;
        // cosine_similarity
        let sql = `
        select "objectId" as id,"title","photo","createdAt", array_agg(item)::vector(128) <=> $1::vector(128) as cos
         from (
          SELECT *, jsonb_array_elements("feat68")::float AS item from (
            SELECT "objectId","photo","title","feat68","createdAt"
            FROM "FaceReport"
            WHERE "feat68" is not null
            ORDER BY "createdAt" DESC 
            ) as rt1
          ) as rt
          GROUP BY "objectId","title",rt."photo","createdAt"
          ORDER BY cos limit ${limit};
        `
        let params = [feat68]
        let result
        try{
          result = await psqlDB.any(sql,params)
          console.log(result)
        }catch(err){
          console.error(err)
        }
        // 人物不同 0.08 0.09 0.06 0.059 
        // 人物不同 长相像 0.046 0.045 0.043 0.039
        // 人物相同 仰角/光照有变化 0.03846
        // 人物相同 > 0.0214 0.0188 0.00218 0.038 0.023
        // result = result.filter(item=>item.cos<0.0385 && item.id!=report.id) 
        // result.sort((a,b)=>a.createdAt-b.createdAt)
        if(result?.length>0){
          console.log(result)
        }
        return result
      }

}
module.exports.FaceService = FaceService