amend api endpoints
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m56s

This commit is contained in:
Syasya 2025-08-26 15:10:14 +08:00
parent f77aa0358e
commit fce26a2bc4
9 changed files with 17 additions and 16 deletions

View File

@ -40,7 +40,7 @@ type CrmProject = {
custom_mobile_phone_no?: string | null; custom_mobile_phone_no?: string | null;
}; };
const API = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:8000'; const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
// Adjust this to your FastAPI route // Adjust this to your FastAPI route
const START_LOGGING_ENDPOINT = (siteId: string) => const START_LOGGING_ENDPOINT = (siteId: string) =>

View File

@ -16,7 +16,7 @@ type CrmProject = {
custom_mobile_phone_no?: string | null; custom_mobile_phone_no?: string | null;
}; };
const API = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:8000'; const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
const SitesPage = () => { const SitesPage = () => {
const [projects, setProjects] = useState<CrmProject[]>([]); const [projects, setProjects] = useState<CrmProject[]>([]);

View File

@ -9,12 +9,12 @@ export interface TimeSeriesResponse {
generation: TimeSeriesEntry[]; generation: TimeSeriesEntry[];
} }
const API_BASE_URL = const API_URL =
process.env.FASTAPI_URL ?? "http://127.0.0.1:8000"; process.env.NEXT_PUBLIC_FASTAPI_URL ;
export const crmapi = { export const crmapi = {
getProjects: async () => { getProjects: async () => {
const res = await fetch(`${API_BASE_URL}/crm/projects`, { const res = await fetch(`${API_URL}/crm/projects`, {
}); });
if (!res.ok) throw new Error(`HTTP ${res.status}`); if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json(); return res.json();
@ -28,7 +28,7 @@ export async function fetchPowerTimeseries(
): Promise<TimeSeriesResponse> { // <-- Change here ): Promise<TimeSeriesResponse> { // <-- Change here
const params = new URLSearchParams({ site, start, end }); const params = new URLSearchParams({ site, start, end });
const res = await fetch(`http://localhost:8000/power-timeseries?${params.toString()}`); const res = await fetch(`${API_URL}/power-timeseries?${params.toString()}`);
if (!res.ok) { if (!res.ok) {
throw new Error(`Failed to fetch data: ${res.status}`); throw new Error(`Failed to fetch data: ${res.status}`);
@ -54,7 +54,7 @@ export async function fetchForecast(
kwp: kwp.toString(), kwp: kwp.toString(),
}).toString(); }).toString();
const res = await fetch(`http://localhost:8000/forecast?${query}`); const res = await fetch(`${API_URL}/forecast?${query}`);
if (!res.ok) throw new Error("Failed to fetch forecast"); if (!res.ok) throw new Error("Failed to fetch forecast");
return res.json(); return res.json();
@ -73,7 +73,7 @@ export type MonthlyKPI = {
error?: string; error?: string;
}; };
const API = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:8000"; const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
export async function fetchMonthlyKpi(params: { export async function fetchMonthlyKpi(params: {
site: string; site: string;

View File

@ -12,7 +12,7 @@ const ComponentsAuthLoginForm = () => {
const [password, setPassword] = useState(''); const [password, setPassword] = useState('');
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const router = useRouter(); const router = useRouter();
const API = process.env.NEXT_PUBLIC_FASTAPI_URL; // e.g. http://localhost:8000 const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
const submitForm = async (e: React.FormEvent<HTMLFormElement>) => { const submitForm = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault(); e.preventDefault();

View File

@ -21,6 +21,8 @@ const KPI_Table: React.FC<KPI_TableProps> = ({ siteId, month }) => {
const [kpiData, setKpiData] = useState<MonthlyKPI | null>(null); const [kpiData, setKpiData] = useState<MonthlyKPI | null>(null);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const API_URL = process.env.NEXT_PUBLIC_FASTAPI_URL;
useEffect(() => { useEffect(() => {
if (!siteId || !month) return; if (!siteId || !month) return;
@ -28,7 +30,7 @@ const KPI_Table: React.FC<KPI_TableProps> = ({ siteId, month }) => {
setLoading(true); setLoading(true);
try { try {
const res = await fetch( const res = await fetch(
`http://localhost:8000/kpi/monthly?site=${siteId}&month=${month}` `${API_URL}/kpi/monthly?site=${siteId}&month=${month}`
); );
setKpiData(await res.json()); setKpiData(await res.json());
} catch (err) { } catch (err) {

View File

@ -11,7 +11,7 @@ interface LoggingControlCardProps {
className?: string; className?: string;
} }
const API_URL = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:8000'; const API_URL = process.env.NEXT_PUBLIC_FASTAPI_URL;
type FnState = { type FnState = {
serial: string; serial: string;

View File

@ -26,7 +26,7 @@ interface SiteCardProps {
fallbackStatus?: string; // optional backup status if CRM is missing it fallbackStatus?: string; // optional backup status if CRM is missing it
} }
const API = process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:8000'; const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
const SiteCard: React.FC<SiteCardProps> = ({ siteId, className = '', fallbackStatus }) => { const SiteCard: React.FC<SiteCardProps> = ({ siteId, className = '', fallbackStatus }) => {
const [project, setProject] = useState<CrmProject | null>(null); const [project, setProject] = useState<CrmProject | null>(null);

View File

@ -15,8 +15,7 @@ interface SiteStatusProps {
lastSyncTimestamp: string; lastSyncTimestamp: string;
} }
const API_URL = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:8000"; const API_URL = process.env.NEXT_PUBLIC_FASTAPI_URL;
const WS_URL = process.env.NEXT_PUBLIC_WS_URL ?? "ws://localhost:8000/ws";
const SiteStatus = ({ const SiteStatus = ({
selectedSite, selectedSite,
@ -30,7 +29,7 @@ const SiteStatus = ({
// --- WebSocket to receive MQTT-forwarded messages --- // --- WebSocket to receive MQTT-forwarded messages ---
useEffect(() => { useEffect(() => {
const ws = new WebSocket(WS_URL); const ws = new WebSocket(`${API_URL}/ws`);
ws.onopen = () => console.log("WebSocket connected"); ws.onopen = () => console.log("WebSocket connected");
ws.onclose = () => console.log("WebSocket disconnected"); ws.onclose = () => console.log("WebSocket disconnected");

View File

@ -26,7 +26,7 @@ export default function Header() {
const [user, setUser] = useState<UserData | null>(null); const [user, setUser] = useState<UserData | null>(null);
const [loadingUser, setLoadingUser] = useState(true); const [loadingUser, setLoadingUser] = useState(true);
const API = process.env.NEXT_PUBLIC_FASTAPI_URL || 'http://127.0.0.1:8000'; const API = process.env.NEXT_PUBLIC_FASTAPI_URL;
// highlight active menu // highlight active menu
useEffect(() => { useEffect(() => {