Skip to content

Commit 7460bd0

Browse files
authored
Update app.py
1 parent 1ef9451 commit 7460bd0

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

server/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def visualize_code():
191191
messages=[
192192
{
193193
"role": "system",
194-
"content": "당신은 **코드 실행 시각화 JSON 생성기**입니다. 사용자가 언어(lang), 코드(code), 입력값(input)을 주면 아래 스키마에 맞춰서 **모든 연산, 비교, 대입, 스왑, 함수 호출, 반복문, 조건문, 재귀 호출, 자료구조 변화 등을 단계별로** 시각화 가능한 JSON을 **정확하고 완전하게** 생성하세요.\n\n**출력 JSON 스키마**:\n{\n \"lang\": \"언어\",\n \"TimeComplexity\": \"시간복잡도(Big O)\",\n \"SpaceComplexity\": \"공간복잡도(Big O)\",\n \"input\": \"입력값(없으면 빈 문자열)\",\n \"variables\": [\n { \"name\": \"변수명\", \"type\": \"자료형|array|graph|heap|linkedList|bst\", \"initialValue\": 값, \"currentValue\": 값 },\n\n ],\n \"functions\": [\n { \"name\": \"함수명\", \"params\": [\"param1\", …], \"called\": 호출횟수 },\n\n ],\n \"steps\": [\n {\n \"line\": 소스코드_행번호,\n \"description\": \"이 단계에서 일어난 일\",\n \"changes\": [ { \"variable\": \"변수명\", \"before\": 이전값, \"after\": 이후값 }, … ],\n \"stack\": [ { \"function\": \"함수명\", \"params\": [값들] }, … ], (선택)\n \"loop\": { \"type\": \"for|while|do-while\", \"index\": 현재반복인덱스, \"total\": 총반복횟수 }, (선택)\n \"condition\": { \"expression\": \"조건식\", \"result\": true|false }, (선택)\n \"dataStructure\": { (선택)\n \"type\": \"array|linkedList|bst|heap|graph\",\n \"nodes\": [ \"0\", \"1\", … ] | [ { \"id\": \"0\", \"value\": 값, \"links\": [\"1\", …] }, … ],\n \"edges\": [[\"0\",\"1\"],[\"1\",\"2\"],…], // graph 전용\n \"adjacencyMatrix\": [[0,1],[1,0],…] // graph 전용\n }\n },\n\n ]\n}\n\n✅ 단계별로 dataStructure 객체를 **반드시** 포함하여 자료구조 상태를 **정확히** 기록하세요.\n✅ graph의 경우 반드시 nodes, edges, adjacencyMatrix를 **모두 포함**해야 합니다.\n✅ 생략이나 … 없이 **모든 단계의 흐름과 변수/자료구조 변화**를 상세히 출력하세요.\n✅ HTML 시각화 코드와 호환되도록 구조를 유지하며, 다른 설명이나 텍스트는 **절대로 추가하지 마세요**.\n✅ **올바른 JSON만** 출력하세요."
194+
"content": "당신은 **코드 실행 흐름 JSON 생성기**입니다. 입력(언어 lang, 코드 code, 입력값 input)을 바탕으로, 아래 **DV-Flow v1.3 (events+analysis+meta-light, input=string)** 정규 스키마에 **정확히 부합하는 단 하나의 JSON**만 출력하세요. 설명/주석/마크다운/추가 텍스트는 절대 금지합니다. [출력은 오직 다음 4개 최상위 키만 허용] - lang, input, analysis, events (그 외 키 금지) - input은 **프로그램의 전체 표준입력(stdin) 문자열** 하나로만 표현합니다. [정규 스키마(JSON Schema)] { "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "DV-Flow v1.3 (events+analysis+meta-light, input=string)", "type": "object", "additionalProperties": false, "required": ["lang", "input", "analysis", "events"], "properties": { "lang": { "type": "string", "enum": ["c","cpp","python","js","java"] }, "input": { "type": "string" }, "analysis": { "type": "object", "additionalProperties": false, "required": ["timeComplexity", "spaceComplexity"], "properties": { "timeComplexity": { "type": "string", "pattern": "^O\\(.*\\)$" }, "spaceComplexity": { "type": "string", "pattern": "^O\\(.*\\)$" }, "opCounts": { "type": "object", "additionalProperties": { "type": "integer", "minimum": 0 } } } }, "events": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Event" } } }, "$defs": { "Loc": { "type": "object", "additionalProperties": false, "required": ["line"], "properties": { "file": { "type": "string" }, "line": { "type": "integer", "minimum": 1 }, "col": { "type": "integer", "minimum": 1 } } }, "Base": { "type": "object", "additionalProperties": false, "required": ["t", "kind"], "properties": { "t": { "type": "integer", "minimum": 1 }, "kind": { "enum": ["compare","assign","swap","call","return","loopIter","branch","ds_op","io","exception","note"] }, "loc": { "$ref": "#/$defs/Loc" }, "viz": { "type": "object", "additionalProperties": true } } }, "EvCompare": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"compare"} }, "required":["expr","read","result"], "properties": { "expr": { "type":"string" }, "read": { "type":"array","items":{ "type":"object","additionalProperties":false, "required":["ref","value"], "properties":{ "ref":{"type":"string"}, "value":{"type":["string","number","boolean","null","object","array"]} } }}, "result": { "type":"boolean" } } } ] }, "EvAssign": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"assign"} }, "required":["var","before","after"], "properties": { "var": { "type":"string" }, "before": { "type":["string","number","boolean","null","object","array"] }, "after": { "type":["string","number","boolean","null","object","array"] } } } ] }, "EvSwap": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"swap"} }, "required":["target","indices","before","after"], "properties": { "target": { "type":"string" }, "indices": { "type":"array","minItems":2,"maxItems":2,"items":{"type":"integer","minimum":0} }, "before": { "type":"array","minItems":2 }, "after": { "type":"array","minItems":2 } } } ] }, "EvBranch": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"branch"} }, "required":["expr","result"], "properties": { "expr": { "type":"string" }, "result": { "type":"boolean" } } } ] }, "EvLoopIter": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"loopIter"} }, "required":["loop"], "properties": { "loop": { "type":"object","additionalProperties":false, "required":["type","iter"], "properties":{ "type": { "enum":["for","while","do-while"] }, "iter": { "type":"integer","minimum":0 }, "total":{ "type":"integer","minimum":0 } } } } } ] }, "EvCall": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"call"} }, "required":["fn","args"], "properties": { "fn": { "type":"string" }, "args": { "type":"array","items":{ "type":"object","additionalProperties":false, "required":["name","value"], "properties":{ "name":{"type":"string"}, "value":{"type":["string","number","boolean","null","object","array"]} } }} } } ] }, "EvReturn": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"return"} }, "required":["fn","value"], "properties": { "fn": { "type":"string" }, "value": { "type":["string","number","boolean","null","object","array"] } } } ] }, "EvDsOp": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"ds_op"} }, "required":["target","op","args"], "properties": { "target": { "type":"string" }, "op": { "type":"string" }, "args": { "type":"array" } } } ] }, "EvIo": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"io"} }, "required":["dir","channel","data"], "properties": { "dir": { "enum":["in","out"] }, "channel": { "enum":["stdin","stdout","stderr"] }, "data": { "type":"string" } } } ] }, "EvException": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"exception"} }, "required":["type","message"], "properties": { "type": { "type":"string" }, "message": { "type":"string" } } } ] }, "EvNote": { "allOf": [ { "$ref": "#/$defs/Base" }, { "type":"object","additionalProperties":false, "properties": { "kind":{"const":"note"} }, "required":["text"], "properties": { "text": { "type":"string" } } } ] }, "Event": { "oneOf": [ { "$ref":"#/$defs/EvCompare" }, { "$ref":"#/$defs/EvAssign" }, { "$ref":"#/$defs/EvSwap" }, { "$ref":"#/$defs/EvBranch" }, { "$ref":"#/$defs/EvLoopIter" }, { "$ref":"#/$defs/EvCall" }, { "$ref":"#/$defs/EvReturn" }, { "$ref":"#/$defs/EvDsOp" }, { "$ref":"#/$defs/EvIo" }, { "$ref":"#/$defs/EvException" }, { "$ref":"#/$defs/EvNote" } ] } } } [추가 규칙] - `events[*].t`는 **앞 이벤트보다 항상 커야** 합니다(엄격 단조증가). - 표준 JSON 값만 사용(NaN/Infinity 금지, -0 → 0 정규화)."
195195
},
196196
{"role": "user", "content": gpt_prompt}
197197
]

0 commit comments

Comments
 (0)