ApiLogicServer 14.3.20__py3-none-any.whl → 14.3.25__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- api_logic_server_cli/api_logic_server.py +4 -3
- api_logic_server_cli/api_logic_server_info.yaml +3 -3
- api_logic_server_cli/cli.py +38 -0
- api_logic_server_cli/database/nw-gold.sqlite +0 -0
- api_logic_server_cli/genai/genai.py +2 -1
- api_logic_server_cli/genai/genai_graphics.py +165 -0
- api_logic_server_cli/genai/genai_logic_builder.py +2 -2
- api_logic_server_cli/genai/genai_svcs.py +8 -0
- api_logic_server_cli/prototypes/base/config/config.py +58 -30
- api_logic_server_cli/prototypes/base/docs/graphics/readme.md +12 -0
- api_logic_server_cli/prototypes/base/security/authentication_provider/keycloak/auth_provider.py +1 -1
- api_logic_server_cli/prototypes/base/security/declare_security.py +4 -0
- api_logic_server_cli/prototypes/base/ui/admin/admin_loader.py +3 -1
- api_logic_server_cli/prototypes/manager/README.md +30 -1
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt +2 -0
- api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.response_example +68 -60
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_services.py +41 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/html_template.jinja +76 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/index.html +19 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/sales_by_region.jinja +63 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/service_template_jsonapi_rpc.jinja +37 -0
- api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/service_template_unused.jinja +38 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics.prompt +18 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics_request.prompt +5 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/response_format.prompt +8 -0
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts.prompt +2 -0
- api_logic_server_cli/prototypes/manager/webgenai/docker-compose.yml +27 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request copy.json +892 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request.json +6 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.json +17 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.yaml +59 -0
- api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/sales_by_category.prompt +1 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/METADATA +1 -1
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/RECORD +38 -26
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/WHEEL +1 -1
- api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/zsqlite_inserts_iterations.prompt +0 -29
- api_logic_server_cli/prototypes/manager/webgenai/docker-compose-webg.yml +0 -33
- api_logic_server_cli/prototypes/manager/webgenai/webg_config/license.json +0 -6
- api_logic_server_cli/prototypes/manager/webgenai/webg_config/web_genai.txt +0 -13
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/entry_points.txt +0 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/licenses/LICENSE +0 -0
- {apilogicserver-14.3.20.dist-info → apilogicserver-14.3.25.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"role": "user",
|
|
4
|
+
"content": "You are a data modelling expert and python software architect who expands on user input ideas. \n\n<responseFormat>\nclass Rule(BaseModel):\n name: str\n description: str\n use_case: str # specified use case or requirement name (use 'General' if missing)\n entity: str # the entity being constrained or derived\n code: str # logicbank rule code\n \nclass Model(BaseModel):\n classname: str\n code: str # sqlalchemy model code\n sqlite_create: str # sqlite create table statement\n description: str\n name: str\n\nclass TestDataRow(BaseModel):\n test_data_row_variable: str # the Python test data row variable\n code: str # Python code to create a test data row instance\n\nclass Graphic(BaseModel):\n sqlalchemy_query: str # sqlalchemy query using group by, returns result = { \"result\": [ (\"name\", \"value\") ] }\n sql_query: str # sql query using group by, returns result = { \"result\": [ (\"name\", \"value\") ] }\n classes_used: str # comma-delimited list of classes used in sqlalchemy_query\n name: str # suggested Python name for sqlalchemy_query\n html_code: str # create a java script app to show a bar chart from sqlalchemy_query result\n\nclass WGResult(BaseModel): # must match system/genai/prompt_inserts/response_format.prompt\n # response: str # result\n models : List[Model] # list of sqlalchemy classes in the response\n rules : List[Rule] # list rule declarations\n graphics: List[Graphic] # list of Graphic objects\n test_data: str\n test_data_rows: List[TestDataRow] # list of test data rows\n test_data_sqlite: str # test data as sqlite INSERT statements\n name: str # suggest a short name for the project\n\nFormat the response as a WGResult.\n\n</responseFormat>\n\n\nCreate WGResult Graphics for prompts like 'graph sales by region'.\n * use 'sales by region' to create a WGResult Graphic.sqlalchemy_query\n * Be sure to use class names, not table names\n * for example, using Northwind:\n # SQLAlchemy query for Sales by Category\n sales_by_category = (\n session.query(\n Category.CategoryName,\n func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).label(\"TotalSales\")\n )\n .join(Product, category.Id == Product.CategoryId)\n .join(OrderDetail, Product.Id == OrderDetail.ProductId)\n .join(Order, OrderDetail.OrderId == Order.Id)\n .filter(Order.ShippedDate.isnot(None)) # Consider only shipped orders\n .group_by(Category.CategoryName)\n .order_by(func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).desc())\n )\n\n# coding: utf-8\n\nfrom sqlalchemy import DECIMAL, DateTime # API Logic Server GenAI assist\n\nfrom sqlalchemy import Boolean, Column, DECIMAL, Date, Double, ForeignKey, ForeignKeyConstraint, Integer, String, Table, Text, text\n\nfrom sqlalchemy.orm import relationship\n\nfrom sqlalchemy.ext.declarative import declarative_base\n\n\n\n########################################################################################################################\n\n# Classes describing database for SqlAlchemy ORM, initially created by schema introspection.\n\n#\n\n# Alter this file per your database maintenance policy\n\n# See https://apilogicserver.github.io/Docs/Project-Rebuild/#rebuilding\n\n#\n\n# Created: March 25, 2025 19:54:24\n\n# Database: sqlite:////Users/val/dev/ApiLogicServer/ApiLogicServer-dev/build_and_test/ApiLogicServer/samples/nw_sample_nocust/database/db.sqlite\n\n# Dialect: sqlite\n\n#\n\n# mypy: ignore-errors\n\n########################################################################################################################\n\n \n\nfrom database.system.SAFRSBaseX import SAFRSBaseX, TestBase\n\nfrom flask_login import UserMixin\n\nimport safrs, flask_sqlalchemy, os\n\nfrom safrs import jsonapi_attr\n\nfrom flask_sqlalchemy import SQLAlchemy\n\nfrom sqlalchemy.orm import relationship\n\nfrom sqlalchemy.orm import Mapped\n\nfrom sqlalchemy.sql.sqltypes import NullType\n\nfrom typing import List\n\n\n\ndb = SQLAlchemy() \n\nBase = declarative_base() # type: flask_sqlalchemy.model.DefaultMeta\n\nmetadata = Base.metadata\n\n\n\n#NullType = db.String # datatype fixup\n\n#TIMESTAMP= db.TIMESTAMP\n\n\n\nfrom sqlalchemy.dialects.sqlite import *\n\n\n\nif os.getenv('APILOGICPROJECT_NO_FLASK') is None or os.getenv('APILOGICPROJECT_NO_FLASK') == 'None':\n\n Base = SAFRSBaseX # enables rules to be used outside of Flask, e.g., test data loading\n\nelse:\n\n Base = TestBase # ensure proper types, so rules work for data loading\n\n print('*** Models.py Using TestBase ***')\n\n\n\n\n\n\n\nclass Category(Base): # type: ignore\n\n __tablename__ = 'CategoryTableNameTest'\n\n _s_collection_name = 'Category' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n CategoryName_ColumnName = Column(String(8000))\n\n Description = Column(String(8000))\n\n Client_id = Column(Integer)\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Customer(Base): # type: ignore\n\n __tablename__ = 'Customer'\n\n _s_collection_name = 'Customer' # type: ignore\n\n\n\n Id = Column(String(8000), primary_key=True)\n\n CompanyName = Column(String(8000))\n\n ContactName = Column(String(8000))\n\n ContactTitle = Column(String(8000))\n\n Address = Column(String(8000))\n\n City = Column(String(8000))\n\n Region = Column(String(8000))\n\n PostalCode = Column(String(8000))\n\n Country = Column(String(8000))\n\n Phone = Column(String(8000))\n\n Fax = Column(String(8000))\n\n Balance : DECIMAL = Column(DECIMAL)\n\n CreditLimit : DECIMAL = Column(DECIMAL)\n\n OrderCount = Column(Integer, server_default=text(\"0\"))\n\n UnpaidOrderCount = Column(Integer, server_default=text(\"0\"))\n\n Client_id = Column(Integer)\n\n allow_client_generated_ids = True\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Customer\")\n\n\n\n\n\n\n\nclass CustomerDemographic(Base): # type: ignore\n\n __tablename__ = 'CustomerDemographic'\n\n _s_collection_name = 'CustomerDemographic' # type: ignore\n\n\n\n Id = Column(String(8000), primary_key=True)\n\n CustomerDesc = Column(String(8000))\n\n allow_client_generated_ids = True\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Department(Base): # type: ignore\n\n __tablename__ = 'Department'\n\n _s_collection_name = 'Department' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n DepartmentId = Column(ForeignKey('Department.Id'))\n\n DepartmentName = Column(String(100))\n\n SecurityLevel = Column(Integer, server_default=text(\"0\"))\n\n\n\n # parent relationships (access parent)\n\n Department : Mapped[\"Department\"] = relationship(remote_side=[Id], back_populates=(\"DepartmentList\"))\n\n\n\n # child relationships (access children)\n\n DepartmentList : Mapped[List[\"Department\"]] = relationship(back_populates=\"Department\")\n\n EmployeeList : Mapped[List[\"Employee\"]] = relationship(foreign_keys='[Employee.OnLoanDepartmentId]', back_populates=\"OnLoanDepartment\")\n\n WorksForEmployeeList : Mapped[List[\"Employee\"]] = relationship(foreign_keys='[Employee.WorksForDepartmentId]', back_populates=\"WorksForDepartment\")\n\n\n\n\n\n\n\nclass Location(Base): # type: ignore\n\n __tablename__ = 'Location'\n\n _s_collection_name = 'Location' # type: ignore\n\n\n\n country = Column(String(50), primary_key=True)\n\n city = Column(String(50), primary_key=True)\n\n notes = Column(String(256))\n\n allow_client_generated_ids = True\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Location\")\n\n\n\n\n\n\n\nclass Product(Base): # type: ignore\n\n __tablename__ = 'Product'\n\n _s_collection_name = 'Product' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n ProductName = Column(String(8000))\n\n SupplierId = Column(Integer, nullable=False)\n\n CategoryId = Column(Integer, nullable=False)\n\n QuantityPerUnit = Column(String(8000))\n\n UnitPrice : DECIMAL = Column(DECIMAL, nullable=False)\n\n UnitsInStock = Column(Integer, nullable=False)\n\n UnitsOnOrder = Column(Integer, nullable=False)\n\n ReorderLevel = Column(Integer, nullable=False)\n\n Discontinued = Column(Integer, nullable=False)\n\n UnitsShipped = Column(Integer)\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n OrderDetailList : Mapped[List[\"OrderDetail\"]] = relationship(back_populates=\"Product\")\n\n\n\n\n\n\n\nt_ProductDetails_View = Table(\n\n 'ProductDetails_View', metadata,\n\n Column('Id', Integer),\n\n Column('ProductName', String(8000)),\n\n Column('SupplierId', Integer),\n\n Column('CategoryId', Integer),\n\n Column('QuantityPerUnit', String(8000)),\n\n Column('UnitPrice', DECIMAL),\n\n Column('UnitsInStock', Integer),\n\n Column('UnitsOnOrder', Integer),\n\n Column('ReorderLevel', Integer),\n\n Column('Discontinued', Integer),\n\n Column('UnitsShipped', Integer),\n\n Column('CategoryName_ColumnName', String(8000)),\n\n Column('CategoryDescription', String(8000)),\n\n Column('SupplierName', String(8000)),\n\n Column('SupplierRegion', String(8000))\n\n)\n\n\n\n\n\nclass Region(Base): # type: ignore\n\n __tablename__ = 'Region'\n\n _s_collection_name = 'Region' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n RegionDescription = Column(String(8000))\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass SampleDBVersion(Base): # type: ignore\n\n __tablename__ = 'SampleDBVersion'\n\n _s_collection_name = 'SampleDBVersion' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n Notes = Column(String(800))\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Shipper(Base): # type: ignore\n\n __tablename__ = 'Shipper'\n\n _s_collection_name = 'Shipper' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n CompanyName = Column(String(8000))\n\n Phone = Column(String(8000))\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Supplier(Base): # type: ignore\n\n __tablename__ = 'Supplier'\n\n _s_collection_name = 'Supplier' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n CompanyName = Column(String(8000))\n\n ContactName = Column(String(8000))\n\n ContactTitle = Column(String(8000))\n\n Address = Column(String(8000))\n\n City = Column(String(8000))\n\n Region = Column(String(8000))\n\n PostalCode = Column(String(8000))\n\n Country = Column(String(8000))\n\n Phone = Column(String(8000))\n\n Fax = Column(String(8000))\n\n HomePage = Column(String(8000))\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Territory(Base): # type: ignore\n\n __tablename__ = 'Territory'\n\n _s_collection_name = 'Territory' # type: ignore\n\n\n\n Id = Column(String(8000), primary_key=True)\n\n TerritoryDescription = Column(String(8000))\n\n RegionId = Column(Integer, nullable=False)\n\n allow_client_generated_ids = True\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n EmployeeTerritoryList : Mapped[List[\"EmployeeTerritory\"]] = relationship(back_populates=\"Territory\")\n\n\n\n\n\n\n\nclass Union(Base): # type: ignore\n\n __tablename__ = 'Union'\n\n _s_collection_name = 'Union' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n Name = Column(String(80))\n\n\n\n # parent relationships (access parent)\n\n\n\n # child relationships (access children)\n\n EmployeeList : Mapped[List[\"Employee\"]] = relationship(back_populates=\"Union\")\n\n\n\n\n\n\n\nclass Employee(Base): # type: ignore\n\n __tablename__ = 'Employee'\n\n _s_collection_name = 'Employee' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n LastName = Column(String(8000))\n\n FirstName = Column(String(8000))\n\n Title = Column(String(8000))\n\n TitleOfCourtesy = Column(String(8000))\n\n BirthDate = Column(String(8000))\n\n HireDate = Column(String(8000))\n\n Address = Column(String(8000))\n\n City = Column(String(8000))\n\n Region = Column(String(8000))\n\n PostalCode = Column(String(8000))\n\n Country = Column(String(8000))\n\n HomePhone = Column(String(8000))\n\n Extension = Column(String(8000))\n\n Notes = Column(String(8000))\n\n ReportsTo = Column(Integer, index=True)\n\n PhotoPath = Column(String(8000))\n\n EmployeeType = Column(String(16), server_default=text(\"Salaried\"))\n\n Salary : DECIMAL = Column(DECIMAL)\n\n WorksForDepartmentId = Column(ForeignKey('Department.Id'))\n\n OnLoanDepartmentId = Column(ForeignKey('Department.Id'))\n\n UnionId = Column(ForeignKey('Union.Id'))\n\n Dues : DECIMAL = Column(DECIMAL)\n\n Email = Column(Text)\n\n\n\n # parent relationships (access parent)\n\n OnLoanDepartment : Mapped[\"Department\"] = relationship(foreign_keys='[Employee.OnLoanDepartmentId]', back_populates=(\"EmployeeList\"))\n\n Union : Mapped[\"Union\"] = relationship(back_populates=(\"EmployeeList\"))\n\n WorksForDepartment : Mapped[\"Department\"] = relationship(foreign_keys='[Employee.WorksForDepartmentId]', back_populates=(\"WorksForEmployeeList\"))\n\n\n\n # child relationships (access children)\n\n EmployeeAuditList : Mapped[List[\"EmployeeAudit\"]] = relationship(back_populates=\"Employee\")\n\n EmployeeTerritoryList : Mapped[List[\"EmployeeTerritory\"]] = relationship(back_populates=\"Employee\")\n\n OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Employee\")\n\n\n\n\n\n\n\nclass EmployeeAudit(Base): # type: ignore\n\n __tablename__ = 'EmployeeAudit'\n\n _s_collection_name = 'EmployeeAudit' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n Title = Column(String)\n\n Salary : DECIMAL = Column(DECIMAL)\n\n LastName = Column(String)\n\n FirstName = Column(String)\n\n EmployeeId = Column(ForeignKey('Employee.Id'))\n\n CreatedOn = Column(Text)\n\n UpdatedOn = Column(Text)\n\n CreatedBy = Column(Text)\n\n UpdatedBy = Column(Text)\n\n\n\n # parent relationships (access parent)\n\n Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"EmployeeAuditList\"))\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass EmployeeTerritory(Base): # type: ignore\n\n __tablename__ = 'EmployeeTerritory'\n\n _s_collection_name = 'EmployeeTerritory' # type: ignore\n\n\n\n Id = Column(String(8000), primary_key=True)\n\n EmployeeId = Column(ForeignKey('Employee.Id'), nullable=False)\n\n TerritoryId = Column(ForeignKey('Territory.Id'))\n\n allow_client_generated_ids = True\n\n\n\n # parent relationships (access parent)\n\n Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"EmployeeTerritoryList\"))\n\n Territory : Mapped[\"Territory\"] = relationship(back_populates=(\"EmployeeTerritoryList\"))\n\n\n\n # child relationships (access children)\n\n\n\n\n\n\n\nclass Order(Base): # type: ignore\n\n __tablename__ = 'Order'\n\n _s_collection_name = 'Order' # type: ignore\n\n __table_args__ = (\n\n ForeignKeyConstraint(['Country', 'City'], ['Location.country', 'Location.city']),\n\n )\n\n\n\n Id = Column(Integer, primary_key=True)\n\n CustomerId = Column(ForeignKey('Customer.Id'), nullable=False, index=True)\n\n EmployeeId = Column(ForeignKey('Employee.Id'), nullable=False, index=True)\n\n OrderDate = Column(String(8000))\n\n RequiredDate = Column(Date)\n\n ShippedDate = Column(String(8000))\n\n ShipVia = Column(Integer)\n\n Freight : DECIMAL = Column(DECIMAL, server_default=text(\"0\"))\n\n ShipName = Column(String(8000))\n\n ShipAddress = Column(String(8000))\n\n ShipCity = Column(String(8000))\n\n ShipRegion = Column(String(8000))\n\n ShipPostalCode = Column(String(8000))\n\n ShipCountry = Column(String(8000))\n\n AmountTotal : DECIMAL = Column(DECIMAL(10, 2))\n\n Country = Column(String(50))\n\n City = Column(String(50))\n\n Ready = Column(Boolean)\n\n OrderDetailCount = Column(Integer, server_default=text(\"0\"))\n\n CloneFromOrder = Column(ForeignKey('Order.Id'))\n\n\n\n # parent relationships (access parent)\n\n Order : Mapped[\"Order\"] = relationship(remote_side=[Id], back_populates=(\"OrderList\"))\n\n Location : Mapped[\"Location\"] = relationship(back_populates=(\"OrderList\"))\n\n Customer : Mapped[\"Customer\"] = relationship(back_populates=(\"OrderList\"))\n\n Employee : Mapped[\"Employee\"] = relationship(back_populates=(\"OrderList\"))\n\n\n\n # child relationships (access children)\n\n OrderList : Mapped[List[\"Order\"]] = relationship(back_populates=\"Order\")\n\n OrderDetailList : Mapped[List[\"OrderDetail\"]] = relationship(back_populates=\"Order\")\n\n\n\n\n\n\n\nclass OrderDetail(Base): # type: ignore\n\n __tablename__ = 'OrderDetail'\n\n _s_collection_name = 'OrderDetail' # type: ignore\n\n\n\n Id = Column(Integer, primary_key=True)\n\n OrderId = Column(ForeignKey('Order.Id'), nullable=False, index=True)\n\n ProductId = Column(ForeignKey('Product.Id'), nullable=False, index=True)\n\n UnitPrice : DECIMAL = Column(DECIMAL)\n\n Quantity = Column(Integer, server_default=text(\"1\"), nullable=False)\n\n Discount = Column(Double, server_default=text(\"0\"))\n\n Amount : DECIMAL = Column(DECIMAL)\n\n ShippedDate = Column(String(8000))\n\n\n\n # parent relationships (access parent)\n\n Order : Mapped[\"Order\"] = relationship(back_populates=(\"OrderDetailList\"))\n\n Product : Mapped[\"Product\"] = relationship(back_populates=(\"OrderDetailList\"))\n\n\n\n # child relationships (access children)\n\nGraph Sales by Category"
|
|
5
|
+
}
|
|
6
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"models": [],
|
|
3
|
+
"rules": [],
|
|
4
|
+
"graphics": [
|
|
5
|
+
{
|
|
6
|
+
"sqlalchemy_query": "sales_by_region = (\n session.query(\n Region.RegionDescription,\n func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).label(\"TotalSales\")\n )\n .join(Order, Order.ShipRegion == Region.RegionDescription)\n .join(OrderDetail, OrderDetail.OrderId == Order.Id)\n .filter(Order.ShippedDate.isnot(None)) # Consider only shipped orders\n .group_by(Region.RegionDescription)\n .order_by(func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).desc())\n)",
|
|
7
|
+
"sql_query": "SELECT Region.RegionDescription, SUM(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)) AS TotalSales\nFROM Order\nJOIN Region ON Order.ShipRegion = Region.RegionDescription\nJOIN OrderDetail ON OrderDetail.OrderId = Order.Id\nWHERE Order.ShippedDate IS NOT NULL\nGROUP BY Region.RegionDescription\nORDER BY TotalSales DESC;",
|
|
8
|
+
"classes_used": "Order, Region, OrderDetail",
|
|
9
|
+
"name": "sales_by_region_query",
|
|
10
|
+
"html_code": "<script src=\"https://cdn.jsdelivr.net/npm/chart.js\"></script>\n<canvas id=\"salesByRegionChart\" width=\"400\" height=\"400\"></canvas>\n<script>\n const ctx = document.getElementById('salesByRegionChart').getContext('2d');\n const data = {\n labels: [], // Populate with Region description\n datasets: [{\n label: 'Sales by Region',\n data: [], // Populate with total sales\n backgroundColor: 'rgba(75, 192, 192, 0.2)',\n borderColor: 'rgba(75, 192, 192, 1)',\n borderWidth: 1\n }]\n };\n const salesByRegionChart = new Chart(ctx, {\n type: 'bar',\n data: data,\n options: {\n scales: {\n y: {\n beginAtZero: true\n }\n }\n }\n });\n</script>"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"test_data": "",
|
|
14
|
+
"test_data_rows": [],
|
|
15
|
+
"test_data_sqlite": "",
|
|
16
|
+
"name": "SalesByRegionAnalysis"
|
|
17
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"graphics":
|
|
2
|
+
- "classes_used": |-
|
|
3
|
+
Order, Region, OrderDetail
|
|
4
|
+
"html_code": |-
|
|
5
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
6
|
+
<canvas id="salesByRegionChart" width="400" height="400"></canvas>
|
|
7
|
+
<script>
|
|
8
|
+
const ctx = document.getElementById('salesByRegionChart').getContext('2d');
|
|
9
|
+
const data = {
|
|
10
|
+
labels: [], // Populate with Region description
|
|
11
|
+
datasets: [{
|
|
12
|
+
label: 'Sales by Region',
|
|
13
|
+
data: [], // Populate with total sales
|
|
14
|
+
backgroundColor: 'rgba(75, 192, 192, 0.2)',
|
|
15
|
+
borderColor: 'rgba(75, 192, 192, 1)',
|
|
16
|
+
borderWidth: 1
|
|
17
|
+
}]
|
|
18
|
+
};
|
|
19
|
+
const salesByRegionChart = new Chart(ctx, {
|
|
20
|
+
type: 'bar',
|
|
21
|
+
data: data,
|
|
22
|
+
options: {
|
|
23
|
+
scales: {
|
|
24
|
+
y: {
|
|
25
|
+
beginAtZero: true
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
</script>
|
|
31
|
+
"name": |-
|
|
32
|
+
sales_by_region_query
|
|
33
|
+
"sql_query": |-
|
|
34
|
+
SELECT Region.RegionDescription, SUM(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)) AS TotalSales
|
|
35
|
+
FROM Order
|
|
36
|
+
JOIN Region ON Order.ShipRegion = Region.RegionDescription
|
|
37
|
+
JOIN OrderDetail ON OrderDetail.OrderId = Order.Id
|
|
38
|
+
WHERE Order.ShippedDate IS NOT NULL
|
|
39
|
+
GROUP BY Region.RegionDescription
|
|
40
|
+
ORDER BY TotalSales DESC;
|
|
41
|
+
"sqlalchemy_query": |-
|
|
42
|
+
sales_by_region = (
|
|
43
|
+
session.query(
|
|
44
|
+
Region.RegionDescription,
|
|
45
|
+
func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).label("TotalSales")
|
|
46
|
+
)
|
|
47
|
+
.join(Order, Order.ShipRegion == Region.RegionDescription)
|
|
48
|
+
.join(OrderDetail, OrderDetail.OrderId == Order.Id)
|
|
49
|
+
.filter(Order.ShippedDate.isnot(None)) # Consider only shipped orders
|
|
50
|
+
.group_by(Region.RegionDescription)
|
|
51
|
+
.order_by(func.sum(OrderDetail.Quantity * OrderDetail.UnitPrice * (1 - OrderDetail.Discount)).desc())
|
|
52
|
+
)
|
|
53
|
+
"models": []
|
|
54
|
+
"name": |-
|
|
55
|
+
SalesByRegionAnalysis
|
|
56
|
+
"rules": []
|
|
57
|
+
"test_data": ""
|
|
58
|
+
"test_data_rows": []
|
|
59
|
+
"test_data_sqlite": ""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Graph Sales by Category
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
api_logic_server_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
api_logic_server_cli/api_logic_server.py,sha256=
|
|
3
|
-
api_logic_server_cli/api_logic_server_info.yaml,sha256=
|
|
4
|
-
api_logic_server_cli/cli.py,sha256=
|
|
2
|
+
api_logic_server_cli/api_logic_server.py,sha256=tcJvityol77lpbKmgCCT8MbbxMecbCdVvVbZG1w77N4,114437
|
|
3
|
+
api_logic_server_cli/api_logic_server_info.yaml,sha256=qOetv9cos6cFUaMH72Ke_B6MgCqCeei0d3Qt6u42gNU,112
|
|
4
|
+
api_logic_server_cli/cli.py,sha256=J11Vxll5vmmYdc_4RtxLk3924ybINSKYluRR3Q5B-yA,82474
|
|
5
5
|
api_logic_server_cli/cli_args_base.py,sha256=lr27KkOB7_WpZwTs7LgiK8LKDIHMKQkoZCTnE99BFxw,3280
|
|
6
6
|
api_logic_server_cli/cli_args_project.py,sha256=I5no_fGRV_ZsK3SuttVDAaQYI4Q5zCjx6LojGkM024w,4645
|
|
7
7
|
api_logic_server_cli/extended_builder.py,sha256=EhtXGAt_RrDR2tCtgvc2U82we7fr-F6pP-e6HS6dQWQ,13867
|
|
@@ -447,7 +447,7 @@ api_logic_server_cli/database/customize_models.py,sha256=9QyFDo9mHo-VpwsVP-cXxU5
|
|
|
447
447
|
api_logic_server_cli/database/model_using_numeric.py,sha256=PDQqndxION4LIlH9-3J9Ozc0JKbXVaITqQI2sGULkW4,1812
|
|
448
448
|
api_logic_server_cli/database/new.sqlite,sha256=v9CtvF-XUjJqzvr6N7Fhm78rVCVIb4cH4WWUJGb-Z1U,16384
|
|
449
449
|
api_logic_server_cli/database/nw-gold-plus.sqlite,sha256=5hM8ub6BjZPnB_35GY8UTcfCfN0TGIavEZYAUzprxlk,522240
|
|
450
|
-
api_logic_server_cli/database/nw-gold.sqlite,sha256=
|
|
450
|
+
api_logic_server_cli/database/nw-gold.sqlite,sha256=Z4si7owG5_LPW8gjHcrdKBOwrpnWuKvOBZe9b8MBGPU,522240
|
|
451
451
|
api_logic_server_cli/database/nw-unused.sqlite,sha256=AOO0Ob_2K70MlgAFB6rbtvklGFZnNlZmwtY-fgpSD1Q,496640
|
|
452
452
|
api_logic_server_cli/database/sample_ai.txt,sha256=Fdry3fbbgGV8KnE0jWdm_g4F7CaDpSfIRxVhEX9--2Y,89
|
|
453
453
|
api_logic_server_cli/database/shipping.sqlite,sha256=68N8cN8oosuvEtQcAif42YjYH7ocXVbNIRAFMN1dInY,24576
|
|
@@ -468,10 +468,11 @@ api_logic_server_cli/fragments/nw_virtual_attrs.py,sha256=7hgvhnO1UcJ6OoPKCxR5bn
|
|
|
468
468
|
api_logic_server_cli/fragments/ui_basic_web_app_runZZ.py,sha256=UllBIkKHlUE3nyDE1qtFWCA-NTE1ltYxPvVUd7lZI5U,870
|
|
469
469
|
api_logic_server_cli/genai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
470
470
|
api_logic_server_cli/genai/client.py,sha256=36gyz-dqxj4dJj1SGtO9NZsy9-cfnf4d7uahHimwqHk,772
|
|
471
|
-
api_logic_server_cli/genai/genai.py,sha256=
|
|
471
|
+
api_logic_server_cli/genai/genai.py,sha256=zmgHh-7z-mnAnhNwMmdL4yLEzGmz_X4H_cuQEUEfI0A,44417
|
|
472
472
|
api_logic_server_cli/genai/genai_fatal_excp.py,sha256=1FmDVcXVRqmG0JMVZ7l4KqMOdpff3KGZ2LPAGtw304Q,179
|
|
473
|
-
api_logic_server_cli/genai/
|
|
474
|
-
api_logic_server_cli/genai/
|
|
473
|
+
api_logic_server_cli/genai/genai_graphics.py,sha256=nZ7--YBMkA08S0CeRvaXqdy0Ysn71Wz9x-FDSzzXyg4,7688
|
|
474
|
+
api_logic_server_cli/genai/genai_logic_builder.py,sha256=u_89UtrALIfcMtW6p0SZ78lCmwRqerA5igyY2hDvjlk,26150
|
|
475
|
+
api_logic_server_cli/genai/genai_svcs.py,sha256=dY39ZNpAEmkYRLFR03fgoNzB2KG4Z_aiu4TwSNiKTLs,47397
|
|
475
476
|
api_logic_server_cli/genai/genai_utils.py,sha256=DTlWTnW5_2pzX4q1VG1tWqoZPVObDHR97SVe0z8Z3rs,17102
|
|
476
477
|
api_logic_server_cli/genai/json2rules.py,sha256=ykoxxgZgqllzt8Ud06S-R_3QtumxXfmF5ksYC0Hh2Sk,2645
|
|
477
478
|
api_logic_server_cli/model_migrator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -541,7 +542,7 @@ api_logic_server_cli/prototypes/base/api/system/opt_locking/opt_locking.py,sha25
|
|
|
541
542
|
api_logic_server_cli/prototypes/base/api/system/opt_locking/readme.md,sha256=Ja_-d-mxHAvOFslu6jlu18HQ3CSFaaSvphHMm3YM-Z8,6760
|
|
542
543
|
api_logic_server_cli/prototypes/base/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
543
544
|
api_logic_server_cli/prototypes/base/config/activate_logicbank.py,sha256=pzKfXImy04zOuN1IgVzMo7vC8T_PAyeBnadKHYu7nVE,2103
|
|
544
|
-
api_logic_server_cli/prototypes/base/config/config.py,sha256=
|
|
545
|
+
api_logic_server_cli/prototypes/base/config/config.py,sha256=8ByWKcGOuwUuNxSWFgC9oZU6gBRiPGfSK0EmKwWBkgE,26572
|
|
545
546
|
api_logic_server_cli/prototypes/base/config/default.env,sha256=0y-lON2wkG-71Yml_G8sZI9XkuVf8xY4RbNVUTqo9Ow,256
|
|
546
547
|
api_logic_server_cli/prototypes/base/config/logging-reduced.yml,sha256=N-BDIk0t5uAmw3Of_d_ueK4jx7pxNwlYbkiDd1wjRDs,2179
|
|
547
548
|
api_logic_server_cli/prototypes/base/config/logging.yml,sha256=Do1uS1EIQEuMEUUp511UfmRy9bkT6o75uHLVRJyYmjE,2268
|
|
@@ -611,6 +612,7 @@ api_logic_server_cli/prototypes/base/devops/keycloak/nginx/nginx.conf,sha256=nsp
|
|
|
611
612
|
api_logic_server_cli/prototypes/base/devops/keycloak/unused/auth_provider.py,sha256=e8PoH9Ck4nrMe-QY99Lh0G02gzn2ubnMauFVEpNbeQ8,2771
|
|
612
613
|
api_logic_server_cli/prototypes/base/devops/keycloak/unused/unused-docker-compose-keycloak.sh,sha256=YvYRD4ID8v7znslXKOlzu3hpN17h0O_zwGPkFYy1G20,353
|
|
613
614
|
api_logic_server_cli/prototypes/base/devops/python-anywhere/python_anywhere_wsgi.py,sha256=xs3ZT1gg8C4tMzUW6OfOzV8dXHtUW5KVJdyyEbooPFs,3820
|
|
615
|
+
api_logic_server_cli/prototypes/base/docs/graphics/readme.md,sha256=GaNOkrzT_nlcrIpmmwLQtoGC6aPZnM8bSGgmc5fM8yk,402
|
|
614
616
|
api_logic_server_cli/prototypes/base/docs/logic/readme.md,sha256=fIQypEQ7Ny7q385AhpwndYRBFquG6P6xpM41-zrIseE,871
|
|
615
617
|
api_logic_server_cli/prototypes/base/docs/logic_suggestions/readme_logic_suggestions.md,sha256=44ibQYGOy84J4zGFaChLCOf-GU9pOBrbgBbprujMtIs,184
|
|
616
618
|
api_logic_server_cli/prototypes/base/integration/kafka/kafka_consumer.py,sha256=2DOsFpYnsJ71gZzzfJweEmL-i99uCtEFU0hVwIKFGMw,1516
|
|
@@ -627,10 +629,10 @@ api_logic_server_cli/prototypes/base/logic/load_verify_rules.py,sha256=dYEb-UxqQ
|
|
|
627
629
|
api_logic_server_cli/prototypes/base/logic/readme_declare_logic.md,sha256=ZC1a0e_tob6UNXcoPGgYEf_BPUlwpdD-bYwtNPUeORQ,7105
|
|
628
630
|
api_logic_server_cli/prototypes/base/logic/logic_discovery/auto_discovery.py,sha256=m97W6DYi6ouTDuFCiU1rPq1UqzJuNnVePyOeLU33D1s,2645
|
|
629
631
|
api_logic_server_cli/prototypes/base/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
630
|
-
api_logic_server_cli/prototypes/base/security/declare_security.py,sha256=
|
|
632
|
+
api_logic_server_cli/prototypes/base/security/declare_security.py,sha256=sWi-M7E-dIhvC0hmdCXnTRjHAR5eWVKCYIDCoblISm4,2281
|
|
631
633
|
api_logic_server_cli/prototypes/base/security/authentication_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
632
634
|
api_logic_server_cli/prototypes/base/security/authentication_provider/abstract_authentication_provider.py,sha256=RPPA48kdYiXx5zQ6epbfAEB1se8E10Ra9NxYRjIBShk,895
|
|
633
|
-
api_logic_server_cli/prototypes/base/security/authentication_provider/keycloak/auth_provider.py,sha256=
|
|
635
|
+
api_logic_server_cli/prototypes/base/security/authentication_provider/keycloak/auth_provider.py,sha256=gnk8CqhlEobRPEBTwimG6OkZhc5gP-Yba1VFlTydt2Q,10437
|
|
634
636
|
api_logic_server_cli/prototypes/base/security/authentication_provider/memory/auth_provider.py,sha256=GTV9jJRbwT9QbtCKU_iR3HmaSY0-pJY9BwYkQjEnSik,4739
|
|
635
637
|
api_logic_server_cli/prototypes/base/security/authentication_provider/memory/auth_provider_no_swagger.py,sha256=cuGh3SIj1dx-nOGPWCzqIIzAhXoSPSsmCPyjytp5jSY,2907
|
|
636
638
|
api_logic_server_cli/prototypes/base/security/authentication_provider/sql/auth_provider.py,sha256=9Q4ua3QZ9U5eFic1aA0NJP6RF9a8Os57894ke-XEth8,4313
|
|
@@ -650,7 +652,7 @@ api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave
|
|
|
650
652
|
api_logic_server_cli/prototypes/base/test/api_logic_server_behave/reports/Behave Logic Report Sample.md,sha256=wVNGwhF3GhVVRv7YJLjqUd2WsjFZD_IpIzRZN3xEgkI,91494
|
|
651
653
|
api_logic_server_cli/prototypes/base/test/basic/server_test.py,sha256=EwJocGjKVKGjmbzPZ5we1_yYue7dHe3VpilvKuW2VBc,758
|
|
652
654
|
api_logic_server_cli/prototypes/base/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
653
|
-
api_logic_server_cli/prototypes/base/ui/admin/admin_loader.py,sha256=
|
|
655
|
+
api_logic_server_cli/prototypes/base/ui/admin/admin_loader.py,sha256=pg_5mcIkU_I57Mx368xXH4US77UXjdiTPnun6HOicHo,10322
|
|
654
656
|
api_logic_server_cli/prototypes/base/ui/admin/authentication_admin.yaml,sha256=Y2eVLzaV8Je6QRj2Dn2AM0FxN0oMjz6QdtZ4UAVsaNk,2261
|
|
655
657
|
api_logic_server_cli/prototypes/base/ui/admin/home.js,sha256=76vgvuVk1Nlen8yPn0CRYoYOYHXJrRGKuzwChseKMEs,2750
|
|
656
658
|
api_logic_server_cli/prototypes/base/ui/images/Employee/andrew.jpg,sha256=LYdDqEwPeoFJP9Yxgoifh03Mhp7ds-Sp_Gtwi6CV9CU,3778
|
|
@@ -728,7 +730,7 @@ api_logic_server_cli/prototypes/genai_demo/logic/logic_discovery/auto_discovery.
|
|
|
728
730
|
api_logic_server_cli/prototypes/genai_demo/security/declare_security.py,sha256=L3AL1bgdqIWQxdkJZcFVDOQ0XRpmeLAKqwlAYChFWKo,2108
|
|
729
731
|
api_logic_server_cli/prototypes/genai_demo/ui/admin/admin.yaml,sha256=jTNWI3n3TLrjtpG8fTd7AawKr3x1Jhrft-ow6bvmCGM,3449
|
|
730
732
|
api_logic_server_cli/prototypes/manager/.gitignore,sha256=xfAjNQHokbo6GuN1ghx-eml8tQIzwUczLC_YVzElndI,195
|
|
731
|
-
api_logic_server_cli/prototypes/manager/README.md,sha256=
|
|
733
|
+
api_logic_server_cli/prototypes/manager/README.md,sha256=tqMb4Np1Z2emoHOt1miKt7X3rZ2id7jSmCEkj1ONYIg,21518
|
|
732
734
|
api_logic_server_cli/prototypes/manager/run_sample.sh,sha256=eRA-p_Snr7Pwk14wUw5mja2usEcjAKisHVhHMeSaQ68,781
|
|
733
735
|
api_logic_server_cli/prototypes/manager/run_web_genai.sh,sha256=sgjB3vKhkao93Ny3VN0AQ-wonvdBcBIT3rTbyNTMoG8,136
|
|
734
736
|
api_logic_server_cli/prototypes/manager/settings.txt,sha256=_jjL30jomIMxG21edDfrXYRT9Zfgr_0EdUWvcEUOnFQ,368
|
|
@@ -1191,8 +1193,8 @@ api_logic_server_cli/prototypes/manager/system/genai/examples/elections/election
|
|
|
1191
1193
|
api_logic_server_cli/prototypes/manager/system/genai/examples/emp_depts/emp_dept.prompt,sha256=xbyhCyY7TUk7hoBKAkzRsZVBj1lP4hfXdSR4TQagXqM,109
|
|
1192
1194
|
api_logic_server_cli/prototypes/manager/system/genai/examples/emp_depts/logic_notes.md,sha256=mrEBKE1OQxEqFoRLD1zYL-SeC5ITPcWEZKaumRDw7U4,100
|
|
1193
1195
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/create_db_models.py,sha256=QyGtjgsuYkVF5UYOn35V8ZnAdI76s-1KyM7nnGM4lPI,3588
|
|
1194
|
-
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt,sha256
|
|
1195
|
-
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.response_example,sha256=
|
|
1196
|
+
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.prompt,sha256=-dnlvkue78s8dKcmQ2zJiTOmflTn31-7do7kw94Xqo0,806
|
|
1197
|
+
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo.response_example,sha256=DvKfbcHjlcvURubHVS-H7UCRhA11n-zz7w15JbgYKAE,9834
|
|
1196
1198
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_fixup_required.json,sha256=b7SO0wkrV7DxIkW2UxmEF07wXONMwzC4UOw1ZG2cvAw,9670
|
|
1197
1199
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_formal.prompt,sha256=k5U0obVyjLfD2kzqiFHF6FyucTCa47BEo6gdQJp3e34,390
|
|
1198
1200
|
api_logic_server_cli/prototypes/manager/system/genai/examples/genai_demo/genai_demo_informal.prompt,sha256=u8MO_zBIDDqcx33cnBE8zjMUvkom_hJHFOb-vHVR6NA,729
|
|
@@ -5605,8 +5607,16 @@ api_logic_server_cli/prototypes/manager/system/genai/examples/time_tracking_bill
|
|
|
5605
5607
|
api_logic_server_cli/prototypes/manager/system/genai/examples/time_tracking_billing/Invoice Made Ready.png,sha256=3FIO9vITJ5DMcUZfMYfDFdPxXgcI_L8HY7RFFFuWF4E,1321252
|
|
5606
5608
|
api_logic_server_cli/prototypes/manager/system/genai/examples/time_tracking_billing/db.sqlite,sha256=hfPdf_o69yP0r1_w60hUos6VZC7tekRvGwiXsGyNzuI,32768
|
|
5607
5609
|
api_logic_server_cli/prototypes/manager/system/genai/examples/time_tracking_billing/readme.md,sha256=wqRqpvrMOe2EdhWw1VDQe7TSxizFnDCLb2WlyEJpfMI,3017
|
|
5610
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/graphics_services.py,sha256=jWBKGXvc_IbqPflDLxxNBKtx9NRBlkM5g50CTS1Gfm4,1398
|
|
5611
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/html_template.jinja,sha256=ICZ8YV2ztYlyDrBppbnR51YS0a2n-Zi-T338FCilDI4,2679
|
|
5612
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/index.html,sha256=rTl5u1AtZRIBSxK4aANBRaJK3GZOML6eiVp6Tf_2LkI,567
|
|
5613
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/sales_by_region.jinja,sha256=k93hwOF2KslZEWw31wIobVPdbigsjNUkRWsjec2DdbM,1848
|
|
5614
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/service_template_jsonapi_rpc.jinja,sha256=gufFC6lTDuT-Iq-Tn3iKGY4ilRFzgqhVe7j6KEDCaK0,1354
|
|
5615
|
+
api_logic_server_cli/prototypes/manager/system/genai/graphics_templates/service_template_unused.jinja,sha256=3z5kgSanatpfuuyW0TU5Qwz618DDE-JeoqPH9I5YToY,1361
|
|
5608
5616
|
api_logic_server_cli/prototypes/manager/system/genai/learning_requests/logic_bank_api.prompt,sha256=1rBJy-rUHPx9YepSZH9niQocGbxtpbGyX2QmDxVsFd0,14489
|
|
5609
5617
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/fixup.prompt,sha256=ZdVl-0J9oi8dS_3pDTrwdtvMSpDymbArTIlSEwcjCrM,305
|
|
5618
|
+
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics.prompt,sha256=80dcGh3qLsGIHrYayRIg70-jqhfp3wSlZQGXvkvexdw,947
|
|
5619
|
+
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/graphics_request.prompt,sha256=T8lILtS_BtOjkalJPpiziVqlHVVc2PV6nz6qikNO808,175
|
|
5610
5620
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/import.prompt,sha256=nuSDA54ii9O5O920YhmA6sqaI_k3VFw3O97jgk0PCzo,493
|
|
5611
5621
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/iteration.prompt,sha256=rnLLjC0-fYJ2VmsRTudsCoN8piusNSesbBVxtzpO7BI,178
|
|
5612
5622
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/logic_inserts.prompt,sha256=28ddHDFzM33VFWPCyhdvYLzBCASvCIhVIC4BrurEjuc,172
|
|
@@ -5614,11 +5624,10 @@ api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/logic_sugges
|
|
|
5614
5624
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/logic_translate.prompt,sha256=_FLGBVJsF-FzK3gfVAENt1nEwBtck63hVgAAVUADGCA,34
|
|
5615
5625
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/pre_post.prompt,sha256=GPQukgxKBE30IVByFFghhRQ8eRQFriFi8INoVc27S18,121
|
|
5616
5626
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/rebuild_test_data.prompt,sha256=BGJK_ECdfykYhCwxEzN82tUv-erGvehrpo2b5lf4RM8,2829
|
|
5617
|
-
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/response_format.prompt,sha256=
|
|
5618
|
-
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts.prompt,sha256=
|
|
5627
|
+
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/response_format.prompt,sha256=4XIhxiwZQ3j0GSNLbSnJF4LnzatPHUHJCiljA2KfF3Q,1628
|
|
5628
|
+
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts.prompt,sha256=RHhV9KOfmSfWhFfPztFByuXG0Pglu0DAaKA846V4EQA,357
|
|
5619
5629
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/sqlite_inserts_model_test_hints.prompt,sha256=dQcLpaZNbbGYrjsrkXcW6N31qoSye_fTNIGKF6-uxlY,1578
|
|
5620
5630
|
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/web_genai.prompt,sha256=lUigg5LZSVjwvhKnITCl6RVhwoTDk8qZassEf45g7Kk,820
|
|
5621
|
-
api_logic_server_cli/prototypes/manager/system/genai/prompt_inserts/zsqlite_inserts_iterations.prompt,sha256=NhoxNRrLqCAInHr4-Kg-hHO01IgtVoIPCru734lyM0U,1390
|
|
5622
5631
|
api_logic_server_cli/prototypes/manager/system/genai/reference/chatgpt_original.txt,sha256=JPj3OjvugQNfJpe8V8qsbDh-bcvGIN9tAK8C-PJngGM,2845
|
|
5623
5632
|
api_logic_server_cli/prototypes/manager/system/genai/reference/declare_logic.py,sha256=O4Knjr56gGPF9cX3MaprfzTBLnrMb7F9BUDcrLI2__I,3348
|
|
5624
5633
|
api_logic_server_cli/prototypes/manager/system/genai/reference/genai_demo_logic.txt,sha256=FSba4oWlRIxcANw3ol-HcPjKVkDLX1K4qAKSvRMOJWU,1118
|
|
@@ -5649,9 +5658,7 @@ api_logic_server_cli/prototypes/manager/system/genai/temp/create_db_models.py,sh
|
|
|
5649
5658
|
api_logic_server_cli/prototypes/manager/system/images/copilot-clean.png,sha256=R3coCCU40UIg55fqQVAoOviiX1ERcyGqrd_EYHo6Oac,597600
|
|
5650
5659
|
api_logic_server_cli/prototypes/manager/system/images/copilot.png,sha256=N8WsgqwOLD3DxkmQvpnLxx7KbMirXViUgNgumg-lbIA,1175570
|
|
5651
5660
|
api_logic_server_cli/prototypes/manager/system/images/genai.png,sha256=jqC_qRwR6Y3DIfWaYnLPWKn1KF1UUezEnMeRpvRwv5s,117507
|
|
5652
|
-
api_logic_server_cli/prototypes/manager/webgenai/docker-compose
|
|
5653
|
-
api_logic_server_cli/prototypes/manager/webgenai/webg_config/license.json,sha256=I28_xdmgAVg9Mtfm3VT36pYPSWzoNPo61Hd7_GaA1Go,164
|
|
5654
|
-
api_logic_server_cli/prototypes/manager/webgenai/webg_config/web_genai.txt,sha256=MvqQQ_bTlBpyfkbmo0BbdixsXI7Vcy4lp58qEu4Y798,400
|
|
5661
|
+
api_logic_server_cli/prototypes/manager/webgenai/docker-compose.yml,sha256=BXrSITWndTRAQFJyQlv5f0jfqKwF6G2Fsucg0y0cvzA,765
|
|
5655
5662
|
api_logic_server_cli/prototypes/manager_docker/.devcontainer/For_VSCode.dockerfile,sha256=_RObRZ3EBDNj1_Sx26r_CysBboMvill83f8tQN1T0Do,438
|
|
5656
5663
|
api_logic_server_cli/prototypes/manager_docker/.devcontainer/devcontainer.json,sha256=2Kf9UFTHKvcWewm4rIeVQ70RibwJ_S2AIz4uSD012ks,2114
|
|
5657
5664
|
api_logic_server_cli/prototypes/manager_docker/.devcontainer/readme.md,sha256=-sSneMDne1fqEoox2hXUGmoO8ewgi34y7lJwGTidSpY,104
|
|
@@ -5746,6 +5753,11 @@ api_logic_server_cli/prototypes/nw/ui/images/Employee/leverling.jpg,sha256=w02cB
|
|
|
5746
5753
|
api_logic_server_cli/prototypes/nw/ui/images/Employee/peacock.jpg,sha256=UIfxEKOKruPKNW0w17bMebIaUsa1nD2vSVfFTk7uaCs,3862
|
|
5747
5754
|
api_logic_server_cli/prototypes/nw/ui/images/Employee/suyama.jpg,sha256=bp0xCJ-8EqQp_B7uR4glL6fVGxVlS10d5IHLNdw7rcA,4375
|
|
5748
5755
|
api_logic_server_cli/prototypes/nw_no_cust/Tutorial.md,sha256=2ohG6joATpLXQaNT3_0lx1nBJ7Oz8A5JhCsqur7FXCg,16390
|
|
5756
|
+
api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request copy.json,sha256=NEl_qRHlmsMP8PfKndkEdW9mNxzxJGygnlzZdNZF1DY,17803
|
|
5757
|
+
api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/request.json,sha256=3Y2SOxypg-GRUR2C6iWss7lqiBTEftvVdQwbpC271Zk,18789
|
|
5758
|
+
api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.json,sha256=4egvCQFU93Mwof0YVjpPJD_jXbyI9RFO4wOckOYd9ag,2011
|
|
5759
|
+
api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/response.yaml,sha256=YulqKo9dUzmCiYQzguCAUeSYk-rCGAiA5xuWS29UqkI,2033
|
|
5760
|
+
api_logic_server_cli/prototypes/nw_no_cust/docs/graphics/sales_by_category.prompt,sha256=iK_rWDSMt3Zmw9pKkCQqu4fysmKrUd4HmgHYEZzu_Sg,23
|
|
5749
5761
|
api_logic_server_cli/prototypes/nw_no_cust/venv_setup/system_note.txt,sha256=axb89FhqhxWGgnowLLyPZHZ0iC2jNLorjmqnuq63mJU,46
|
|
5750
5762
|
api_logic_server_cli/prototypes/nw_pa/$rebuild_pa.txt,sha256=kOyxrKzkzVPUmCeeD_CmX5yYVWmP9TtyvTLp4oRjM4I,1340
|
|
5751
5763
|
api_logic_server_cli/prototypes/nw_pa/admin_customer_nw_pa.yaml,sha256=rVpswwM3dVjhO8649MAamUipfLuSubLh7OCdHjhlYlM,11896
|
|
@@ -6026,9 +6038,9 @@ api_logic_server_cli/tools/mini_skel/database/system/SAFRSBaseX.py,sha256=p8C7AF
|
|
|
6026
6038
|
api_logic_server_cli/tools/mini_skel/database/system/TestDataBase.py,sha256=U02SYqThsbY5g3DX7XGaiMxjZBuOpzvtPS6RfI1WQFg,371
|
|
6027
6039
|
api_logic_server_cli/tools/mini_skel/logic/declare_logic.py,sha256=fTrlHyqMeZsw_TyEXFa1VlYBL7fzjZab5ONSXO7aApo,175
|
|
6028
6040
|
api_logic_server_cli/tools/mini_skel/logic/load_verify_rules.py,sha256=Rr5bySJpYCZmNPF2h-phcPJ53nAOPcT_ohZpCD93-a0,7530
|
|
6029
|
-
apilogicserver-14.3.
|
|
6030
|
-
apilogicserver-14.3.
|
|
6031
|
-
apilogicserver-14.3.
|
|
6032
|
-
apilogicserver-14.3.
|
|
6033
|
-
apilogicserver-14.3.
|
|
6034
|
-
apilogicserver-14.3.
|
|
6041
|
+
apilogicserver-14.3.25.dist-info/licenses/LICENSE,sha256=67BS7VC-Z8GpaR3wijngQJkHWV04qJrwQArVgn9ldoI,1485
|
|
6042
|
+
apilogicserver-14.3.25.dist-info/METADATA,sha256=qV5-nZNZ5gAP3w-ebbWliY9Hd63Td5s9J3cXW-_s-Dg,6469
|
|
6043
|
+
apilogicserver-14.3.25.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
6044
|
+
apilogicserver-14.3.25.dist-info/entry_points.txt,sha256=KiLloZJ3c_RW-nIDqBtoE0WEsQTnZ3dELwHLWi23LMA,103
|
|
6045
|
+
apilogicserver-14.3.25.dist-info/top_level.txt,sha256=-r0AT_GEApleihg-jIh0OMvzzc0BO1RuhhOpE91H5qI,21
|
|
6046
|
+
apilogicserver-14.3.25.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
{{prompt}}
|
|
3
|
-
|
|
4
|
-
Update the prior response - be sure not to lose classes and test data already created.
|
|
5
|
-
|
|
6
|
-
Hints: use autonum keys (for all tables - including for link/join/junction/intersection tables), allow nulls, foreign keys, no check constraints.
|
|
7
|
-
|
|
8
|
-
Be sure to create classes, never tables.
|
|
9
|
-
Class names are singular, and first letter is capitalized.
|
|
10
|
-
|
|
11
|
-
If you create sum, count or formula Logic Bank rules, then you MUST create a corresponding column in the data model.
|
|
12
|
-
|
|
13
|
-
Remember that SQLite DateTime type only accepts Python datetime and date objects as input,
|
|
14
|
-
this means you can not enter string attributes where a date or datetime object is expected.
|
|
15
|
-
|
|
16
|
-
Don't install additional packages.
|
|
17
|
-
Don't use the faker pip package.
|
|
18
|
-
|
|
19
|
-
Create multiple rows of test data for each table, and follow these guidelines carefully:
|
|
20
|
-
* Use foreign key columns instead of relationship names for the data.
|
|
21
|
-
* Create separate objects for each test data row, not in arrays.
|
|
22
|
-
* Be sure to initialize derived attributes for test data rows - including all sums and counts, but do not rely on Logic Bank,
|
|
23
|
-
and do not generate db.execute statements.
|
|
24
|
-
* Do not create arrays of test data.
|
|
25
|
-
* Do not create a function to load test data.
|
|
26
|
-
* Do not print the test data.
|
|
27
|
-
* For test data, format dates as date(year, month, day).
|
|
28
|
-
|
|
29
|
-
For each data model class, create a docstring describing the table, prefixed with 'description: '.
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Run WebGenAI locally from docker container
|
|
2
|
-
|
|
3
|
-
# Before running, update ./system/genai/webg_local/webg_config/web_genai.txt
|
|
4
|
-
# See: https://apilogicserver.github.io/Docs/WebGenAI-CLI/#configuration
|
|
5
|
-
|
|
6
|
-
# cd <manager>
|
|
7
|
-
|
|
8
|
-
# docker compose -f webgenai/docker-compose-webg.yml up
|
|
9
|
-
# docker compose -f webgenai/docker-compose-webg.yml down
|
|
10
|
-
|
|
11
|
-
# if you have run docker compose up (above), you must run docker compose down to run directly:
|
|
12
|
-
|
|
13
|
-
# docker run -it --rm --name webgenai -p 8282:80 --env-file ./webgenai/webg_config/web_genai.txt -v ./webgenai/webg_temp:/tmp -v ./webgenai/webg_config:/config -v ./webgenai/webg_projects:/opt/projects apilogicserver/web_genai
|
|
14
|
-
|
|
15
|
-
name: webgenie
|
|
16
|
-
services:
|
|
17
|
-
web_genai:
|
|
18
|
-
stdin_open: true
|
|
19
|
-
tty: true
|
|
20
|
-
container_name: webgenai
|
|
21
|
-
ports:
|
|
22
|
-
- 8282:80
|
|
23
|
-
env_file:
|
|
24
|
-
- ./webg_config/web_genai.txt
|
|
25
|
-
volumes:
|
|
26
|
-
- ./webg_temp:/tmp
|
|
27
|
-
- ./webg_config:/config
|
|
28
|
-
- ./webg_projects:/opt/projects
|
|
29
|
-
image: apilogicserver/web_genai
|
|
30
|
-
user: root
|
|
31
|
-
environment:
|
|
32
|
-
- GENAI_LOGIC_APIKEY=<paste license here from registration email>
|
|
33
|
-
- APILOGICSERVER_CHATGPT_APIKEY=<sk-proj-your-openai-key-here>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# App configuration
|
|
2
|
-
APILOGICPROJECT_EXTERNAL_PORT=8282
|
|
3
|
-
APILOGICPROJECT_PORT=5657
|
|
4
|
-
APILOGICSERVER_CHATGPT_APIKEY=sk-proj-< your api key >
|
|
5
|
-
#GENAI_LOGIC_APIKEY=your_api_key_from_registration_email
|
|
6
|
-
|
|
7
|
-
# WebGenAI security configuration
|
|
8
|
-
# login password for the admin user
|
|
9
|
-
# ADMIN_PASSWORD=password
|
|
10
|
-
|
|
11
|
-
# WebGenAI GitHub configuration
|
|
12
|
-
GH_TOKEN={personal access token from github}
|
|
13
|
-
GH_ORG=github.com/<gh-user-name>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|