SQLite 데이터
저장 연결하기接上 SQLite
数据保存
SQLite Viewer에서 그 행이 실제로 있는지 봅니다.留下一条记录,在画面上再确认一次,
并在 SQLite Viewer 里看那一行是不是真的在。
오늘의 원칙今天的原则
모든 프로젝트가 AI와 함께 사용자 흐름에 SQLite 데이터 기억 기능을 연결합니다. 기록을 남기고 다시 확인하는 흐름을 실행한 뒤, SQLite Viewer에서 같은 정보가 실제로 저장되었는지 확인합니다.每个项目都要和 AI 一起,把 SQLite 数据记忆功能接到用户流程上。跑一遍“留下记录、再次查看”的流程,然后在 SQLite Viewer 里确认同一份信息是否真的被保存。
화면에서 한 번, DB에서 한 번, 재실행 뒤 한 번. 세 번 모두 통과해야 “기억한다”라고 말할 수 있습니다. 화면에만 보이는 것은 아직 기억이 아닙니다.画面上一次、数据库里一次、重启之后一次。三次都过了,才能说“它记住了”。只在画面上看得到,还不算记忆。
저장할 핵심 기록을 다시 확인한다再确认一遍要保存的核心记录 실습实践
- 핵심 기능을 실행하면 생기는 기록执行核心功能会产生的记录
- 그 기록에서 꼭 남길 정보这条记录里一定要留的信息
- 사용자가 다시 보는 때用户再看它的时候
- 저장하지 않을 개인정보·불필요한 값不保存的个人信息与多余的值
- 먼저 연결할 후보 테이블先接上的候选数据表
계산 · 변환처럼 결과를 즉시 보여 주는 서비스도 ‘입력과 결과의 최근 기록’처럼 핵심 기능과 연결된 최소 기록을 남깁니다.像计算、换算这种即时给出结果的服务,也要留下“输入与结果的最近记录”这样与核心功能相连的最小记录。
DB 사용을 보여 주기 위한 가짜 방문 횟수나 서비스와 관계없는 메모를 추가하지 않습니다.不要为了显示用了数据库而加假的访问次数,或与服务无关的备注。
저장 연결 전 상태를 확인한다接保存之前先确认状态 실습实践
- 프로젝트가 실행된다.项目能运行。
- 첫 화면이 열린다.第一个画面能打开。
- 핵심 기능 한 가지가 작동한다.那一个核心功能能用。
- 대표 정상 흐름과 핵심 예외 흐름이 작동한다.代表性正常流程与核心例外流程都能跑。
- PRD와 9회 개발 계획에서 기억할 정보와 다시 보는 순간을 찾았다.从 PRD 与第 9 次课开发计划里找到了要记住的信息与再看的时刻。
- SQLite Viewer를 설치했다.装好了 SQLite Viewer。
현재 작동 상태를 확인하지 않고 DB를 추가하면 새 문제와 기존 문제를 구분하기 어렵습니다. 버튼이 안 되는 것이 저장 때문인지 원래부터였는지 알 수 없게 됩니다.不确认当前的运行状态就加数据库,就分不清新问题和原有问题。按钮不好用,到底是因为保存,还是本来就不行,会说不清。
AI에게 데이터 기준을 전달한다把数据基准交给 AI 실습实践
현재 대표 사용자 흐름은 처음부터 결과까지 작동해.
docs 폴더의 PRD와 09_development_plan_학생ID_이름.md를 읽어 줘.
[이번 단계]
- 사용자 흐름에서 기억하기로 한 정보만 SQLite에 저장
- 사용자가 다시 보는 단계에서 저장한 결과를 화면에 표시
- 프로젝트를 다시 실행해도 기록 유지
- 표준 프로젝트가 정한 DB 위치와 방식 사용
[제한]
- 실제 개인정보와 비밀정보 저장 금지
- 불필요한 테이블과 열 추가 금지
- 파일 업로드 기능 추가 금지
- 새 패키지와 전체 프로젝트 재작성 금지
- 사용자 입력을 안전한 DB 기능을 통해 처리
코드를 바꾸기 전에 다음을 쉬운 말로 설명해 줘.
- 사용자의 어떤 행동에서 무엇을 기억할지
- 사용자가 언제 그 정보를 다시 보게 될지
- 필요한 테이블의 역할
- 수정할 파일과 확인할 사용자 흐름
교사의 승인을 받았다면 9절의 선택 참고 지침을 따로 사용합니다. 승인 없이 이 기능을 추가하지 않습니다.若已获老师批准,则另按第 9 节的可选参考指引来做。未获批准不要加这个功能。
AI의 제안을 계획서와 대조한다把 AI 的提议与计划书对照 실습实践
- 테이블의 역할이 후보 테이블과 맞는가?表的作用与候选数据表一致吗?
- 저장할 정보가 핵심 기능에 필요한가?要保存的信息对核心功能必要吗?
- 계획서에 없는 개인정보가 추가되지 않았는가?有没有加了计划书里没有的个人信息?
- 불필요하게 복잡한 관계를 만들지 않았는가?有没有造出不必要的复杂关系?
- 사용자가 남긴 정보와 저장할 값이 연결되는가?用户留下的信息与要保存的值对得上吗?
- 사용자가 다시 보는 단계에서 필요한 정보가 나타나는가?在用户再次查看的那一步,需要的信息会出现吗?
- 표준 DB 위치와 패키지를 유지하는가?是否保持了标准的数据库位置与包?
세부 열 · 자료형 · 키를 학생이 다시 설계하지 않습니다. 사용자의 기대와 맞지 않는 부분만 지적합니다.细节的列、数据类型、键,学生不重新设计。只指出与用户期待不符的地方。
기억하고 다시 보는 흐름을 실행한다跑一遍“记住并再看到”的流程 실습实践
- AI가 제안한 변경 범위를 확인한다.确认 AI 提议的改动范围。
- 변경을 적용하고 프로젝트를 실행한다.应用改动并运行项目。
- 대표 흐름으로 정상 기록 한 개를 만든다.按代表流程造出一条正常记录。
- 화면에서 완료 반응을 확인한다.在画面上确认完成的反应。
- 사용자가 기록을 다시 보는 단계로 이동한다.走到用户再次查看记录的那一步。
- 같은 정보가 화면에 나타나는지 확인한다.确认同一份信息是否出现在画面上。
- 사용자가 한 행동用户做的行动
- 기억해야 할 정보该记住的信息
- 다시 보는 단계再次查看的步骤
- 화면에서 확인한 내용在画面上确认到的内容
SQLite Viewer로 실제 데이터를 확인한다用 SQLite Viewer 确认真实数据 실습实践
- 프로젝트에서 표준
.db파일을 찾는다.在项目里找到标准的.db文件。 - VS Code에서 파일을 클릭하여 SQLite Viewer로 연다.在 VS Code 里点开文件,用 SQLite Viewer 打开。
- 계획서와 관련된 테이블 이름을 찾는다.找到与计划书对应的表名。
- 화면에서 입력한 값이 행으로 보이는지 확인한다.确认在画面上输入的值是否显示为一行。
- 화면의 값과 DB의 값이 같은지 비교한다.比较画面上的值与数据库里的值是否相同。
- DB 파일 위치数据库文件位置
- 확인한 테이블查看的表
- 행의 개수行数
- 화면과 일치하는 값与画面一致的值
- 불필요하게 저장된 값多余保存的值
SQLite Viewer에서 값을 직접 수정하거나 삭제하지 않습니다. 최신 값이 보이지 않으면 저장 동작을 마친 뒤 DB 화면을 다시 엽니다.在 SQLite Viewer 里不直接修改或删除值。若看不到最新的值,就在保存动作完成后重新打开数据库界面。
프로젝트 재실행 뒤 사용자 경험을 확인한다重启项目后确认用户体验 실습实践
- 프로젝트 실행을 완전히 중지한다.彻底停止项目的运行。
- 같은 방법으로 다시 실행한다.用同样的方法重新运行。
- 브라우저를 새로 연다.重新打开浏览器。
- 이전 기록이 다시 나타나는지 확인한다.确认之前的记录是否再次出现。
- SQLite Viewer에서 같은 행이 남아 있는지 확인한다.在 SQLite Viewer 里确认那一行是否还在。
기록이 사라지면 PRD와 9회의 사용자 흐름에 맞지 않습니다. 10절의 요청문으로 기억하기 · 다시 불러오기 · 화면에 보여 주기 중 어느 단계가 문제인지부터 좁힙니다.记录消失,就与 PRD 和第 9 次课的用户流程不符。用第 10 节的请求文,先在记住 · 取回 · 显示到画面三步里收窄问题出在哪一步。
껐다 켜도 기록이 남아 있고 사용자가 그것을 다시 볼 수 있다면, 대표 흐름과 데이터 기억 기능이 함께 작동하는 것입니다.关掉再开记录还在,用户也能再看到,就说明代表流程与数据记忆功能一起跑通了。
복잡하게 만들지 않았는지 확인한다确认有没有做复杂了 실습实践
- 핵심 기능과 관계없는 기록을 추가하지 않았다.没有加与核心功能无关的记录。
- 한 테이블로 충분한데 여러 테이블로 나누지 않았다.一张表就够,没有拆成好几张。
- 실제 개인정보와 불필요한 입력값을 저장하지 않았다.没有保存真实个人信息与多余的输入值。
- 기록을 만드는 행동과 다시 보는 화면이 사용자 흐름에 포함된다.产生记录的行为与再次查看的画面,都包含在用户流程里。
- 학생이 열 · 자료형 · 관계를 직접 설계하거나 외우지 않는다.学生没有亲自设计或背诵列、数据类型与关系。
AI는 표를 더 잘게 나누는 방향으로 답하기 쉽습니다. 그것이 더 전문적으로 보이기 때문입니다. 7-1에서 본 대로 나눌 이유가 없으면 하나가 정답입니다.AI 很容易往把表拆得更细的方向答,因为那看起来更专业。正如 7-1 所见,没有理由拆开时,一张就是正解。
승인된 파일 업로드 기능已获批准的文件上传功能 확장拓展
교사 승인을 받은 프로젝트만 다음 조건을 AI에게 전달합니다.只有获老师批准的项目,才把下面的条件交给 AI。
파일 업로드는 핵심 기능에 꼭 필요한 선택 기능이야.
플랫폼이 제공하는 프로젝트별 업로드 폴더만 사용해 줘.
- 교사가 허용한 확장자와 최대 크기만 받기
- 서버가 안전한 새 파일명을 만들어 저장하기
- SQLite에는 파일 자체가 아니라 표시 이름·저장 경로·설명만 기록하기
- 실행 파일과 허용하지 않은 형식은 저장하지 않고 안내하기
- 원래 파일명으로 서버 경로를 직접 만들지 않기
- 파일 내용을 명령이나 코드로 실행하지 않기
구현 전에 저장 위치, DB에 기록할 정보와 거부할 입력을 설명해 줘.
확인할 내용要确认的内容
- 허용한 작은 파일이 업로드되는가?允许的小文件能上传吗?
- 허용하지 않은 형식은 거부되는가?不允许的格式会被拒绝吗?
- 크기 제한을 넘으면 안내하는가?超过大小限制会给出提示吗?
- 업로드된 파일이 SQLite 안이 아니라 별도 폴더에 있는가?上传的文件是在单独的文件夹而不是 SQLite 里吗?
- DB에는 파일 정보만 기록되는가?数据库里只记了文件信息吗?
문제를 한 가지씩 수정한다问题一个一个改 실습实践
사용자 흐름에서 ___ 단계까지는 예상대로 작동하고,
기억하거나 다시 보는 단계에서 ___이 예상과 달라.
사용자가 한 행동은 ___이고 화면에 보인 내용은 ___이야.
전체 DB 구조를 다시 만들지 말고,
기억하기·다시 불러오기·화면에 보여 주기 중 문제 단계를 먼저 설명해 줘.
가장 작은 수정 하나만 제안해 줘.
- 기억하기 — DB에 행이 아예 생기지 않는다记住 —— 数据库里根本没有新行
- 다시 불러오기 — DB에는 행이 있는데 화면이 비어 있다取回 —— 数据库里有行,画面却是空的
- 화면에 보여 주기 — 불러왔지만 다른 값이 보인다显示到画面 —— 取回来了,显示的却是别的值
SQLite Viewer가 이 셋을 구분해 줍니다. 행이 있는지 없는지만 보면 앞의 둘이 갈립니다.SQLite Viewer 能帮你分开这三种。只看有没有那一行,前两种就分开了。
같은 입력으로 수정 전후를 다시 확인합니다. 입력을 바꾸면 무엇 때문에 달라졌는지 알 수 없습니다.用同样的输入把改前改后各确认一遍。换了输入,就说不清是什么导致了差异。
완료 확인과 오늘의 결과完成确认与今天的成果
- 핵심 기능과 관련된 의미 있는 기록을 정했다.定下了与核心功能相关的有意义的记录。
- AI의 저장 제안을 PRD와 9회의 사용자 흐름에 대조했다.把 AI 的保存提议与 PRD 和第 9 次课的用户流程对照了。
- 화면에서 저장된 기록을 다시 확인했다.在画面上再次确认了已保存的记录。
- SQLite Viewer에서 테이블과 행을 확인했다.在 SQLite Viewer 里确认了表与行。
- 프로젝트 재실행 뒤 사용자가 기록을 다시 볼 수 있는지 확인했다.确认了项目重启后用户仍能再看到记录。
- 실제 개인정보와 계획서에 없는 정보를 저장하지 않았다.没有保存真实个人信息与计划书里没有的信息。
- 파일 업로드는 교사 승인 없이 추가하지 않았다.文件上传未经老师批准没有添加。
- 대표 사용자 흐름과 SQLite 데이터 기억 기능이 함께 작동代表性用户流程与 SQLite 数据记忆功能一起跑通
- 껐다 켜도 기록이 남아 있고 사용자가 다시 볼 수 있음关掉再开,记录还在,用户能再看到
12회에는 기능을 더 늘리지 않습니다. 정상 흐름, 예외 뒤 회복, 저장된 기록을 다시 보는 흐름을 사용자 관점에서 시험합니다.第 12 次课不再增加功能。而是从用户视角测试正常流程、例外后的恢复,以及再次查看已保存记录的流程。
지금까지는 “되게 만드는” 시간이었고, 다음은 “정말 되는지 확인하는” 시간입니다.到目前为止是“把它做成”的时间,接下来是“确认它真的成了”的时间。
12-1. 사용자 흐름으로 서비스 테스트하기 →