diff --git a/app/models/fraud_response.py b/app/models/fraud_response.py index 027b107..c18070d 100644 --- a/app/models/fraud_response.py +++ b/app/models/fraud_response.py @@ -5,4 +5,4 @@ class FraudResponse(BaseModel): estimatedFraudType: str # 분류된 사기 유형 keywords: List[str] = Field(..., min_items=1, max_items=3, description="주요 위험 키워드 (최대 3개)") explanation: str # 해당 유형으로 판단한 이유 - score: float = Field(..., ge=0, le=70, description="위험도(0~70)") \ No newline at end of file + score: float = Field(..., ge=0, le=80, description="위험도(0~80)") \ No newline at end of file diff --git a/app/prompts/data/fraud_examples.py b/app/prompts/data/fraud_examples.py index 5a5362a..9aa3a70 100644 --- a/app/prompts/data/fraud_examples.py +++ b/app/prompts/data/fraud_examples.py @@ -16,16 +16,14 @@ ], keywords=[ "전화", + "문자 및 전화 (연계 사용)", + "금융기관", "수사기관", "공공기관", - "개인정보", - "송금 요청", - "링크 클릭 요청", - "수상한 링크 포함", - "실제 기관/지인 연락처와 달랐다", - "무리한 정보 요청이 있었다", - "링크나 파일이 수상해 보였다", - "긴급하게 행동을 요구했다" + "송금/현금인출", + "개인정보 제공 (금융정보 포함)", + "범죄연루/대포통장/안전계좌", + "원격제어·보안점검 앱" ] ), FraudExample( @@ -37,17 +35,13 @@ ], keywords=[ "전화", + "문자 및 전화 (연계 사용)", "금융기관", - "송금 요청", - "개인정보 입력", - "링크 클릭 요청", - "앱 설치 / 파일 다운로드 유도", - "신분증", - "대출 이력", - "주민등록번호", - "무리한 정보 요청이 있었다", - "링크나 파일이 수상해 보였다", - "긴급하게 행동을 요구했다" + "송금 /현금인출", + "개인정보 제공 (금융정보 포함)", + "상담 연결유도" + "저금리 대출/상환/정부지원", + "카드사/은행/대출신청 앱" ], additional_description=[ "정부지원 대출 대상자로 선정되었다며 상담을 유도하는 문자 수신. 국민은행을 사칭하고 상담번호가 수상해 의심됨.", @@ -64,13 +58,17 @@ ], keywords=[ "전화", + "문자 및 전화 (연계 사용)", "금융기관", - "개인정보 입력", - "보안카드 번호", - "신분증", - "실제 기관/지인 연락처와 달랐다", - "무리한 정보 요청이 있었다", - "긴급하게 행동을 요구했다" + "수사기관", + "택배기사", + "송금/현금인출", + "개인정보 제공 (금융정보 포함)", + "앱 설치(링크클릭)/파일 다운로드", + "상담 연결유도", + "카드 발급/명의도용/보안점검", + "카드사/은행/대출신청 앱", + "원격제어·보안점검 앱" ], additional_description=[ "KB국민카드 승인불가 문자 수신. 본인이 신청하지 않았으면 전화하라는 내용으로 긴급히 대응을 유도함.", @@ -86,11 +84,9 @@ "아들 돌잔치 초대장 보내드렸습니다. 시간 되시면 꼭 참석해주세요! http://baby.partyapp.apk" ], keywords = [ - "문자", - "가족 / 친구 / 지인", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "실제 기관/지인 연락처와 달랐다" + "문자/메신저", + "가족/친구/지인", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description = [ "지인인 척 하며 아들 돌잔치 초대 문자를 보냈고, 생소한 링크 클릭을 유도. 돌잔치 초대장이 문자로 오는 게 이상해서 의심", @@ -106,11 +102,9 @@ "재혼을 결심하고 소중한 분들께 모바일 청접장을 보내드립니다\n청첩장 확인 http://mywedding.invite.apk" ], keywords=[ - "문자", - "가족 / 친구 / 지인", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "실제 기관/지인 연락처와 달랐다" + "문자/메신저", + "가족/친구/지인", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "지인처럼 결혼 소식을 전하며 모바일 청첩장을 보냈고, 단축 링크 클릭을 유도. 결혼 소식이 갑작스럽고 링크가 수상해 의심되었습니다.", @@ -126,11 +120,9 @@ "[訃告] ○○○님의 아버님께서 소천하셨습니다.\n조문 오시는 길 iplogger.com/funeral" ], keywords=[ - "문자", - "가족 / 친구 / 지인", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "실제 기관/지인 연락처와 달랐다" + "문자/메신저", + "가족/친구/지인", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "부친 별세 소식과 함께 장례식장 안내라는 명목으로 링크 클릭을 유도하였고, 링크 도메인이 낯설어 의심되었습니다.", @@ -146,12 +138,9 @@ "[Web발신] [관세청] 귀하의 통관번호에 수입세금 미납이 있어 고지서를 발송하였습니다.\n goosmsi.com/tax" ], keywords=[ - "문자", - "공공기관", - "링크 클릭 요청", - "개인정보 입력", - "수상한 링크 포함", - "링크나 파일이 수상해 보였다" + "문자/메신저", + "정부/공공기관", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "도로교통법 위반으로 과태료가 부과되었다며 고지서 확인을 유도하는 문자 수신. 발신기관 명칭은 있었지만 링크 주소가 낯설어 의심됨.", @@ -167,12 +156,10 @@ "[Web발신] 보험료 미납으로 인해 건강검진 통보문이 반송되었습니다.\n확인바랍니다 cloud-check.kr/notice" ], keywords=[ - "문자", - "건강보험공단 / 의료기관", - "링크 클릭 요청", - "수상한 링크 포함", - "긴급하게 행동을 요구했다", - "링크나 파일이 수상해 보였다" + "문자/메신저", + "정부/공공기관", + "지원금/환급금 수령", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "건강검진 통지서를 확인하라는 문자였고, 공단을 사칭하며 수상한 링크로 접속을 유도해 의심.", @@ -188,14 +175,9 @@ "[Web발신] [법원] 귀하의 사건번호 경기13고단758에 대한 민사소송이 접수되었습니다.\n확인 is.gd/lawsuit" ], keywords=[ - "문자", + "문자/메신저", "수사기관", - "출석 / 소환 요구", - "개인정보 입력", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "긴급하게 행동을 요구했다", - "긴급성이나 위기감을 느끼게 하는 표현이 있었다" + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "검찰청에서 형사소송건 출석요구서를 발부했다며 사건번호와 수상한 링크를 보내와 사기 의심이 들었음.", @@ -211,13 +193,10 @@ "[국민연금공단] 세금 미납 내역이 확인되어 납부 통지서가 발급되었습니다.\n goo.gl/notify123" ], keywords=[ - "문자", - "공공기관", - "금융기관", - "지원금 / 환급금 수령 유도", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "실제 기관/지인 연락처와 달랐다" + "문자/메신저", + "정부/공공기관", + "지원금/환급금 수령", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "국세청을 사칭하여 환급 대상임을 강조하고 링크를 클릭해 신청하라고 하여 사기 의심이 들었음.", @@ -233,15 +212,9 @@ "[Web발신] [TE MTV VIP] 채용 공고 – 재택근무 알바 모집 중! 20~50세 대상, 카카오톡 아이디 통해 1:1 채용 상담 진행 중. 지금 바로 문의 주세요!" ], keywords=[ - "문자", - "송금 요청", - "앱 설치 / 파일 다운로드 유도", - "링크 클릭 요청", - "개인정보 입력", - "신분증", - "휴대폰 인증번호", - "긴급하게 행동을 요구했다", - "링크나 파일이 수상해 보였다" + "문자/메신저", + "상담연결유도", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "open.kakao 링크를 포함하여 단순 재택근무를 빙자하고 높은 급여를 약속하며 개인정보 유도.", @@ -257,15 +230,13 @@ "[국세청] 재난지원금 관련 신분증 사본 제출이 누락되었습니다. 제출하지 않으면 미지급 처리 is.gd/abcd" ], keywords=[ - "문자", - "공공기관", - "지원금 / 환급금 수령 유도", - "개인정보 입력", - "링크 클릭 요청", - "신분증", - "주민등록번호", - "링크나 파일이 수상해 보였다", - "긴급하게 행동을 요구했다" + "문자/메신저", + "금융기관", + "정부/공공기관", + "지원금/환급금 수령", + "저금리 대출/상환/정부지원", + "카드사/은행/대출신청 앱", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "고용노동부를 사칭해 민생안정지원금 33만원 수령 대상자라고 하며, 예산 소진 전 신청을 유도한 메시지.", @@ -281,12 +252,11 @@ "[CJ택배] 고객님의 택배가 도착하지 못했습니다. 정확한 배송을 위해 앱 다운로드 바랍니다 http://xgo.kr/tpapp.apk" ], keywords=[ - "문자", + "문자/메신저", "택배기사", - "링크 클릭", - "앱 설치 / 파일 다운로드 유도", - "링크나 파일이 수상해 보였다", - "실제 기관/지인 연락처와 달랐다" + "배송조회/주소확인", + "배송조회 페이지", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "CJ대한통운을 사칭하여 주소 오류로 인한 반송을 알리며 링크 클릭을 유도하는 사례.", @@ -302,14 +272,12 @@ "[알림] 비트코인 휴면계정 자산 소멸 예정입니다. 로그인 후 기기 등록 후 이용 가능 me2.kr/login-warning" ], keywords=[ - "문자", - "암호화폐 거래소", - "링크 클릭 요청", - "앱 설치 / 파일 다운로드 유도", - "개인정보 입력", - "신분증", - "긴급하게 행동을 요구했다", - "링크나 파일이 수상해 보였다", + "문자/메신저", + "투자회사/가상화폐거래소", + "상담연결유도", + "주식추천/리딩방/청약당첨", + "투자리딩방/가상화폐거래소", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "업비트를 사칭하여 해외 로그인 감지라는 명목으로 긴급하게 링크 클릭을 유도하는 메시지.", @@ -325,14 +293,12 @@ "[Web발신] 전문가 추천 종목 단타방 오픈!\n매일 수익 인증, 무료혜택 제공\n가입 후 '666' 입력 시 입장\n단기 수익률 30% 목표\nhttps://t.me/stockvip" ], keywords=[ - "문자", - "투자회사 / 증권사", - "링크 클릭 요청", - "개인정보 입력", - "지원금 / 환급금 수령 유도", - "신분증", - "긴급하게 행동을 요구했다", - "링크나 파일이 수상해 보였다", + "문자/메신저", + "투자회사/가상화폐거래소", + "상담연결유도", + "주식추천/리딩방/청약당첨", + "투자리딩방/가상화폐거래소", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "에넥스 등 실제 종목명을 활용하여 고수익 보장과 손실 보상을 미끼로 단축 URL을 통해 가입을 유도하는 메시지", @@ -348,11 +314,12 @@ "[Web발신]\n청약 가능한 공모주 안내\n이노스페이스 (발사체 제작, 우주항공)\n일반 공모가: 36,400~43,300원\n사전신청 시 할인 공급가 적용\n청약 일정: 6월 20~21일\n신청링크: hxxps://poo-ipo.net" ], keywords=[ - "문자", - "투자회사 / 증권사", - "링크 클릭 요청", - "링크나 파일이 수상해 보였다", - "긴급하게 행동을 요구했다" + "문자/메신저", + "투자회사/가상화폐거래소", + "상담연결유도", + "주식추천/리딩방/청약당첨", + "투자리딩방/가상화폐거래소", + "앱 설치(링크클릭)/파일 다운로드" ], additional_description=[ "실제 증권사를 언급하며 낮은 공급가로 공모주 청약을 유도", @@ -368,10 +335,18 @@ "[소비자보호원] 본인 아닌 카드 결제건이 발생했습니다. 취소를 원하시면 즉시 확인 http://card-cancel.com" ], keywords=[ - "문자", + "문자/메신저", + "전화", + "문자 및 전화 (연계 사용)", "금융기관", - "링크 클릭 요청", - "긴급하게 행동을 요구했다" + "수사기관", + "송금/현금인출", + "개인정보 제공(금융정보 포함)", + "상담연결유도" + "앱 설치(링크클릭)/파일 다운로드", + "카드발급/명의도용/보안점검", + "카드사/은행/대출신청 앱", + "원격제어·보안점검 앱" ], additional_description=[ "해외 결제가 본인도 모르게 진행된 것처럼 꾸며져 즉시 신고를 유도", @@ -387,16 +362,14 @@ "이모 부탁 하나만 드려도 될까요?\n공인인증서 오류로 이체가 안돼서요\n이모가 대신 송금해주실 수 있나요?\n내가 오늘 중으로 바로 갚을게요\n얼마 보내야 해?\n95만원이에요\n계좌번호 알려줘" ], keywords=[ - "메신저", - "가족 / 친구 / 지인", - "송금 요청", - "기프트카드 구매 요청", - "개인정보 입력", - "신분증", - "주민등록번호", - "긴급하게 행동을 요구했다", - "무리한 정보 요청이 있었다", - "실제 기관/지인 연락처와 달랐다" + "문자/메신저", + "가족/친구/지인", + "송금/현금인출", + "상품권/기프트카드 구매", + "개인정보 제공(금융정보 포함)", + "앱 설치(링크클릭)/파일 다운로드", + "휴대폰고장/인증오류/상품권구매", + "원격제어·보안점검 앱" ], additional_description=[ "메신저 문자앱을 통해 접근하고 급하게 기프트카드를 사달라고 요청함", diff --git a/app/prompts/data/score_rules.txt b/app/prompts/data/score_rules.txt index 79b82b0..3b8c7f2 100644 --- a/app/prompts/data/score_rules.txt +++ b/app/prompts/data/score_rules.txt @@ -1,131 +1,136 @@ CAT01 기관 사칭형 - A:30:검찰청|경찰서|금융감독원|형사기동대 - B:10:사건 송치|수사 협조|조사 회신 - C:10:문서번호|공문 발송|사건번호 - D:10:주민등록번호|주소|성명 + A:20:검찰청|경찰서|금융감독원|형사기동대|금융기관|수사기관|정부/공공기관 + B:10:사건 송치|수사 협조|조사 회신 요청|범죄연루 + C:5:문서번호|공문 발송|사건번호 + D:15:주민등록번호|주소|성명|개인정보 E:10:명의 도용|압수|보안 강화|검찰소환 - F:10:bit.ly|han.gl|is.gd|vo.la|me2.do|http|https + F:10:bit.ly|han.gl|is.gd|vo.la|me2.do|정부사이트|공공기관사이트 CAT02 대출 사기형 - A:30:은행|농협|신한저축|금융복지정책 + A:20:은행|신한저축|금융복지정책|금융기관|은행 B:15:대출진행|대환대출|생계자금|정부지원상품 C:10:무직자 가능|신용등급 무관|무서류|저금리 D:10:신분증|등본|통장사본|재직증명서 - E:10:신청서.zip|앱설치|.apk|hxxp - F:5:상담신청|접수완료|한도조회|대표번호 + E:5:신청서.zip|앱설치|.apk|hxxp + F:10:상담신청|접수완료|한도조회|대표번호|상담 연결 유도 CAT03 카드사 사칭형 - A:30:KB국민카드|현대카드|롯데카드|신한카드|카드 + A:20:KB국민카드|현대카드|롯데카드|신한카드|금융기관|수사기관 B:15:카드 신청완료|카드 발급완료|개통완료 - C:15:본인 신청 아니면 신고|본인 아닐 경우 문의|본인 아님 신고 - D:10:개인정보 유출|승인 거절|이상 거래 감지 - E:5:상담접수|즉시 문의|콜센터|취소 요청 + C:15:본인 신청 아니면 신고|본인 아닐 경우 문의 + D:10:개인정보 유출|승인 거절|이상 거래 감지|현금 인출 + E:5:상담접수|즉시 문의|콜센터|취소 요청|상담 연결 유도 F:5:Web발신|승인불가|개통내용 아닌 경우 CAT04 돌잔치 초대장형 - A:35:돌잔치|첫돌|아들 돌잔치|축하해주세요|많이많이 축하 + A:25:돌잔치|첫돌|아들 돌잔치|축하해주세요|많이많이 축하 B:20:모바일 초대장|초대장을 보내드렸습니다|참석하여 주시기 바랍니다 C:5:축복해주세요|모두 축하 - D:20:oa.to|vo.to|pa.to|pro.ps|.apk|bit.ly|han.gl|is.gd|http|https + D:10:oa.to|vo.to|pa.to|pro.ps|.apk|bit.ly|han.gl|is.gd + F:10:가족|친구|지인 CAT05 모바일 청첩장형 - A:35:결혼식|재혼|웨딩홀|결혼합니다|사랑의 결실 + A:25:결혼식|재혼|웨딩홀|결혼합니다|사랑의 결실 B:20:모바일청첩장|청첩장 도착|청접장|Wedding Invitation C:5:축하해주세요|참석 부탁|인연으로 하나됩니다 - D:20:han.gl|bit.ly|c11.kr|na.to|.apk|is.gd|vo.la|me2.do|http|https + D:10:han.gl|bit.ly|c11.kr|na.to|.apk|is.gd|vo.la|me2.do + F:10:가족|친구|지인 CAT06 부고문자형 - A:40:별세|소천|사망하셨습니다|부고|訃告 + A:20:별세|소천|사망하셨습니다|부고|訃告 B:10:아버님|어머님|부모님|부친|모친 C:10:삼가 고인의 명복|안타깝게도|불행하게도 D:10:장례식장|빈소|오시는 길 - E:10:buly.kr|vo.la|iplogger.com|xgo.kr|gg.gg|bit.ly|han.gl|is.gd|http|https + E:10:buly.kr|vo.la|iplogger.com|xgo.kr|gg.gg|bit.ly|han.gl|is.gd + F:10:가족|친구|지인 CAT07 범칙금/과태료 부과형 - A:30:도로교통법 위반|정지선 위반|어린이 보호구역 + A:20:도로교통법 위반|정지선 위반|어린이 보호구역 B:15:과태료 부과|벌점 통지서|고지서 발송|가압류|장기연체대상자 - C:10:민원24|신고 접수|단속되어|민원내용 확인 + C:10:민원24|신고 접수|단속되어|민원내용 확인|공공기관 D:10:쓰레기 무단투기|음식물분리수거 위반|층간소음행위 E:10:관세청|수입세금|관세징수과|통관번호|세금 미납 안내 - F:5:paso.mobilecar.pe.kr|goosmsi.com|homes|mobilecar|bit.ly|han.gl|is.gd|http|https + F:5:paso.mobilecar.pe.kr|goosmsi.com|homes|mobilecar|bit.ly|han.gl|is.gd CAT08 건강보험공단 사칭형 - A:35:국민건강보험|건강보험공단|건강지키미 + A:25:국민건강보험|건강보험공단|건강지키미|정부/공공기관 B:10:건강검진 통지서|건강검사 통보문|종합건강검진 C:15:환급금 신청마감|보험료 환급금|건강보험료 미납 D:10:확인바랍니다|조회하기|신청요망 - E:10:dokdo.in|nhisis.xyz|cloud|nhis|nhi|bit.ly|han.gl|is.gd|http|https + E:10:dokdo.in|nhisis.xyz|cloud|nhis|nhi|bit.ly|han.gl|is.gd CAT09 경찰 출석 요구형 - A:30:검찰청|경찰서|법원|국정원 + A:25:검찰청|경찰서|법원|국정원|수사기관 B:10:출석요구서|소환장|사건조회번호 C:10:형사소송건|민사소송|재산몰수 통지서 D:10:긴급출석요구|발부되었습니다|즉시 확인 - E:10:사건번호|고단 - F:10:sc-police.co.kr|xuto.tk|is.gd|bit.ly|han.gl|http|https + E:5:사건번호 + F:10:sc-police.co.kr|xuto.tk|is.gd|bit.ly|han.gl CAT10 국세청 사칭형 - A:35:국세청|홈택스|국민연금공단|납세자연맹 + A:25:국세청|홈택스|국민연금공단|납세자연맹|정부/공공기관 B:10:종합소득세|연말정산|세금 미납|세금 환급금 - C:15:환급 대상자|환급금 수령|금액 확인|환급 내역 조회 + C:15:환급 대상자|환급금 수령|금액 확인|환급 내역 조회|지원금/환급금 수령 D:10:신청하세요|수령 확인|조회 및 납부|통지서 확인 - E:10:han.gl|goo.gl|me2.do|hometax.go.kr|bit.ly|is.gd|http|https + E:10:han.gl|goo.gl|me2.do|hometax.go.kr|bit.ly|is.gd CAT11 알바/부업 사기형 - A:30:재택근무|단기 알바|쉬운 업무|문자 알바 - B:15:시급 3만원|고수익 보장|일 10만 이상|당일 정산 - C:10:누구나 가능|자격무관|당일 지급 - D:15:오픈채팅|카톡 추가|링크 클릭|접속하세요 - E:10:open.kakao.com|bit.ly|t.me|reurl.kr|han.gl|is.gd|http|https + A:20:재택근무|단기 알바|쉬운 업무|문자 알바 + B:15:시급 3만원|고수익 보장|일 10만 이상|당일 정산|수익|시급 + C:10:누구나 가능|자격무관|당일 지급|앱 설치 + D:15:오픈채팅|카톡 추가|링크 클릭|접속하세요|상담 연결 유도 + E:10:open.kakao.com|bit.ly|t.me|reurl.kr|han.gl|is.gd CAT12 정부지원금 위장형 - A:30:재난지원금|방역지원금|민생안정지원금 + A:20:재난지원금|방역지원금|민생안정지원금|금융기관|정부/공공기관 B:10:국세청|고용노동부|중소벤처기업부 C:10:신청마감|신속지급|신청하기 클릭 - D:10:신분증 사본|본인 확인|제출서류 - E:10:예산소진|원 도착|예산 초과 시 부지급 + D:10:신분증 사본|본인 확인|제출서류|개인정보 + E:10:예산|지원금/환급금 수령 F:5:bit.ly|han.gl|is.gd|me2.do|vo.la|http|https G:5:민생 회복|꼭 확인해주세요|확인 안 될 경우 미지급 CAT13 택배 사기형 - A:30:택배|쿠팡|택배기사 - B:15:주소 오류|주소 불일치|배송지 오류|주소 확인 요망 + A:20:택배|쿠팡|택배기사|CJ대한통운|한진택배|로젠택배 + B:15:주소 오류|주소 불일치|배송지 오류|주소 확인|배송 조회 C:15:배송 지연|배송 실패|미수령 택배|통관번호 오류 D:10:bit.ly|han.gl|is.gd|vo.la|me2.do|http|https - E:10:앱 다운로드|배송조회 바로가기|주소 입력 페이지 + E:10:앱 다운로드|배송조회 바로가기|주소 입력 페이지|배송조회 페이지 CAT14 가상화폐 사기형 - A:30:소각 예정|자산 복구|소멸 예정|휴면계정 소각 - B:20:해외IP 로그인|로그인 감지|수상한 기기|기기등록 후 사용|본인이 아닐 경우|로그인 알림 - C:15:ETH|BTC|이더리움|비트코인|테더|잔여 ETH - D:15:line.me|bit.ly|me2.kr|카톡|상담 바로가기|t.me|http|https + A:10:가상화폐거래소 + B:20:소각 예정|자산 복구|소멸 예정|휴면계정 소각 + C:20:해외IP 로그인|로그인 감지|수상한 기기|기기등록 후 사용|본인이 아닐 경우|로그인 알림 + D:10:ETH|BTC|이더리움|비트코인|테더|잔여 ETH + E:10:line.me|bit.ly|me2.kr|카톡|상담 바로가기|t.me|상담 연결 유도 CAT15 주식투자 사기형 - A:35:고수익|수익보장|원금보장|손실보상 + A:25:고수익|수익보장|원금보장|손실보상|투자회사|주식 B:15:에넥스|덕신하우징|2차전지|바이오|유진테크놀로지 C:5:bit.ly|t.me|open-kakao|open.kakao|han.gl|reurl.kr|is.gd|http|https D:5:쿠폰 증정|단타 무료방|무료혜택|선착순 모집 - E:10:단타|매수|매도|수급|테마|상장특별공급|종목추천 + E:10:단타|매수|매도|수급|테마|상장특별공급|종목추천|상담 연결 유도 F:5:지금 가입|링크 클릭|바로 입장|채팅방 이동|666 G:5:마지막 기회|안정수익|실시간 인증|장마감공개 CAT16 청약 공모주 사기형 - A:30:공모주|청약|상장예정|IPO|무료배정 - B:15:미래에셋|신한증권|하나증권|증권사|청약담당자 + A:20:공모주|청약|상장예정|IPO|무료배정 + B:15:미래에셋|신한증권|하나증권|증권사|청약담당자|청약 당첨 C:15:할인공급가|수익률|급등|이익률 D:10:문자상담|상담전화|빠른회신|순차연락 E:5:할인혜택|무상입고|무료거부|종목확인|IR안내 F:5:두산로보틱스|이노스페이스|APR|에이피알 CAT17 허위결제 사기형 - A:35:결제완료|승인요청|인증번호|해외승인|본인아님 - B:15:신용카드|휴대폰결제|이니시스|모빌리언스|위메프|아마존 + A:15:결제완료|승인요청|인증번호|해외승인|개인정보 + B:15:신용카드|휴대폰결제|이니시스|모빌리언스|송금인출|현금인출|개인정보 C:15:단축URL|의심URL|IP링크|http|https|hxxp|hxxps|bit.ly|han.gl|is.gd|vo.la|me2.do - D:15:고객센터|소비자보호|문의전화|신고요청 + D:15:고객센터|소비자보호|문의전화|신고요청|상담 연결 유도 + E:10:카드 발급|명의 도용|보안 점검 CAT18 가족/지인 사칭형 - A:30:가족|친구|지인 - B:15:폰고장|액정깨짐|임시폰|문자접속 - C:15:급해|갚을게|부탁|수리중|지금바로 - D:10:송금|계좌이체|기프트카드|입금요청 - E:10:신분증|주민번호|카드사진|인증번호 \ No newline at end of file + A:20:가족|친구|지인 + B:15:휴대폰 고장|액정깨짐|임시폰|문자접속 + C:10:급해|갚을게|부탁|수리중|지금바로 + D:15:송금|계좌이체|기프트카드|입금요청|상품권 + E:10:신분증|주민번호|카드사진|인증번호|개인정보 \ No newline at end of file diff --git a/app/prompts/fraud_prompts.py b/app/prompts/fraud_prompts.py index 0596adf..a2f7c7d 100644 --- a/app/prompts/fraud_prompts.py +++ b/app/prompts/fraud_prompts.py @@ -8,15 +8,18 @@ 다음 규칙표를 사용해 입력 텍스트를 분석하고, 1) 사기 유형(카테고리) 선택 2) 핵심 키워드(최소1~최대3) 추출 -3) 점수는 최소 0점에서 최대 70점 +3) 해당 유형으로 분류한 이유를 한 두 문장으로 설명 +4) 점수는 최소 0점에서 최대 70점 [점수 규칙] - 규칙표는 "카테고리ID 카테고리명" 한 줄 + 그 아래 여러 룰 라인으로 구성된다. - 룰 라인 형식: "룰ID:배점:키워드1|키워드2|...". -- 텍스트에 해당 룰의 키워드 중 1개라도 의미/표현상 매칭되면 그 룰의 배점을 가산(룰별 최대 1회). -- 유저가 입력한 'keywords'에서 점수 계산을 하고, 'additionalDescription'과 'imageContent'를 참고하여 점수 계산. +- 'messageContent', 'keywords', 'additionalDescription'에 해당 룰의 키워드 중 1개라도 의미/표현상 해당 룰에 해당된다면 판단하면 그 룰의 배점을 가산(룰별 최대 1회). +- 'imageContent'는 유형 분류에 참고할 것. +- 유저가 입력한 'keywords', 'additionalDescription'에 매칭되는 키워드가 있으면 점수 계산. +- 규칙표의 각자 룰들의 키워드들의 유사성을 분석하고, 유사한 키워드도 해당 룰에 매칭여부를 관대하게 판단할 것을 명심해라. - 키워드는 의미가 같으면 띄어쓰기/대소문자/오타 등과 동의어 허용. -- 동일 카테고리에서 여러 룰이 적중할 수 있으며, 합산 후 카테고리 점수는 70을 초과하지 않는다(상한 70점). +- 동일 카테고리에서 여러 룰이 적중할 수 있으며, 합산 후 카테고리 점수는 70을 초과하지 않는다. - 최종적으로 가장 점수가 높은 카테고리를 estimatedFraudType으로 선택. - 동점이면 적중 룰 개수가 더 많은 카테고리를 선택. 그래도 동률이면 의미상 더 근접한 쪽. - 링크/단축URL은 http/https, bit.ly/han.gl/is.gd/vo.la/me2.do 등도 매칭으로 본다(표기 변형 허용). @@ -34,7 +37,6 @@ """.strip() - def _load_rules() -> str: rules_path = Path(__file__).parent / "data" / "score_rules.txt" return rules_path.read_text(encoding="utf-8")