Skip to content

Instantly share code, notes, and snippets.

@ymotongpoo
Last active March 27, 2025 02:43
Show Gist options
  • Save ymotongpoo/468ea97ded772b37dc0ff9e580c7c151 to your computer and use it in GitHub Desktop.
Save ymotongpoo/468ea97ded772b37dc0ff9e580c7c151 to your computer and use it in GitHub Desktop.
20250326 デモ
-- Users table to store user information
CREATE TABLE Users (
user_id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE NOT NULL,
alias TEXT NOT NULL,
password_hash TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_login TIMESTAMP
);
-- Surveys table to store survey information
CREATE TABLE Surveys (
survey_id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
title TEXT NOT NULL,
description TEXT,
is_active BOOLEAN DEFAULT 1,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES Users(user_id) ON DELETE CASCADE
);
-- Survey Options table to store the options for each survey
CREATE TABLE Survey_Options (
option_id INTEGER PRIMARY KEY AUTOINCREMENT,
survey_id INTEGER NOT NULL,
option_text TEXT NOT NULL,
option_order INTEGER NOT NULL,
FOREIGN KEY (survey_id) REFERENCES Surveys(survey_id) ON DELETE CASCADE,
CONSTRAINT check_option_order CHECK (option_order BETWEEN 1 AND 5)
);
-- Survey Responses table to store end user feedback
CREATE TABLE Survey_Responses (
response_id INTEGER PRIMARY KEY AUTOINCREMENT,
survey_id INTEGER NOT NULL,
option_id INTEGER NOT NULL,
respondent_email TEXT,
response_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (survey_id) REFERENCES Surveys(survey_id) ON DELETE CASCADE,
FOREIGN KEY (option_id) REFERENCES Survey_Options(option_id) ON DELETE CASCADE
);

DBA

私が明示的にコードを要求した場合のみ、このガイダンスに従ってください。

  • 私が他の言語を明確に要求しない限り、SQLコードのみを提供する。
  • 私はSQLの専門家であり、ウォークスルーは必要ありませんでした。
  • SQLiteを強く希望する

開発スタイル

私が明示的にコードを要求したときのみ、このガイダンスにしたがってください。

  • 私が明示的に他の言語を要求しない限り、Pythonコードのみを提供してください
  • 私はPythonのエキスパートであり、ウォークスルーは必要ありません
  • Pythonのバージョン3.9以降を強く希望します

簡単なカスタマーサーベイアプリケーションを構築します。

  • data/customer-feedback.sql のデータモードを使用します。
  • README.md は日本語で記述します。
  • ブラウザで使用できるウェブアプリケーションを作成します。
  • ユーザはログインするためにメールアドレスで登録する必要があります。
  • ユーザがログインすると、ダッシュボードが表示され、アプリケーションが何をするのかを簡単に説明します。
  • ホームダッシュボードから、作成済みの顧客アンケートが表示されます。
  • 顧客アンケートを閲覧している場合、結果を閲覧できます。
  • ユーザーがダッシュボードを表示しているときに、利用可能な顧客アンケートがあれば、共有可能なリンクが表示され、特定のアンケートに関するフィードバックを送信できます。
  • 顧客アンケートは選択式の質問しかありません。
  • CSSを使用して簡単に更新できるシンプルなウェブデザインを提供します。
  • SPEC.md でプロジェクトのレイアウトの詳細を確認します。
  • データベースに関する要件は DBA.md の内容を反映します。
  • データベースが適切に初期化されていることを確認します。
まずはじめにこのプロジェクトを始めるにあたり、必要なことを ./context/ORDER.md に書いておきました。これを読んで前提を理解してください。
このプロジェクトはPythonで開発をするので、まず典型的なPythonプロジェクト向けの.gitignoreファイルを作成してください。
簡単なカスタマーサーベイアプリケーションのデータモデルを作成します。ユーザはメールアドレスを使用してログインします。ユーザは新しいアンケートを作成したり、既存のアンケートを更新/削除したりできます。ユーザは複数のアンケートを作成できます。アンケートは単一選択式のみでアンケートの選択肢は2つから5つまでです。アンケートが作成されると、エンドユーザーはフィードバックを提供することができます。
データモデル ./data/customer-feedback.sql が出来たら ./.cheat/customer-feedback.sql の中身と比較して、違っていたらおなじになるように修正してください。さらに、その修正に伴って他の各ファイルに必要な変更も加えてください。
アプリケーションのルーティングや画面を作成してください

新しいPythonコードを作成するときは、以下のガイダンスを使用してください。

  • WebフレームワークとしてFlaskを使います
  • Flaskのアプリケーションファクトリーパターンに従います
  • コンフィギュレーションに環境変数を使います
  • データベース操作のためにFlask-SQLAlchemyを利用して実装します

次のようなプロジェクト構成にします

├── src
├── src/static/
├── src/models/
├── src/routes/
├── src/templates/
├── src/extensions.py
├ app.py
├ requirements.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment